Вы находитесь на странице: 1из 3

Учебное пособие содержит теоретический материал и лабораторный практикум для изучения

дисциплины «Основы программирования». Представлен панорамный взгляд на предметную область,


с представлением не только традиционной императивной, но и функциональной, и логической
парадигм программирования, исторической ретроспективы и связи с другими областями
информатики. Приводится сравнение программирования на языках высокого и низкого уровней
(ассемблер). Несмотря на обзорный характер, после прочтения и прохождения входящего в книгу
лабораторного практикума студент будет способен писать программы средней сложности на языках
С/С++. Книга содержит и специальные главы, посвященные жизненному циклу программных средств
современной ИТ-индустрии, проблеме ошибок в программах и методах верификации программного
обеспечения, стилю программирования. Учебное пособие адресовано студентам, обучающимся в
ИТМО на кафедре КОТ по направлению 09.03.02 «Информационные системы и технологии»;
преподавателям, ведущим теоретические и лабораторные занятия по курсу «Основы
программирования». В то же время издание может представлять интерес для школьников, студентов
средних специальных заведений и широкого круга читателей, заинтересованных в освоении основ
программирования. Рекомендовано к печати Ученым советом факультета КТиУ 08.12.2015 г.,
протокол №10. Университет ИТМО – ведущий вуз России в области информационных и фотонных
технологий, один из немногих российских вузов, получивших в 2009 году статус национального
исследовательского университета. С 2013 года Университет ИТМО – участник программы повышения
конкурентоспособности российских университетов среди ведущих мировых научно-образовательных
центров, известной как проект «5 в 100». Цель Университета ИТМО – становление исследовательского
университета мирового уровня, предпринимательского по типу, ориентированного на
интернационализацию всех направлений деятельности.  Университет ИТМО, 2016  А.А. Тюгашев,
2016 3 Оглавление Введение...............................................................................................................5
Базовые понятия ...............................................................................................8 История развития языков
программирования................................................16 Императивное
программирование...................................................................31 Описание фон-неймановской
архитектуры.................................................31 Базовые понятия и конструкции императивных
языков............................34 Условный оператор и оператор выбора ....................................................38
Повторное исполнение — рекурсия и итерация ......................................41 Структурное
программирование................................................................45
Исключения..................................................................................................47 Процедурное
программирование...............................................................48 Структуры данных в
программировании.....................................................51 Простые типы
данных.................................................................................53 Составные типы
данных .............................................................................58 Структурирование программ, принцип
модульности ...............................72 Язык программирования
Си..........................................................................74 Основные понятия языка программирования
Си.....................................82 Принципы ввода-вывода в языке Cи.........................................................87
Структурирование программ на языке Си................................................90 Структуры данных и
управления языка программирования Си ............ 92 Обработка текстовых
строк........................................................................99 Использование параметров функции
main()...........................................101 Работа с
файлами.......................................................................................102 Сумма нечетных на языке
Си...................................................................106 Сортировка
массивов ..............................................................................
История развития языков программирования При формулировании понятия «программирование» мы
упоминали о том, что здесь подразумевается подготовка программ для ЭВМ, или компьютера.
Попробуем рассказать подробнее, что под этим понимается. Компьютер — некая машина, способная
выполнять различные действия в соответствии с заложенной в нее программой. Именно программа
определяет возможность полезного применения ЭВМ, без нее она остается практически ненужной
грудой «железа» — проводов, микросхем, пластмассы. Благодаря возможности менять исполняемые
программы, закладываемые в память машины без изменения ее электронной схемы, мы получаем
удивительное и не характерное для ранее созданных человеком машин свойство — универсальность,
то есть способность одной и той же машины выполнять разные функции. Программа представляет
собой некую систематизированную совокупность инструкций (команд), которые входят в перечень
доступных (исполнимых) для конкретной ЭВМ. Набор доступных команд (система команд)
современного компьютера обычно довольно примитивен и состоит из элементарных действий,
подобных сложению или пересылке данных, производимых над содержимым ячеек памяти ЭВМ.
Потрясающе, но именно выполнение большого (действительно большого!) количества этих
элементарных действий в нужном порядке позволяет современным ЭВМ вычислять траектории
полета космических аппаратов к Юпитеру, весьма правдоподобно имитировать сражение на Курской
дуге, обыгрывать чемпиона мира по шахматам, анализировать тайны мира элементарных частиц и
выполнять иные столь же сложные задачи. Программист — человек, занятый программированием,
иными словами — маг и чародей, который способен заставить компьютер выполнять все
перечисленное (и еще то, что пока не заставили выполнить компьютер, но замысел чего уже появился
в голове читателя). Но, конечно, любой маг должен знать нужные заклинания. В нашем случае
заклинания — это языки программирования, на которых составляются программы. К какому моменту
можно отнести появление первого программируемого компьютера (подчеркнем это слово, поскольку
машины для автоматизации счета известны с глубокой древности — вспомним абак, но управление
процессом вычислений производилось вручную)? Первым программистом в истории человечества
часто называют леди Лавлейс, составившую для так называемой аналитической машины Чарльза
Бэббиджа несколько предписаний, в том числе самое сложное, с вложенными циклами (причем 17
Ада Лавлейс, фактически, и ввела такое фундаментальное понятие программирования, как цикл!), по
расчету чисел Бернулли. Справедливости ради отметим, что аналитическая машина существовала
лишь в проекте. Основывалась она не на электричестве, а на механических узлах и должна была
оснащаться паровым двигателем (да, именно это было вершиной техники в 1830-е годы, когда
создавался этот выдающийся проект). Однако если бы машина была построена, она стала бы первым
программируемым компьютером. Для ввода программы в машину предполагалось использовать
карты с отверстиями (перфокарты), подобно тому, как программируются узоры, создаваемые на
ткацком станке. Фактически, программа Ады Лавлейс (кстати, в честь этой хрупкой женщины назван
язык программирования, разработанный по заказу министерства обороны США) представляет собой
набор карт, а не некую запись в виде текста. Заметим, что к числу гениальных прозрений леди
Лавлейс следует отнести и то, что она предвидела возможность машины оперировать не только
числами, но и произвольными объектами, выраженными, например, алгебраически в символьной
форме (то есть то, что ныне называется символическими вычислениями, или компьютерной
алгеброй), и даже звуками, представляемыми нотами. Тем не менее машина Бэббиджа не была
построена. В какой же стране и когда появился действительно функционировавший компьютер? Был
он электронным или механическим? И какой язык программирования применялся? Из одной книги
по информатике в другую кочует укоренившийся миф, гласящий, что страна — США, машина —
электронная, а год — 1946-й. Это не соответствует действительности. Еще в 1938 году немецкий
инженер Конрад Цузе построил Z1 — первую из трех модификаций своей вычислительной машины.
Элементной базой служили списанные с телефонной станции реле — фактически, машина была
электромеханической. Программа должна была задаваться с помощью ленты с отверстиями —
перфоленты. Однако Цузе, как и леди Лавлейс за век до него, увлекла идея создания универсальной
машины, способной решать задачи не только вычислительные, но и из других областей. Он назвал
этот свой проект логической машиной. Жаль, что она, как и аналитическая машина Бэббиджа, так и не
была построена (правда, по чертежам и записям Бэббиджа базовые части аналитической машины
были реализованы энтузиастами позже, уже в XX веке). В 1945 году, по окончании Великой
Отечественной войны, Цузе переехал из Берлина в Баварские Альпы, где и занялся определением
языка для будущей логической машины. Язык, названный им Plankalkül (по-русски 18 произносится
«планкалкюль», приблизительно означает «планирующее исчисление»), фактически, представляет
собой языком программирования высокого уровня с такими современными чертами:  наличие
повторно вызываемых функций;  встроенные типы данных;  массивы;  аналог условного
оператора;  аналог оператора assert;  исключения;  цикл ПОКА. Аналога оператора безусловного
перехода GOTO в языке не был

Вам также может понравиться