Главная » Статьи » Програмування » C [ Добавить статью ]

Уроки по программированию на языке С

Предварительные рассуждения.

Вступительное слово.

Добро пожаловать, в мир программирования! Что такое программирование? Наверное, каждый из Вас когда-то слышал это слово. Перефразировав известную цитату, можно сказать так: "Программист - это звучит гордо!". И это действительно так. Если Вы, бороздя просторы Internet, наталкивались на сайты с предложением о работе, то обращали внимание на размер заработной платы, которая предлагается программистам. Естественно, тут же возникает вопрос: почему такой высокий уровень оплаты труда программиста? Все согласно законам рынка: есть спрос на программистов, но, на данный момент, количество хороших специалистов слишком мало. Конечно, если бы программистом можно было стать за короткий срок, заучив ряд слов, профессия вряд ли была такой популярной. Но не расстраивайтесь! Мы, Ваши преподаватели, постараемся сделать все от нас зависящее для того, чтобы не только рассказать Вам как программировать, а научить Вас жить программируя. Однако, наша с Вами совместная работа должна быть взаимной. Преподаватель, как бы он не старался, не сможет обучить студента, если последний этого не захочет. Работа, только постоянная работа над собой сможет провести Вас к вершине мастерства.

Искренне надеемся на то, что Вы увлечетесь волшебным миром программирования!!!

Прежде чем приступать к изучению любой науки, всегда необходимо выяснить, откуда эта наука появилась, как она развивалась, каковы её корни и значение в истории.

Исторические факты

Английский математик XIX века Шенкс потратил более 20 лет своей жизни на вычисление числа Пи с точностью 707 значащих цифр после запятой. Этот результат получил славу рекорда вычислений XIX века. Однако впоследствии было обнаружено, что Шенкс ошибся в 520-м знаке, и поэтому все последующие значащие цифры были вычислены неверно.

В 1804 году французский изобретатель Жозеф Мари Жаккар создал "программно-управляемый" ткацкий станок. Для управления станком использовались перфокарты, соединенные друг с другом в виде ленты. Деревянные шпильки "читающего устройства" станка по расположению отверстий в перфокарте определяли, какие нити следует поднять, а какие опустить для получения нужного узора.

В 1890 году в США изобретателем Германом Холлеритом разработана электромеханическая счетная машина - табулятор, управляемая перфокартами.Она была использована для составления таблиц с результатами переписи населения США. Основанная Холлеритом фирма по производству табуляторов впоследствии превратилась в корпорацию International Business Machines (IBM).

В 1936 году двадцатипятилетний студент Кембриджского университета англичанин Алан Тьюринг опубликовал статью "О вычисляемых числах", в которой рассматривалось гипотетическое устройство ("машина Тьюринга"), пригодное для решения любой разрешимой математической или логической задачи, - прообраз программируемого компьютера.

В 1941 году немецкий инженер Конрад Цузе построил действующий компьютер Z3, в котором использовалась двоичная система счисления. Программы записывались на перфоленте.

В 1945 году в высшем техническом училище Пенсильванского университета (США) физик Джон Мочли и инженер Проспер Экерт построили полностью электронную машину "Эниак". Для задания программы было необходимо вручную установить тысячи переключателей и воткнуть сотни штекеров в гнезда контактной панели.

1 июня 1945 года был разослан отчет американского математика венгерского происхождения Джона фон Неймана "Предварительный отчет о машине Эдвак", содержащий концепцию хранения команд компьютера в его собственной внутренней памяти.

21 июня 1948 года в Манчестерском университете (Великобритания) на машине "Марк-1" выполнена первая в мире хранимая в памяти машины программа - поиск наибольшего сомножителя заданного числа.

В 1949 году под руководством Мориса Уилкса создан компьютер "Эдсак". Проектировщики "Эдсака" ввели систему мнемонических обозначений, где каждая машинная команда представлялась одной заглавной буквой, и автоматизировали настройку подпрограмм на определенное место в памяти. Морис Уилкс назвал мнемоническую схему и библиотеку подпрограмм собирающей системой (assembly system) - отсюда слово "ассемблер".

