Программирование на языке С



Скачать 433.24 Kb.
Pdf просмотр
Дата04.12.2016
Размер433.24 Kb.
Просмотров86
Скачиваний0
ТипУчебник

СРЕДНЕЕ пРофЕССиоНальНоЕ обРазоваНиЕ
Программирование
на языке С
М. С. Эпштейн
Учебник
Рекомендовано
Федеральным государственным учреждением
«Федеральный институт развития образования
в качестве учебника для использования в учебном процессе
образовательных учреждений, реализующих программы
среднего профессионального образования по специальности
«Автоматизированные системы управления»
Регистрационный номер рецензии 371 от 4 октября 2010 г. ФГУ «ФИРО»

© Эпштейн МС Образовательно-издательский центр Академия, 2011
© Оформление. Издательский центр Академия, 2011
УДК 004.43(075.32)
ББК 3973.2-018я723
Э736
Р е цензе н т ы:
преподаватель ГОУ СПО Московский приборостроительный техникум
Н. Х. Сханова;
заместитель председателя Санкт-Петербургского отделения Академии информатизации образования засл. деят. науки РФ, академик РАЕН, др техн. наук, проф.
в. Н. Романенко
Эпштейн М.С.
Э736 Программирование на языке С : учебник для студ. сред. проф. образования / М.С.Эпштейн. — М. : Издательский центр Академия, 2011. — 336 с Приведено неформальное описание языка С, которое сопровождается многочисленными содержательными примерами. Параллельно изложены типовые алгоритмы обработки информации на вычислительных машинах и технология составления и отладки программ на персональном компьютере.
Для студентов учреждений среднего профессионального образования, обучающихся по специальностям Программное обеспечение вычислительной техники и автоматизированных систем и Автоматизированные системы обработки информации и управления. Может быть использован студентами высших учебных заведений, изучающими язык С, для которых программирование не является профилирующей дисциплиной.
УДК 004.43(075.32)
ББК 3973.2-018я723
оригинал-макет данного издания является собственностью
издательского центра «академия», и его воспроизведение
любым способом без согласия правообладателя запрещается
ISBN 978-5-7695-6463-5
Памяти учителей
Георгия Константиновича КОНСТАНТИНОВА
и Александра Григорьевича ЛУНЦА
ОТ АВТОрА
За более чем полвека существования программирования как вида профессиональной деятельности было создано множество разнообразных языков программирования, однако только очень немногие из них были признаны программистским сообществом и получили достаточно широкое практическое распространение. Язык С/С
++ несомненно относится к числу таких языков. Можно без преувеличения утверждать, что в настоящее время этот язык является наиболее употребляемым универсальным языком программирования, используемым при разработке как системных, таки прикладных программа программисты, владеющие этим языком, наиболее востребованы на рынке труда.
Учебник содержит неформальное описание основных возможностей языка С. Параллельно с описанием языка излагаются наиболее характерные приемы и алгоритмы обработки информации работа с файлами, массивами, решение задач вычислительной математики и т. д.).
Учебник включает в себя 21 главу, объединенные в шесть разделов, содержание которых достаточно полно отражает подробное оглавление. Каждая из глав ориентирована на 4 — 6 академических часов аудиторной работы и примерно 1 — 2 ч самостоятельной внеаудиторной работы студента.
Каждая глава начинается с краткой аннотации, ориентирующей читателя в круге вопросов, с которыми студенту предстоит познакомиться в процессе изучения этой главы, и завершается серией относительно простых вопросов для контроля освоения материала изученной главы. Эти вопросы целесообразно предложить студентам в процессе аудиторных занятий после завершения изучения материала главы в целях его закрепления.
Дополнительно для закрепления пройденного материала вначале каждой главы, кроме первой, содержится параграф, посвященный повторению пройденного в предыдущей главе. Этот параграф включает в себя краткое обобщение материала предыдущей главы и ряд более сложных вопросов и задач. По В начальной главе каждого раздела кроме вопросов по предшествующей главе приводятся вопросы и задачи по всему предыдущему разделу в целом.

