Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Введение в языки программирования C и C++

Покупка
Артикул: 825918.01.99
Доступ онлайн
1 000 ₽
В корзину
Курс написан по материалам лекций, читавшихся автором на протяжении ряда лет студентам первых курсов факультета вычислительной математики и кибернетики Нижегородского государственного университета им. Н.И. Лобачевского. В курсе рассматриваются все основные конструкции и элементы языков программирования C и C++.
Кетков, Ю. Л. Введение в языки программирования C и C++ : краткий курс / Ю. Л. Кетков. - Москва : ИНТУИТ, 2016. - 218 с. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2138808 (дата обращения: 29.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов

                                    
Введение в языки программирования C и C++

2-е издание, исправленное

Кетков Ю.Л.

Национальный Открытый Университет “ИНТУИТ”
2016

2

Введение в языки программирования C и C++/ Ю.Л. Кетков - М.: Национальный Открытый
Университет “ИНТУИТ”, 2016

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

(c) ООО “ИНТУИТ.РУ”, 2008-2016
(c) Кетков Ю.Л., 2008-2016

3

Введение. Немного истории

Введение

Предлагаемый курс написан по материалам лекций, читавшихся автором на
протяжении ряда лет студентам первых курсов факультета вычислительной
математики и кибернетики Нижегородского государственного университета им. Н.И.
Лобачевского. Как правило, лекции по языкам программирования C, C++ читаются во
2-м семестре после полугодичного курса “Основы программирования”, построенного
на базе алгоритмического языка Паскаль в средах Turbo Pascal 7.0, Delphi 6. Во втором
семестре для обучения используются системы программирования Borland C++ (ver 3.1)
и Borland C++ Builder (ver 5.0). Близость интегрированных сред и идейное совпадение
основных синтаксических конструкций позволяют избежать ненужных повторений при
изучении особенностей второго языка программирования.

Автор выражает признательность сотруднику НИИ прикладной математики и
кибернетики ННГУ А.И. Кузнецову, который внимательно прочитал содержимое всех
разделов и тщательно проверил все примеры программ. Его советы и рекомендации
были учтены при оформлении окончательного варианта предлагаемого пособия.

Немного истории

Язык программирования C++ является наиболее распространенным инструментом
разработки программных средств как системного, так и прикладного характера.
Историю его появления связывают с сотрудником американской фирмы Bell Labs
Денизом Ритчи, хотя его детищу – языку C предшествовали разработки и других
системных программистов (М. Ричардс – система BCPL, К. Томпсон – язык B).
Толчком к появлению различных программных средств, облегчавших жизнь
системных программистов, явились работы по созданию операционной системы Unix
для компьютера PDP-7, начатые в 1969 году. Дело в том, что тогда единственной
операционной системой большого компьютера GE-645, обслуживавшей сотрудников
лаборатории, была довольно громоздкая многопользовательская система Multics. К.
Томпсон (кстати, один из разработчиков Multics) в свое время написал программу,
моделирующую движение небесных тел. Каждый ее запуск на GE-645 обходился в 75$,
а траектории движения выдавались в табличном виде.

И тогда небольшая группа сотрудников, возглавляемая К. Томпсоном, решила создать
более удобную однопользовательскую систему на маленьком заброшенном
компьютере PDP-7 с дисплеем. В состав этой группы входил и Д. Ритчи. Система Unix
стала очень популярной среди сотрудников лаборатории, т.к. она существенно
упрощала процесс прохождения задач и не требовала от пользователей знания
многочисленных директив системы Multics. В 1970 году Д. Ритчи помог перенести
Unix на более мощный компьютер PDP-11. В процессе этой работы пригодился набор
макрокоманд на языке ассемблера, который упрощал программирование
многочисленных процедур. Этот набор и был положен в основу языка C, который
удачно сочетал специфику машинных команд с элементами языка высокого уровня. В

4

году Д. Ритчи и К. Томпсон переписали ядро операционной системы Unix на язык
C (до этого все программы были написаны на ассемблере).

С 1974 года система Unix вместе с исходными текстами на языке C и компилятор этого
языка были переданы ряду университетов. Наиболее важную роль в последующем
развитии системы Unix, превратившейся из однопользовательской в
многопользовательскую, сыграли сотрудники университета Беркли. Популярность
системы Unix, устоявшей до наших дней и обслуживающей сегодня более 90%
серверов, в значительной мере содействовала и популярности языка C, компилятор
которого поставлялся в составе Unix.

Следующий вклад в развитие мощности и универсальности языка C в 1983 году внес
сотрудник все той же Bell Labs Бьёрн Страуструп. Предложенные им расширения
привели к появлению версии C++ (первоначальное название – C с классами). Эти
новшества позволили пользователям конструировать собственные типы данных,
включать в язык новые операции над такими данными, агрегировать данные с
обрабатывающими их функциями-методами, наследовать и переопределять методы в
порождаемых классах.

Следует отметить и существенный вклад в развитие систем программирования на базе
языков C, C++, внесенный фирмой Borland, точнее, ее основателем – Филиппом
Канном. Речь идет о создании интегрированных систем разработки, в которых удачно
соединились средства подготовки, хранения, отладки и компоновки программ.
Впервые такая среда появилась в системе Turbo Pascal, а после ее успешного
продвижения аналогичная среда была реализована в системе Turbo C. Все более
поздние системы программирования в той или иной мере позаимствовали основные
идеи Ф. Канна.

В настоящее время достаточно интенсивно эксплуатируются несколько систем
программирования на базе языка C++. В среде профессиональных разработок
наибольшей популярностью пользуются различные версии Visual C++ фирмы
Microsoft. Они позволяют создавать довольно качественные по объему и
производительности приложения. В вузовских организациях предпочтение отдают
продукции фирмы Borland – Borland C++ (версии 3.1, 4, 5), визуальным средам Borland
C++ Builder. Эти системы более просты в освоении, хотя качество производимой ими
продукции оставляет желать лучшего. Среди профессионалов высокие оценки можно
услышать в адрес компиляторов фирмы Intel. Несколько лет тому назад довольно
много пользователей работало с различными версиями фирмы Symantec.

5

Структура программы на языке C

В данной лекции рассматривается структура программы на C++. Приведены основные
понятия и определения, касающиеся заголовочной части программы

Продемонстрируем пример простейшей программы на языке C++, которая
запрашивает у пользователя два целочисленных значения переменных a и b,
анализирует их и выводит наибольшее число.

01  #include <iostream.h>
02  #include <conio.h>
03  int main(void)
04  {
05    int a,b,max;
06    cout << "a=";          //приглашение ввести значение a
07    cin >> a;              //ввод значения переменной а
08    cout << "b=";          //приглашение ввести значение b
09    cin >> b;              //ввод значения переменной b
10    if(a>b) max=a;         //если a>b то max=a
11    else max=b;            //иначе max=b
12    cout << "max="<<max;   //вывод максимального значения
13    getch();               //останов до нажатия клавиши
14    return 0;              //выход из функции
15  }

Номера, которые проставлены в начале каждой строки программы, не являются
принадлежностью программы. Они введены только для упрощения ссылок на описание
действия тех или иных строк. Строки 01 и 02 подключают ( include – включить) к
тексту программы так называемые заголовочные ( h от header – заголовок) файлы
системы. В этих файлах описаны системные функции и их аргументы. Используя эти
описания, компилятор проверяет правильность вызова системных функций. В нашем
случае программа использует системные функции ввода ( cin >> ) и вывода ( cout << ),
описания которых находятся в заголовочном файле iostream.h, а также функцию
ожидания нажатия какой-либо клавиши ( getch ), описание которой находится в
заголовочном файле conio.h. Названия заголовочных файлов зачастую
образовываются от каких-либо аббревиатур английских слов, их полезно научиться
понимать, а не запоминать. В нашем примере: io – input/output (ввод/вывод), stream
(поток), con ( console – пульт оператора, т.е. клавиатура и дисплей).

Строка 03 содержит заголовок функции main. Функция с таким названием обязана
присутствовать в каждой программе на языке C, C++. Именно с нее начинается
выполнение программы, она – главная (именно так переводится служебное слово main
). Предшествующее ей служебное слово int (от integer – целый) сообщает, что
результатом работы функции main должно быть целое число. По возвращаемому
функцией значению операционная система, запустившая программу main, может
“сообразить”, правильно или неправильно завершилась работа программы. По
общепринятому соглашению нулевое значение, возвращаемое функцией main,

6

свидетельствует о нормальном завершении работы программы. Служебное слово void
(дословно – пустота), указанное в круглых скобках, сообщает, что у функции main
аргументы отсутствуют.

Текст программы (тело функции) заключается в фигурные скобки (строки 04 и 15). В
большинстве последующих строк присутствует пояснительный текст на русском языке,
следующий после пары символов // – это комментарий, на содержание которого
система не обращает внимания.

В строке 05 объявлены три переменные с именами a, b и max, которые могут принимать
только целочисленные значения (тип – int ).

Строка 06 является первой строкой программы, которая производит некоторое
действие – она выводит на дисплей сообщение, состоящее из двух символов ( a= ).
Текст сообщения заключен в двойные кавычки. Строка 07 организует приостановку
работы программы до тех пор, пока пользователь не наберет на клавиатуре какое-либо
число и нажмет клавишу Enter. Поступившее значение будет хорошо воспринято, если
оно целое, и направлено в переменную a. Точно таким же образом в строках 08 и 09
будет организован ввод значения числовой переменной b.

В строке 10 сравниваются ( if – если) текущие значения переменных a и b. Если
проверяемое условие выполнено, т.е. значение переменной a больше, то оно
присваивается переменной max – выполняется действие, записанное после проверки
условия. В противном случае ( else – иначе) в переменную max заносится значение b.

Строка 12 выводит на дисплей два сообщения – текстовое ( max= ) и числовое (значение
переменной max ).

Обращение к функции getch (строка 13) приводит к задержке на экране сообщения
программы до тех пор, пока пользователь не нажмет какую-либо клавишу ( getch – от

get character, дай символ).

Последняя выполняемая строка с номером 14 возвращает управление операционной
системе ( return – вернуться) и выдает в качестве значения функции нулевой
результат.

Обратите внимание на следующие детали. Если программа обращается к каким-либо
системным функциям, то в первых ее строках обязательно должно стоять указание о
подключении соответствующих заголовочных файлов. Программа может содержать
более чем одну функцию, но среди них обязательно должна присутствовать функция с
именем main. Каждая строка программы, содержащая какое-либо объявление или
выполняемое действие, оканчивается точкой с запятой. Тело функции обязательно
заключается в фигурные скобки (в Паскале аналогичные функции выполняли
операторные скобки – begin и end ).

7

Среда программирования

В данной лекции рассматривается интегрированная среда Borland C++, ver 3.1, а также
среда визуального программирования Borland C++ Builder. Рассматривается интерфейс,
а также основные команды меню

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

Мы уже упоминали о существенном вкладе основателя фирмы Borland Ф. Канна в
создание интегрированной среды разработки (IDE – Integrated Development
Environment), появившейся в системе Turbo Pascal. Очень многие его идеи в той или
иной мере повторяются во многих системах программирования, созданных и другими
разработчиками программных продуктов.

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

Диалоговый режим работы, ставший основным на персональных компьютерах,
позволил за один сеанс обнаружить и исправить несколько ошибок. Однако на первых
ПК для создания полноценных программных продуктов приходилось работать с
несколькими автономными системными программами. Сначала запускался текстовый
редактор для набора текста исходной программы на соответствующем
алгоритмическом языке. Потом неоднократно запускался компилятор для устранения
многочисленных синтаксических ошибок. В конечном итоге компилятор переводил
исходный модуль в некоторую заготовку на машинном языке (объектный модуль).
Непосредственно выполняться объектный модуль не мог, т.к. для его работы
приходилось вызывать другие системные и/или прикладные модули, устанавливать
связи между ними по общим переменным, объединять модули в единую программу,
настраивать ее по месту расположения в оперативной памяти. Этим занимались две
автономные утилиты – редактор связей (жаргонное название – линковщик, от англ.

link ) и загрузчик (жаргонное название – лоадер, от англ. load ). После формирования

8

так называемого загрузочного модуля наступал этап отладки, связанный с поиском
ошибок алгоритмического характера. Для этой цели использовалась специальная
программа – отладчик (ее название ассоциируется с процессом поимки вредных
насекомых – от англ. debug ). К перечисленному набору системных программ
добавлялся еще и библиотекарь – утилита, обслуживающая системные и
пользовательские библиотеки объектных модулей. Заслуга интегрированной среды
заключалась в объединении всех этих компонент в единую систему, которая
автоматически переходила к следующему этапу обработки после устранения ошибок,
обнаруженных очередной утилитой. Кроме того, перед глазами пользователя всегда
находился текст исходной программы, которую в любой момент времени можно было
поправить и дополнить. В случае удачи (из программы исключены все синтаксические
и семантические ошибки) запуск программы из интегрированной среды сводился к
выполнению единственной команды Run (от англ. – Пуск).

2.1. Интегрированная среда Borland C++, ver 3.1

Система программирования Borland C++ (ver. 3.1) была разработана фирмой Borland в
1992 году для создания программ под управлением MS- DOS. Поэтому ресурсы,
предоставляемые разрабатываемому приложению, подчиняются тем ограничениям,
которые действовали в среде MS-DOS. Главные из них – объем оперативной памяти не
более 640 Кбайт (за минусом того, что занимают компоненты операционной системы),
объем каждого массива не более 64 Кбайт (на самом деле, еще немного меньше),
диапазон данных типа int от -32768 до 32767. Эти ограничения наиболее характерны
для так называемых 16-битных приложений. Во время запуска таким приложениям
предоставляется полный экран дисплея, работающего в текстовом режиме.

Система BC 3.1 может быть запущена и из под Windows, но указанные ограничения
для создаваемого приложения остаются в силе. После старта BC 3.1 в среде Windows,
на экране появляется окно интегрированной среды, представленное на рис. 2.1.

Рис. 2.1.  Окно интегрированной среды Borland C 3.1

В верхней строке располагаются названия пунктов главного меню, краткое назначение
которых таково:

9

File – общение с файловой подсистемой;
Edit – ввод и редактирование исходной программы;
Search – поиск в тексте исходной программы;
Run – запуск программы в автоматическом или пошаговом режиме;
Compile – компиляция исходной программы;
Debug – отладка программы;
Project – управление проектом сборки программы из нескольких модулей;
Options – настройка параметров интегрированной среды;
Window – управление дополнительными окнами системы программирования;
Help – обращение к файлам помощи.

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

Команды меню File (рис. 2.2) используются при наборе новой программы (команда
New ), при запоминании в файле на диске набранной или измененной программы
(команды Save и Save as ), при вызове ранее сохраненной программы (команда Open ).
Последняя команда этого меню ( Quit ) исполняется при выходе из интегрированной
среды.

Рис. 2.2.  Команды меню File

Вход в меню File происходит либо после щелчка мышью по заголовку File, либо после
набора клавишной комбинации Alt+F. Выполнение наиболее употребительных команд
также продублировано нажатием одной функциональной клавиши или
соответствующей клавишной комбинации. Эквивалентные клавишные команды
указаны справа.

Переход к той или иной команде выбранного меню сопровождается появлением в
нижней строке подсказки. На рис. 2.2 выделена команда New, а в строке подсказки
находится сообщение – “Создание нового файла в новом окне редактирования”.

10

Доступ онлайн
1 000 ₽
В корзину