В 1949 году в Филадельфии (США) под руководством Джона Мочли создан "Краткий код" - первый примитивный интерпретатор языка программирования.

В 1951 году в фирме Remington Rand американская программистка Грейс Хоппер разработала первую транслирующую программу. Хоппер назвала ее компилятором (compiler - компоновщик).

В 1957 году на 20-м этаже штаб-квартиры фирмы IBM на Мэдисон-авеню в Нью-Йорке родился язык Фортран (FORmula TRANslation - трансляция формул). Группой разработчиков руководил 30-летний математик Джон Бэкус. Фортран - первый из "настоящих" языков высокого уровня.

В 1963 году был создан язык программирования Бейсик. Основателями языка стали Джон Кемени и Томас Курт, сотрудники Дартмут Колледжа. Под руководством создателей язык был реализован группой студентов колледжа. Самый первый диалект языка назывался Dartmouth BASIC.

C 1958-1968 годы велись разработка и усовершенствование языка программирования под названием Алгол, название которого произошло от словосочетания "алгоритмический язык" (algorithmic language). В отличии от Фортрана, в основном используемого в США и Канаде, Алгол был широко распространен в Европе и СССР. Язык был создан международным комитетом, в составе которого были европейские и американские ученые - Джон Бэкус, Питер Наур, Уолли Фойрцойг, Никлаус Вирт.

В 1970 Никлаус Вирт, создал язык программирования, название которому дал в честь французского физика и математика Блеза Паскаля. Паскаль планировался Виртом, как язык, обучающий процедурному программированию.

В 1972 году 31-летний специалист по системному программированию из фирмы Bell Labs Деннис Ритчи разработал язык программирования Си.

Первое описание языка было дано в книге Б. Кернигана и Д. Ритчи, которая была переведена на русский язык. Долгое время это описание являлось стандартом, однако ряд моментов допускали неоднозначное толкование, которое породило множество трактовок языка С. Для исправления этой ситуации при Американском национальном институте стандартов (АNSI) был образован комитет по стандартизации языка С

В 1983 году был утвержден стандарт языка С, получивший название ANSI С.

В начале 80-х годов в той же Веll Lаbоratory Бьерном Страуструпом в результате дополнения и расширения языка С был создан новый по сути язык, получивший название "С с классами".


В 1983 году это название было заменено на С++.

23 мая 1995 года компания Sun Microsystems выпустила новый язык программирования под названием Oak. Язык был разработан для программирования бытовой электроники. В последствии Oak был переименован в язык Java и начал широко использоваться в разработке приложений и серверного программного обеспечения.

В 2000-2001 годах был принят и стандартизирован новый язык программирования C# (си-шарп), специально разработанный для платформы .NET. В создании языка принимали участие сотрудники Microsoft Research (НИИ при корпорации Microsoft) - Андерс Хейлсберг, Скотт Вилтамут, Питер Гольде и другие известные специалисты, в том числе Эрик Майер. Версия языка - С# 2.0 была предъявлена весной 2005 года. Следует отметить, что одним из языков, на базе которых основан С# , был всё тот же старый добрый С++.

Итак, из краткого перечня исторических фактов мы выяснили, что С и С++ два различных языка программирования, даже не смотря на то С++ основан на базе С. Наши занятия будут посвящены изучению обоих этих языков программирования. Естественно, получение знаний будет последовательным и сначала мы познакомимся с языком С и, затем плавно перейдем к С++.

После того, как мы совершили небольшое путешествие в прошлое, мы можем переходить к настоящему. Для дальнейшей работы нам с вами безусловно понадобится программное обеспечение. В связи с быстрым развитием рынка IT-технологий постоянно создаются более новые версии различных программ. В последующих разделах урока мы рассмотрим целых три возможных версии программного продукта необходимого для программирования.



Первый проект.