4
следние могут использоваться для опроса студентов до начала изучения нового материала, а также предлагаться им в качестве домашнего задания.
Студентам настоятельно рекомендуется ответить на все предложенные вопросы и решить хотя бы часть предложенных задач. Если при этому них возникнут затруднения, абсолютно необходимо, прежде чем изучать новый материал, вернуться к предыдущей главе, чтобы эти затруднения разрешить. Автор настоятельно рекомендует студентам самостоятельно реализовать предлагаемые задачи на компьютере, поскольку абсолютно невозможно научиться программировать без достаточной практики.
В процессе изложения в текст введены отдельные выделенные фрагменты. Под аншлагом Внимание выделены наиболее важные моменты излагаемого материала Предупреждение акцентирует внимание студентов на наиболее часто допускаемых ими ошибках, что помогает их избежать наконец, Совет предлагает студентам информацию, позволяющую выбрать из множества возможных вариантов алгоритмов и их программной реализации наиболее рациональные, обеспечивающие оптимальные эксплуатационные характеристики создаваемых программ.
В отличие от многих пособий по языку программирования, где приводимые примеры в основном носят модельный характер, примеры, используемые автором, как правило, имеют предметное содержание, что, как показывает практика, значительно легче воспринимается студентами. При выборе содержания ряда примеров и задач автор ориентировался на преемственность обучения, используя материалы, знакомые студентам из курсов элементарной и высшей математики и численных методов. Для иллюстрации техники работы со строками автор использовал фрагменты из поэзии Серебряного века, с которой студенты должны быть знакомы из курса литературы. Большинство примеров представляют собой законченные, готовые для работы программы или функции, что позволяет студентам использовать их при выполнении лабораторных и курсовых работ из других курсов, а также при написании диплома и, наконец, в своих самостоятельных разработках после завершения образования.
При работе над учебником автор опирался на свой сорокалетний опыт прикладного программирования в различных областях техники и на десятилетний опыт преподавания языка Св «Санкт-
Петербургской инженерной школе электроники (СПИШЭ), а также на требования государственного стандарта образования по указанным специальностям.
На выбор материала и характер его подачи существенно повлияли реальные возможности основного адресата настоящего издания, которые автор имел возможность достаточно изучить
за годы работы. Излишняя подробность изложения, отдельные повторения, большое количество рассмотренных примеров и многословные пояснения к ним могут показаться программисту- профессионалу избыточными, однако практика позволяет автору настаивать на необходимости подобного подхода для достижения успеха. По указанной причине во всех случаях, когда конкурирующие между собой требования строгости и доступности изложения входили между собой в противоречия, автор отдавал приоритет последним. Вместе стем требования строгости также учитывались в максимально возможной степени.
В основу пособия положена среда программирования ВС3.0/3.1. Хотя эта среда в настоящее время морально устарела и обеспечивает генерацию только разрядных приложений, это не имеет решающего значения при изучении языка. Привлекательность среды ВС3 для использования в учебной практике определяется, в частности, неприхотливостью последней в отношении машинных ресурсов, что позволяет установить ее на компьютерах с самыми скромными параметрами, а также возможностью безвозмездно скачать ее инсталлятор из Интернета, например, по адресу www. Указанные качества среды ВС3 делают ее доступной для большинства студентов вне зависимости от их материальной обеспеченности. Практика показывает, что студенты, успешно овладевшие указанной средой, легко и безболезненно переходят к работе с современными средами, обеспечивающими генерирование разрядных приложений, например В настоящее время в мире издано множество различных монографий, учебников и руководств по программированию на языке С. А. Л. Марченко в своей книге [10] утверждает, что к моменту ее написания, тек г, на рынок поступило не менее
2 768 942 книг по языку С. Однако ни одной книги, специально предназначенной для студентов колледжей, автору неизвестно, хотя, разумеется, он знаком только с микроскопической долей из этого моря книг. В приводимом списке литературы перечислены издания, наиболее подходящие, по мнению автора, для указанного контингента читателей. Причем в список включены как самые простые из известных автору книг, таки более сложные, представляющие интерес для наиболее продвинутых студентов такие издания помечены в списке литературы звездочкой. Все литературные источники, приводимые в списке, аннотированы, что позволяет студенту ориентироваться в степени доступности и полезности той или другой книги для решения стоящих передним задач.
Дополнительно к данному учебнику в процессе изучения языка рекомендуется использовать принадлежащее перу автора пособие
Практикум по программированию на языке С [14], выпущенное Издательским центром Академия в 2007 г.
Автор считает своим приятным долгом выразить сердечную признательность рецензентам заслуженному деятелю науки Российской Федерации, академику РАЕН, АИО и МАФО, д-ру техн. наук, профессору Владимиру Николаевичу Романенко и преподавателю Московского приборостроительного техникума Нине Харитоновне Схановой, чьи полезные советы и квалифицированные рекомендации помогли устранить в рукописи ряд ошибок и неточностей и несомненно способствовали улучшению книги в целом. Автор также выражает свою признательность заместителю директора СПИШЭ НА. Васильевой за помощь в решении организационных вопросов, возникавших в процессе подготовки рукописи.
Автор благодарит преподавателей и студентов, которые найдут полезным использовать предлагаемое издание в своей работе, и надеется, что они не разочаруются в сделанном выборе.
раздел I
ВВедеНИе В языК С
Гл а в а 1
История языка С
После изучения этой главы вы узнаете:
• что такое язык С;
• историю его создания и развития;
• стандарты языка и варианты трансляторов.
1.1. Общая характеристика языка
Среди множества языков программирования, известных в настоящее время, язык С занимает исключительное место по своим возможностям, распространенности и востребованности. Первоначально разработанный в качестве языка системного программирования, этот язык в настоящее время широко используется для решения самых разнообразных прикладных задач в различных областях науки, техники, управления и индустрии развлечений. В частности, именно на языке Си его расширении — языке С) написано большинство известных операционных систем (ОС, компиляторов и прикладных пакетов, управляющих систем и компьютерных игр. Без преувеличения можно утверждать, что язык
С/С
++ является в настоящее время наиболее распространенным в мире языком программирования, поэтому активное владение им является обязательным элементом профессиональной подготовки каждого программиста.
Отметим основные преимущества языка С, обеспечивающие его привлекательность в глазах широкого круга программистов.
Язык имеет простую и логичную структуру, в полном объеме поддерживающую принципы структурного программирования, что дает возможность писать короткие и надежные исходные коды программ. В частности, по наблюдениям автора, исходный код прикладных программ, написанных на языке С, оказывается
на 10 — 20 % короче кода, реализующего тот же алгоритм на языке Язык С сочетает в себе все преимущества языков высокого уровня, обеспечивающих эффективную реализацию современных прогрессивных технологий программирования (структурное и модульное программирование, с возможностями низкоуровневого программирования (доступ к каждому отдельному биту оперативной памяти, использование механизма прерываний, доступность ассемблерных вставок, что дает языку С повышенную универсальность. Указанная особенность языка С позволяет некоторым авторам называть этот язык языком среднего уровня.
Структура языка С согласована с архитектурой микропроцессоров, что делает язык родным для подавляющего большинства современных РС. Благодаря указанному родству заметно упрощаются трансляторы с языка Си, как следствие, сокращается время трансляции программ и обеспечивается генерация эффективных (как в отношении объема, таки в отношении быстродействия) рабочих кодов, в большинстве ситуаций заметно превосходящих результаты других языков. По компактности и быстродействию коды, генерируемые трансляторами с языка С, соизмеримы с кодами языка символического кодирования Наконец, нельзя не упомянуть, что язык включает в себя поистине уникальную библиотеку, содержащую около 1 000 стандартных функций самого разнообразного назначения, использование которых значительно сокращает трудоемкость процесса программирования.
В настоящее время трансляторы с языка С имеются практически для компьютеров любых типов и фирм, что обеспечивает широкую переносимость исходных кодов программ. В частности, привлекательной представляется возможность перенесения программ с устаревших компьютеров на новые, более современные.
Указанные особенности языка С определяют его эффективность, мощность, гибкость, универсальность и, как следствие, востребованность. Язык С является живым языком, который непрерывно развивается и совершенствуется, о чем свидетельствует его богатая история.
1.2. Краткая история языка С
Язык Сбыл разработан в 1972 г. сотрудником Bell Laboratory корпорации AT&T (США) Деннисом Ритчи (его портрет приведен на рис. 1.1) вовремя совместной работы с Кеном Томпсоном над ОС Unix. Предполагалось использовать этот язык в качестве
языка высокого уровня для системного программирования, предназначенного главным образом для развития системы
Unix. Непосредственным предшественником этого языка явился язык В, разработанный Томпсоном в конце х гг. Результат оказался столь удачным, что в короткое время С приобрел статус профессионального языка программирования с широчайшей сферой применения.
Первой официальной публикацией языка считается монография Б. Кер- нигана и Д. Ритчи 1978 г, которая в 1985 г. была переведена на русский языки опубликована совместно с задачником по языку С, написанным А. Фьюэром [8]. Дог. версия языка, представленная в указанной книге, рассматривалась в качестве стандарта языка С, хотя некоторые вопросы сформулированы в этой версии недостаточно точно, допуская неоднозначную трактовку. Как следствие, разные трансляторы, основанные на различных трактовках, не всегда обеспечивали однозначные и предсказуемые результаты работы программ. В таких ситуациях надежность получаемых результатов снижалась и, кроме того, сокращались возможности переноса программ с компьютера на компьютер, если эти компьютеры работали с разными трансляторами. Ссылки на эту версию языка С обычно обозначают аббревиатурой К (КиР в русскоязычной литературе).
Неточности версии КиР были устранены Американским национальным институтом стандартов (ANSI), который в 1989 г. принял усовершенствованный стандарт языка С, обычно называемый С. Этот же стандарт был принят в качестве официального Международной организацией стандартов (ISO). В 1995 г. стандарт Сбыл несколько уточнен.
В конце х гг. широкую привлекательность в среде программистов получили идеи объектно-ориентированного программирования, которые позволяли программистам создавать в своих программах новые собственные типы данных, называемые классами, и определять набор операций, допустимых для переменных этих классов (такие переменные называются объектами. Использование классов предоставляет программистам качественно новые возможности при написании больших программных систем. Первым языком, использующим в полном объеме идеи объектно-ориентирован- ного программирования, по-видимому, был язык Рис. 1.1. Создатель языка С
Деннис Ритчи
Идеи объектно-ориентированного программирования были интегрированы в С коллегой Д. Ритчи по Bell Laboratory
Бьярни Страуструпом. Новый язык вначале назывался С с классами, а позднее, очевидно под влиянием романа-антиутопии Джорджа Оруэлла «1984», был переименован в С. Датой создания этого языка считается 1979 г. После завершения долгой и трудной процедуры доработки и согласования официальный стандарт языка Сбыл принят в 1998 г. Этот стандарт действует по настоящее время.
Большим достоинством языка С+ является то, что он включает в себя язык Св полном объеме в качестве подмножества риса, те. любая программа, написанная на С, является одновременно программой на С. Это позволяет некоторым авторам вместо С+ использовать обобщенное название С/С++. Привлекательность такого подхода заключается в том, что обеспечивается возможность интегрировать в систему, разрабатываемую на С, любую готовую, отлаженную и проверенную программу или функцию на С, количество которых в настоящее время практически необозримо В романе Дж. Оруэлла описывается вымышленное тоталитарное общество, вожди которого озабочены установлением среди населения единомыслия. Для достижения этой цели они пытаются минимизировать объем словаря, поскольку чем меньше выбор, тем меньше искушений утруждать себя размышлениями, которые способствуют разномыслию. В частности, из языка исключаются сравнительная и превосходная степени, которые заменяются комбинациями плюс и плюс плюс. Например, вместо слов лучше и отлично вводятся соответственно плюс хорошо и плюс плюс хорошо Поэтому в переводе с «новояза» С+ означает самый хороший С или отличный С. Подобные использование конструкций
+ и ++ стало в настоящее время общеупотребительным в рекламе, названиях различных потребительских товаров, ТV-программ и т. п.
Автор настоятельно рекомендует будущим программистам познакомиться с этим романом, поскольку помимо всего прочего в нем в доступной художественной форме изложены многие общие принципы построения искусственных языков, к числу которых относится любой язык программирования.
Рис. 1.2. Соотношение между различными версиями стандартов языка Си С++:
а — Си С б — Си С++
В 1999 г. был принят новый стандарт языка С, называемый С, полученный путем добавления к С ряда средств, заимствованных из С, а также некоторых нововведений, которые в С+ отсутствуют. Таким образом, С уже не является полным подмножеством С+ (рис. 1.2, б ). К счастью, большинство несо- вместимостей касается очень специальных вопросов, поэтому возможность включения в программы на С+ функций, написанных на чистом Св подавляющем большинстве ситуаций сохраняется. Можно ожидать, что в новом стандарте С, который уже давно обсуждается, все несовместимости будут полностью устранены и прежнее соотношение между Си Сбудет восстановлено.
Усовершенствования языка, выполненные в ХХI в, касаются в основном С. Во-первых, следует отметить внедрение идей визуального программирования, которые позволяют легко строить интерфейс пользовательских программ в стиле системы Windows. У фирмы Microsoft это реализуется за счет использования специальных библиотечных функций, ау фирмы Borland — путем захвата мышью и переноса на пользовательскую форму технология) отдельных компонент из обширной палитры стандартных компонентов интерфейса (например, меню, кнопок, панелей, полей ввода и вывода и т. п. В результате даже начинающие программисты имеют возможность создавать программы, которые внешне выглядят очень профессионально.
Во-вторых, библиотека стандартных шаблонов (автор Александр Степанов) предлагает набор основополагающих процедур для обработки данных, представляющий собой новый мощный и элегантный инструмент программирования.
Процесс стандартизации С+ оказался весьма сложными к настоящее времени еще не завершен. Предложен ряд версий проекта усовершенствованного стандарта, но окончательный вариант пока не принят. Официально продолжает действовать стандарт 1998 г. Для языка С последним официальным стандартом является С, хотя многие программисты предпочитают считать настоящим С стандарт С89.
1.3. Основные трансляторы для языка С
Большинство современных трансляторов в полном объеме поддерживают стандарт С. Многие из них включают в себя различные расширения языка, связанные с ОС или архитектурой
РС. Современные трансляторы, как правило, оформляются в виде интегрированной среды, которая помимо трансляции содержит компоненты поиска и локализации ошибок в программе пользователя, компоненты ее редактирования и отладки (трассировка,
демонстрация промежуточных результатов и т. па также развитые справочные системы по синтаксису языка и библиотечным функциям. Кроме того, среда, как правило, предоставляет программисту набор быстрых (горячих) клавиш, использование которых позволяют значительно ускорить процедуру редактирования и отладки программы.
Наиболее распространены и популярны в России трансляторы фирмы Borland.
Turbo C 2.0 требует порядка 1 Мбайт памяти на жестком дискете. может быть установлен на РС с самыми скромными возможностями, включая РС серии 386, поддерживает стандарт С, генерирует битовые приложения, в настоящее время используется редко.
ВС 3.0/3.1 требуют соответственно порядка 8 и 30 Мбайт памяти, несколько устаревшие, но очень надежные и быстро работающие трансляторы для генерации разрядных приложений для Си С+ (С реализован с обширными дополнениями как подмножество Сориентированы на работу в MS DOS, в среде могут использоваться как приложения, имеют очень удобную и понятную справочную систему, часто применяются в учебной практике (см, например, [3]). Версия 3.1 резко превосходит по объему версию 3.0 за счет включения в ее состав библиотеки OWL (Object Windows Library), содержащей функции для построения пользовательского интерфейса.
ВС++ 5.0/5.5/6.0 профессиональные системы, генерирующие разрядные приложения, работают только в среде Windows, язык С рассматривается как подмножество С, поддерживается стандарт С с расширениями (средства Сне входящие в Сне реализованы).
Borland C++Builder 4.0/5.0/6.0 большие профессиональные системы, требующие до 0,8 Гбайт памяти на жестком диске, генерируют разрядные приложения, поддерживают визуально ориентированное программирование с использованием технологии для оформления пользовательского интерфейса, работают только под управлением ОС Фирма Microsoft предлагает трансляторы Microsoft Visio C
++
5.0/6.0, которые работают только под управлением ОС Windows, генерируют разрядные приложения, поддерживают визуально ориентированное программирование при помощи функций встроенной в систему библиотеки MFC (Microsoft Class Foundation); стандарт С с расширениями реализован как подмножество
С
++.
Реже используются трансляторы фирм Watcom и Symantec
Watcom C++9.5/10.0 и Symantec С++6.0/7.0. Свои трансляторы имеют Ар Macintosh.
По мнению автора, наиболее удобным для первоначального изучения языка С являются трансляторы Borland C версий
3.0/3.1. Хотя эти версии не позволяют создавать современные разрядные приложения, они обладают другими более важными для студентов преимуществами:
• интерфейс среды BC3.0/3.1 унифицирован со средой Turbo
Pascal 7.0, которая, как правило, уже знакома студентам к моменту начала изучения языка С, поэтому они могут не отвлекаться на изучение новой среды;
• трансляторы ВС3.0/3.1 предъявляют минимальные требования к объему памяти на жестком диске, что позволяет установить их на компьютерах с самыми скромными возможностями среды BC.3.0/3.1 предоставляют пользователям удобную справочную систему, а также эффективные средства поиска ошибок и отладки программ;
• поддерживается многооконный режим разработки и редактирования программ;
• в отличие от многих других версий указанные версии устойчиво поддерживают русский язык, что, в частности, позволяет легко комментировать разрабатываемые программы это всегда полезно, но особенно важно на начальном этапе изучения языка);
• в Интернете имеются бесплатные сайты, содержащие ин- сталляторы указанных интегрированных систем.
В силу сказанного, настоящее издание ориентируется именно на использование указанных сред разработки С-программ. Как показывает практика, овладев одной из этих сред, студенты легко переходят к современным системам, включая среду визуального программирования C
++ Builder.
Контрольные вопросы
1. Кто и когда создал язык С. Какие особенности языка С сделали его популярным. Какие существуют стандарты языка С. Назовите основные фирмы, разрабатывавшие трансляторы с языка С. Какие трансляторы будут использованы в настоящем издании?


Поделитесь с Вашими друзьями:


База данных защищена авторским правом ©nethash.ru 2017
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал