Министерство образования Российской Федерации
Государственное образовательное учреждение высшего профессионального образования
Ульяновский государственный технический университет
О. Ф. Власенко, И. В. Беляева
ИЗУЧЕНИЕ СИ ПОСЛЕ ПАСКАЛЯ: ЦИКЛЫ, РАЗВИЛКИ, ФУНКЦИИ, ОБРАБОТКА ОДНОМЕРНЫХ МАССИВОВ
Методические указания к выполнению лабораторных работ по программированию для студентов направления 552800 «Информатика и вычислительная техника» и специальностей 220100 «Вычислительные машины, комплексы, системы и сети» и 021800 «Теоретическая и прикладная лингвистика»
Ульяновск 2003
УДК 681.3 (076)
ББК 32.97 я 7
В58
Рецензент доцент кафедры «Информационные системы», канд. техн. наук, О. Н. Евсеева
Одобрены секцией методических пособий
научно-методического совета университета
Власенко О.Ф., Беляева И.В.
В58 Изучение Си после Паскаля: циклы, развилки, функции, обработка одномерных массивов: Методические указания к лабораторным работам. – Ульяновск: УлГТУ, 2003.- 68 с.
Предназначены для студентов, знающих язык программирования Турбо Паскаль и изучающих язык Си. В методических указаниях рассмотрены основные элементы языка Си в сравнении с языком Турбо Паскаль: управляющие конструкции (циклы и развилки), вопросы создания пользовательских функций, стандартные функции ввода/вывода, обработка одномерных массивов. Рассмотрены различия синтаксисов Си и Турбо Паскаля, различия в использовании управляющих конструкций. В методические указания включено большое количество примеров, а также задания для трех лабораторных работ: «Циклы и вывод в Си», «Вычисление математических функций» и «Обработка одномерных массивов».
Методические указания могут быть использованы студентами, изучающими дисциплины “Информатика”, “Программирование на языке высокого уровня” при изучении языка Си.
Работа подготовлена на кафедре ВТ.
Печатается в авторской редакции.
УДК 681.3 (076)
ББК 32.97 я 7
О.Ф. Власенко, И.В. Беляева, 2003
Оформление. УлГТУ, 2003
ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ 4
ВЫВОД В ЯЗЫКЕ СИ 5
Простейшая программа «Привет, мир!» 5
Функция PRINTF – форматированный вывод 6
Циклы В ЯЗЫКЕ СИ 9
«Привет, мир!» 100 раз 9
Цикл с предусловием в Паскале и Си 9
Цикл с постусловием в Паскале и Си 10
Цикл for в Паскале и Си 11
задание для Лабораторной работы по теме «ЦИКЛЫ и вывод в Си» 15
ФУНКЦИИ В ЯЗЫКЕ СИ 19
Локальные и глобальные переменные 19
Функции без параметров в Си 21
Функции с параметрами 23
Способы передачи параметров в подпрограммы 24
Работа с указателями: операции взятия адреса и разыменования адреса 26
ВВОД В ЯЗЫКЕ СИ 29
Функция GETCH – ввод символа 29
Функция SCANF - форматированный ввод 29
РАЗВИЛКИ 31
Пример задачи: размер файла в байтах 31
Усеченные развилки 31
Полные развилки 34
задание для Лабораторной работуы по теме «Вычисление математических функций» 36
ОРГАНИЗАЦИЯ МЕНЮ. Управляющая структура Выбор (SWITCH) 52
Организация простейшего меню 52
Выбор 52
МАССИВЫ В СИ 58
Объявление и инициализация одномерных массивов в Си 58
Вычисление адреса элемента массива 59
Адресная арифметика 59
Имя массива является указателем на нулевой элемент массива 60
Передача массива в функцию через параметр 61
Примеры обработки массивов в Си 62
Задание для лабораторной работы по теме «Обработка одномернЫХ массивОВ» 66
Список литературы 77
ВВЕДЕНИЕ
В российских вузах при подготовке специалистов в области информационных систем и технологий в качестве первого языка программирования, как правило, изучают язык Паскаль. На этом языке студенты учатся программировать, знакомятся с базовыми структурами данных и основными алгоритмами, на практике осваивают основы технологии программирования. И уже на основе языка Паскаль изучаются все остальные языки программирования.
В представляемых методических указаниях читателю-студенту предлагается познакомиться с языком программирования Си. Предполагается, что читатель знаком с языком Паскаль в объеме вузовского семестрового курса программирования или усиленного школьного двухгодичного курса информатики. Предполагается, что читатель собственноручно написал, по крайней мере, десяток простых программ и что он уверенно работает в Турбо-среде (Турбо Паскаль 7.0).
Предлагаемые лабораторные работы должны быть выполнены в среде Borland C++ 3 (BC3). Среда BC3 практически полностью совпадает со средой Turbo Pascal 7, поэтому при ее изучении больших проблем у читателя не возникнет. А вот с изучением языка Си проблемы возникают. Хотя создан язык Си примерно в те же годы, что и Паскаль (Си в 1972 (Деннис Ритчи), а Паскаль в 1970 (Никлаус Вирт)), но эти два языка принципиально отличаются. Язык Паскаль создавался специально для обучения студентов вузов программированию. Язык Си создавался для замены языка Ассемблер при разработке операционных систем. Постепенно Паскаль стал использоваться не только для целей обучения. Язык Си также перестал быть только языком для написания операционных систем. И Паскаль, и Си в сегодняшнем мире информационных технологий занимают достаточно высокие места в рейтинге универсальных языков программирования и активно используются в различных проектах.
Данные методические указания не имеют цели заменить собой справочник по языку Си. При выполнении лабораторных работ, задание на которые включены в методические указания, Вам потребуются книги по Си, например [1] и/или [2].
ВЫВОД В ЯЗЫКЕ СИ
Простейшая программа «Привет, мир!»
По традиции, заложенной в книге [1], изучение языка Си начнем с программы, выводящей на экран строку с приветствием миру.
Пример на Паскале:
1> Begin
2> Writeln(‘Привет, мир!’);
3> End.
Разберем эту программу на Паскале.
В строке 1 (Begin) начинается тело программы.
В строке 2 ( Writeln(‘Привет, мир!’);) вызывается стандартная процедура writeln, которая выведет на экран переданную в нее в качестве параметра строку (‘Привет, мир!’) после чего курсор будет переведен на следующую строку.
В строке 3 (End.) заканчивается тело программы.
Заметим, что стандартная процедура writeln объявлена в модуле system, который подключается к любой Паскаль - программе автоматически.
Пример на Си:
1> #include
2>
3> int main()
4> {
5> printf (“Привет, мир!\n”);
6> return 0;
7> }
Разберем эту программу на Си.
В строке 1 (#include ) подключается модуль stdio.h (STanDard Input Output Header file – заголовочный файл (модуль) стандартного ввода-вывода). В этом модуле объявлена, в частности, функция printf, используемая в программе.
Пустая строка 2 служит в качестве разделителя в тексте программы.
В строке 3 (int main()) находится заголовок главной (main) функции программы. Главная функция в Си – эквивалент тела программы в Паскале. Выполнение Си – программы всегда начинается с функции main.
В строке 4 начинается функция main. Символ { эквивалентен ключевому слову begin в Паскале.
В строке 5 (printf(“Привет, мир!\n”);) вызывается стандартная функция printf, которая выведет на экран переданную в нее в качестве параметра строку (”Привет, мир!\n”). Символ ‘\n’ в конце строки заставит курсор перейти на следующую строку.
В строке 6 (return 0;) производится выход из функции main. 0 – код успешного завершения программы. Если программа по завершению вернула 0, значит все хорошо, ошибок нет.
В строке 7 (}) заканчивается функция main. Символ } эквивалентен ключевому слову end в Паскале.
Уже из этого совсем маленького примера видно, что при программировании на Си приходится заботиться о многих вещах, о которых в Паскале даже не вспоминали:
-
Подключение стандартных модулей (в Паскале system подключается автоматически, в Си ни один модуль (!!!) автоматически не подключается).
-
Чтобы перевести курсор на следующую строку экрана, в строку нужно включить символ \n.
-
Выход из программы в Си производится явно, с указанием кода завершения. Если все прошло успешно, то возвращается 0.
С другой стороны, есть в Си и определенные удобства – например, операторные скобки обозначаются {}, в то время как в Паскале они обозначаются begin end. Вообще, исходный текст, записанный на Си, как правило, компактнее аналогичного исходного текста на Паскале.