Один человек по имени Сергей, описывая свои впечатления о Праге написал мне:

"Если вы попали на официанта не говорящего по-русски, то берите меню и показывайте пальцем что вы хотите. Иногда похожие слова обозначают разные вещи. Например, слово фрукты по-чешски звучит почти как овощи. Угадайте что вам принесут, если вы попросите овощной салат?:)"

Неизвестный Вам Сергей хотел предостеречь своих друзей о возможной ошибке, но вряд ли он смог бы помочь чем-нибудь, если бы вместо официанта, нам приходилось бы общаться с компьютером. Последнему, увы, неведомо, в какую строку меню, Вы тычете пальцем. Компьютер педантично следует лишь четким указаниям. И указания эти должны даваться с помощью специальных команд. Команды в свою очередь составляют целые самостоятельные языки. Языки, понятные компьютеру - языки программирования. Вывод: чтобы найти общий язык с официантом-чехом надо быть человеком находчивым. Чтобы найти общий язык с компьютером, надо этот язык знать.

Из первого раздела Вам уже известно, что C - это язык программирования. Язык, который дает нам возможность вразумительно объяснить компьютеру, что мы от него хотим. Хотя, если быть до конца откровенными, компьютер понимает только один язык – язык машинных кодов. Для примера, программа, которая выводит на экран фразу «Hello, world!», выглядит приблизительно так на "родном" для компьютера языке:

MZР   __ + @ А ¦ ¦ -!+L-!T

