Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
119
Добавлен:
13.03.2016
Размер:
470.02 Кб
Скачать

Московский государственный социальный университет академия информатики и информационных технологий

Батасова В.С.

Начальный курс программирования на базе СИ

Москва 2001

Введение

Любая программа, независимо от алгоритмического языка, на ко­тором она написана, состоит из описания данных и описания дей­ст­вий, выполняемых с этими данными. "Алгоритмы+структуры дан­ных = программы" - это название книги [1] классика современного програм­мирования Н. Вирта является основным принципом разра­ботки про­грамм.

Существующие в настоящее время универсальные алгоритми­ческие языки (т.е. языки, содержащие все основные средства совре­менного программирования), такие как Паскаль, Си, Фортран, Бейсик, практически не отличаются по своим возможностям. Различия в пра­вилах построения фраз языка не являются принципиальными, освое­ние этих правил - дело практики, а приверженность программиста к ка­кому-то алгоритмическому языку обычно является следствием мно­голетней привычки. Существенные отличия, имеются, пожалуй, в спо­собах организации многомодульных и многофайловых программ. Вы­бор алгоритмического языка Си для данного пособия объясняется тем, что в настоящее время он является признанным языком систем­ного программирования, т.е. языком для специалистов в области раз­работки программного обеспечения.

Чтобы начать писать программы на каком-либо алгоритмиче­ском языке, надо знать (см., например,[2]):

  1. Какова структура простейшей (не использующей нестандартные подпрограммы) программы, в каком порядке в ней разме­щаются ин­струкции языка.

  2. Какие типы и структуры данных приняты в языке и как они опреде­ляются (описываются), какие операции над данными различных ти­пов допустимы в языке, как строятся с их помощью выражения и как они вычисляются. Заметим, что на начальном этапе овладения язы­ком необязательно глубоко изучать все допустимые в нем типы и структуры, достаточно знать те, которые необходимы для реше­ния интересующего вас класса задач.

  3. Как записывать операторы преобразования данных: оператор при­сваивания, с помощью которого осуществляются все преобразова­ния внутренних данных, операторы ввода (передачи данных с внеш­них устройств в память компьютера) и вывода (передачи дан­ных из памяти компьютера на внешние устройства).

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

Перечисленных сведений достаточно для написания простых программ. Изложению этих сведений в минимальном объеме посвя­щена первая часть пособия. Дальнейшее изучение программирова­ния связано с подпрограммами (в языке Си формально существуют только функции), организацией многофайловых программ (этот мате­риал из­лагается во второй части), а также со сложными типами дан­ных (тре­тья часть). Объектно-ориентированное и визуальное про­граммирова­ние не входят в данное пособие.

Следует заметить, что овладение конструкциями алгоритми­ческого языка еще не означает умения программировать. Главную роль в создании программных средств играет умение анализировать задачу и разрабатывать принципиальную схему алгоритма без при­вязки к алгоритмическому языку. Однако обучение начальным навы­кам алгоритмизации не укладывается в формальные рамки, и напи­сать пособие по этой теме также трудно, как самоучитель по чтению и письму. Чтобы помочь начинающим программистам, в пособии, на­ряду с программами на Си, используются блок-схемы, которые, по­жа­луй, являются наиболее общим и наглядным способом описания алго­ритмов.

Для читателей, впервые столкнувшихся с программированием, поясним, что программа, написанная на алгоритмическом языке, должна быть переведена в коды компьютера, т. е. на внутренний язык компьютера (машинный язык). Процесс такого перевода назы­вается трансляцией, а специальная программа-переводчик -транс­лято­ром. Существует два способа трансляции: компиляция и интерпре­та­ция. Прикомпиляциипрограмма сначала полностью переводится в коды, а затем выполняется без участия компилятора, т.е. процесс трансляции и выполнения программы четко разделены во времени. Приинтерпретациипоследовательно чередуются перевод группы инструкций языка в коды и их выполнение. Алгоритмический язык Си (также как Паскаль и Фортран) требует именно компиляции. Откомпилированная программа (так называемыйобъектный модуль) далее подвергаетсяредактированию связей1(процесс под­ключения к программе подпрограмм) изагрузке в оперативную па­мять. В результате такой обработки получается готовая к выполне­нию программа, которая называетсяисполняемой программойилизагру­зочным модулем.

В настоящее время трансляторы обычно входят в состав сис­тем программирования, включающих в себя также редактор для на­бора и исправления текстов программ, редактор связей, загрузчик, средства для работы с файлами, программу- отладчик и среду, обес­печиваю­щую удобную работу с этими программами. Мы будем ори­ентиро­ваться на систему программирования BorlandC++ 3.1 и операционную системуMSDOS. Заметим также, что, следуя целямначального обу­чения программированию, в основном будем ориентироваться на подмно­жество языка Си++ (компилятор с которого входит в состав системы), соответствующее стандарту языка Си. С системойBor­land C++ 3.1 можно ознакомиться, например, по [3, 4], в настоящем по­собии описа­ние этой системы не приводится.