$ PE L ¦-7 р ¤! 
` Р oK  Р ў+      0  e+   
t + Г·t3+ZГс¤Н$М_тUЛьЬ¤+M +tUў- tVА+¤+¦Ф№+¤-;-wGГ=xФ№+
tАс°-щЗ-Л_Ф№+f;s §lФ№+Л +u"бАФ№+¤+MАс°ЎDАt Э+- 3+
ыўы·ы°ыЎыЇЛD$П$._4Ч№++  ._ dЛ4 Ў-ubSЛdг4 +__є --fУЙf-+
-+ЙA+@У№+Л-[Xf +tRPRVh·ў+ш_S Z+єfО-fЛцf-d¤+§ RfRfh ш4 
Л+Zы¦SшC¤д-ы¦¤+ьМ-¤++¤_e fМ+fО_fО¦f¤бЛЁdЎ t3+ОшАс°Л§АФ№+-
dб4 ЙdЙ§4 f_f _t dЛ4 Ў-uSSЛdг4 +__є --fУЙf-+-+ЙA+@У№+Л-[
+єЙ]№fМ+fО-fЛц+ыf-d¤+§ RfRfh шз Л+Zы+Sш¦ ¤д-ы+fО_fО¦¤+эm№¤+
_>] Л¦Л+ЛMЛm _сбшЬ№+Л 9ШФ№+t§Л§pФ№+ш№) fd¦ __+RPбшЬ
№+Л 9ШФ№+tЛ§pФ№+шС) + +Э_YН¦ў+ ._5lЧ№+f-Н¦ў+ +f+
u ._5lЧ№+f-&ЛZ¶QW&бфЬ№+&Л &ЛJf&ОB_Ф№
+f;sЛlФ№+Л< _t=ИФ№+_G¶u_O¶WfМ+-чfЛ№3+М-Ас°

Вы скажите что в таком коде писать невозможно и будете абсолютно правы!! Но, так мы писать и не будем. Для этого и нужен язык программирования, чтобы облегчить составление программ. Языки программирования делятся на две основные группы ИНТЕРПРЕТИРУЕМЫЕ и КОМПИЛИРУЕМЫЕ. Такое деление связано с тем, какая специализированная программа переводит команды с языка программирования на машинный язык - КОМПИЛЯТОР или ИНТЕРПРЕТАТОР. Давайте выясним в чем же разница между ними. Представим, что у нас есть файл, в котором содержится набор команд

Ситуация первая. Команды написаны на интерпретируемом языке.

Каждый раз при запуске программы интерпретатор осуществляет проверку кода построчно. Если ошибок в синтаксисе нет, команды будут преобразованны в машинный код (набор инструкций для процессора). Программа запустится на выполнение. Если есть ошибка, интерпретатор остановится и Вам будет предложено ее исправить и запустить программу снова. Но, даже если ошибок больше нет и программа окончательно дописана Вами, при каждом её запуске будет срабатывать интерпретатор и опять осуществлять проверку кода. Таким образом, можно сделать выводы, что машинная версия кода нигде не сохраняется. Минусы такого подхода состоят в том, что скорость запуска программы снижается, но отключить проверку невозможно.

Ситуация вторая. Команды написаны на компилируемом языке.

Компилятор действует почти также, как и интерпретатор, т. е. проверяет код построчно. Но если встречает ошибку, то не останавливается, а исследует код до конца, выявляя все последующие ошибки и выдавая о них сообщения. Кроме того компилятор формирует специальный объектный файл с расширением .OBJ. В этом файле хранится текст программы переведенный на машинный язык. Однако, компьютер не работает напрямую с этим файлом. Существует такое понятие, как компоновка или линковка. Линковщик - это еще одна специальная программа, которая собирает машинный код (из файла с расширением .OBJ) и различные вспомогательные данные в единый исполняемый файл с расширением .EXE. Такой файл может быть запущен на выполнение как отдельная, самостоятельная программа и в его запуске компилятор уже не принимает никакого участия.

Язык С, к изучению которого вы приступаете является компилируемым языком. В нашем случае, при работе с оболочкой Microsoft Visual Studio.NET вызов компилятора осуществляется автоматически и позволяет переводить команды языка С в машинный код, что называется - "легким движением руки".

Проба пера

Один из основателей языка С, Брайэн Керниган, сказал: "Единственный способ изучать новый язык программирования - писать на нем программы." . Чем мы с Вами и начнем, сейчас, заниматься.

Так уж повелось у программистов, что первая программа должна обязательно поприветствовать мир. В буквальном смысле и желательно на английском языке. Фактически, задача нашей программы просто вывести на экран фразу "Hello, world!".

Наверняка, если Вы решили изучать программирование, Вы уже знакомы с пользовательским интерфейсом операционной системы Windows. И, уж точно Вы слыхали о существовании, так называемых текстовых редакторов. Например: Блокнот, Microsoft Word, Word Pad. Итак, чтобы написать письмо или рассказ, другими словами создать текстовый документ, Вы используете текстовый редактор. И, именно он является ОБОЛОЧКОЙ для написания чего-либо на "человеческом" языке. Для программного языка тоже есть своя ОБОЛОЧКА. В ней мы с Вами будем создавать программы и, естественно, об этой ПРОГРАММНОЙ ОБОЛОЧКЕ сейчас пойдет речь.

Для запуска программной оболочки нужно нажать кнопку «Пуск», выбрать пункт «Программы», затем выпадающее меню «Microsoft Visual Studio NET 2003» и, наконец, одноименный пункт«Microsoft Visual Studio NET 2003». После запуска приложения вы увидите нечто подобное:



После того, как Вы загрузили оболочку, выберите пункт меню File->New->Project перед Вами появиться следующее диалоговое окно:



Сейчас, попробуем создать проект, который и будет, в конечном итоге, представлять нашу программу. Детальней, что такое проект, мы разберемся попозже, когда будем писать большие программы. Пока будем представлять себе проект как объединение нескольких файлов.

    А теперь давайте по шагам:
  • В открывшемся диалоговом окне New Project(новый проект) в списке Project Types(тип проекта) выберите тип проекта Visual C++ Project
  • В списке Templates (шаблоны) - Win32 Console Project
  • В поле Location укажем на каком диске и в какой папке будет находится наш проект. Для этого введите в этом поле C:\Projects (или удобное Вам имя папки, где будут храниться все Ваши домашние проекты)
  • Дадим имя нашему ПРОЕКТУ – для этого введите в поле Name имя проекта Hello.
  • Теперь можно нажать кнопку OK.
  • Перед Вами открылось окно настройки свойств проекта - выберите вкладку Application Settings.
  • Установите галочку в поле Empty Project - это значит, что мы создаем пустой проект.
  • Теперь нажимайте кнопку Finish.



Итак, мы подготовили место для размещения нашей программы.

    Не останавливаясь на достигнутом, добавим в проект чистый файл. В нем будем набирать текст нашей программы. Для этого необходимо выполнить следующие действия:
  • Справа появилось окошко под названием Solution Explorer. В нем Вам необходимо щелкнуть правой кнопкой на папке под названием Source Files.


  • В выпавшем меню выбираем Add->Add New Item...


  • Открывается окно выбора файлов. Опять у вас огромный выбор. Рекомендуем сейчас выбрать значок C++File (.cpp)(файл, содержащий программу на языке С).


  • В текстовом поле Name (имя файла) введите имя файла Hello.
  • Нажмите кнопку Open.

Пример первой программы на языке C.

Перед тем как начать писать программу, давайте введем для удобства понятие комментария. Комментарий - это заметки к программе, которые предназначены исключительно для программиста. Компилятор игнорирует их. Например, с помощью комментария можно обозначить для чего используется та или иная строка программы. В нижеописанном примере указанно, как правильно работать с комментариями.

А теперь, в появившемся текстовом окне наберем следующий код:

// Это комментарии к программе
// Они выделяются зеленым цветом
// Начинаются комментарии двумя черточками // 
/* если необходимо создать многострочный
комментарий, используется конструкция
/* комментарий */ */

/* Данная строчка подключает в программу библиотеку под названием
 iostream. Библиотека - файл, в котором содержатся описания
 различных функций, реализованных другими программистами.
 Данная программа получила возможность использовать функции
 находящиеся в библиотеке iostream */

#include <iostream>

/* В языке С++ существует понятие пространство имен.
 Это пространство определяет некую область, на которую
 приходятся действия оператора или функции. Для того, чтобы использовать
 оператор, находящийся в определенном пространстве,
 необходимо подключить это пространство в свою программу.
 Ниже подключается пространство под названием std */

using namespace std;

void main() // Начало программы, отсюда программа начнет своё выполнение

// Весь текст программы распологается между фигурными скобками

{ //Это фигурная скобка 

// Следующая строка выводит на экран приветствие Hello, World!
// Данное действие осуществляется с помощью cout<< Именно для его 
// работы подключалась библиотека и пространство имен, в которых он располагается

 cout<<"Hello, World!\n"; 

// В конце команды стоит точка с запятой. Этим знаком ДОЛЖНА заканчиваться
// каждая команда в языке С.

}

Как вы уже знаете, компьютер понимает только язык машинных кодов. И прежде чем программа будет выполняться компьютером, нужно ее перевести на язык машинных кодов. Вы помните, что это будем делать не мы, а КОМПИЛЯТОР. Проекты, написанные на C, включают в себя много файлов. Прокомпилируем сразу все файлы, включенные в проект. Для этого в строке меню выберете Build (построить), затем Rebuild Solution (перестроить все)



Надеемся, вы набрали текст без ошибок. Наша программа успешно переведена на язык машинных кодов и ее можно запустить на выполнение. Запустить программу на выполнение просто. В меню Debug выбрать Start Without Debugging



Программа отработает и вы увидите такое вот окно:




Поздравляю! Было довольно легко. Не правда ли? Для того, чтобы закончить работу программы нажмите любую клавишу на клавиатуре (Press any key to continue).

Открытие сохраненного проекта

Для того чтобы восстановить ранее сохраненный проект на диске запустите Visual Studio (если она у Вас еще не загружена). Выберите в меню File пункт Open ->Project и укажите имя вашего проекта.



После того как проект открыт, Вы можете продолжить работу над ним.  

Категория: C | Добавил: DEN-SHP (05.11.2012)
Просмотров: 1653 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]