Самоучитель практика программирования си

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

Егорова Е.В. Программирование на языке Си. Учебное пособие / Алт. госуд.

технич. ун-т им. И.И.Ползунова. — Барнаул: 2012. — 184 с.

Пособие предназначено для приобретения практических навыков алгоритмизации и программирования на языке высокого уровня Си.

Цель пособия — дать конкретную информацию для самостоятельной работы студента.

Пособие предназначено для студентов направления 231000 «Программная

Рекомендовано — заседанием кафедры Прикладная Математика

Рецензент: C.А.Кантор — зав.кафедрой Прикладной математики АлтГТУ.

Данное учебное пособие предназначено для практического изучения основ алгоритмизации и программирования на стандартном языке Си. Цель учебника не в том, чтобы дать традиционное подробное описание языка Си, а в том, чтобы позволить студенту самостоятельно, в идеале вообще без участия преподавателя, изучить основы алгоритмизации и основы программирования на языке Си. Рассматривается методика структурированного, корректного программирования. Программы, которые приводятся в качестве примеров, ориентированы в первую очередь на то, что быть понятными, а не на то, чтобы быть максимально эффективными. В книге нет четкого разделения теории и практики. Все теоретические положения сразу же связываются с практическим программированием и иллюстрируются примерами решения соответствующих задач. По мнению автора, такой «задачный подход» позволяет сделать познание более активным и целенаправленным, а, как следствие, и более результативным.

Учебник ориентирован на тех, кто знаком с основами информатики на уровне простейшей практической работы за компьютером. Конкретную интегрированную среду разработки Си-программ студент может выбрать по своему усмотрению, так как изложение материала от среды разработки практически не зависит. В книге рассматривается классический вариант языка Си («стандартный СИ»), который не зависит от реализаций и имеет место практически для любой конкретной среды программирования.

Структура учебника следующая. Пособие рассчитано на работу в двух семестрах по 16-17 учебных недель каждый. Основной материал разбит на 8 модулей. Изучение одного модуля занимает примерно 4 недели. Структура модуля следующая:

теоретический материал по одной или нескольким темам, который сразу же по тексту иллюстрируется решением практических задач;

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

список контрольных вопросов по данному модулю, который дает

дополнительную проверку полученных знаний.

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

1 ОСНОВЫ ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ СИ

Цель изучения данного модуля — познакомиться с основами программирования на языке Си, а также приобрести опыт разработки на языке Си простейших программ линейной структуры. Но прежде, чем начать изучение непосредственно языка, следует познакомиться с историей его создания и с классификацией основных версий.

История создания. Почему язык называется СИ ?

Си — это язык программирования, широко распространенный в настоящее время среди системных программистов и разработчиков прикладных программ.

Си появился как инструментальный язык в процессе работы над операционной системой (ОС) UNIX Кена Томпсона из научно-исследовательской лаборатории фирмы Bell Telephone Laboratories. В 1969 г. Томпсон начал работать над этой системой для мини-ЭВМ PDP-7 фирмы DEC. В 1972 г. Деннисом Ритчи и Кеном Томпсоном был создан язык программирования Си. В нем сочетались лучшие свойства языка Ассемблер и языков высокого уровня. От Ассемблера были взяты гибкие и эффективные средства работы с памятью, от языков высокого уровня — широкий набор управляющих конструкций, возможность работы со сложными структурами данных, гибкие средства ввода-вывода. Сегодня компилятор с языка Си есть практически на любом компьютере в любой ОС. 95% ОС UNIX и почти все прикладное обеспечение для нее написано на языке Си.

Название языка соответствует третьей букве латинского алфавита «C». Совпадение не случайно и имеет свою историю. Один из языков, появившихся в 70-х годах, назывался APL (A Programming Language) — язык программирования A. Так была занята первая буква алфавита. Во время работы над ОС UNIX для PDP-7 был создан язык программирования B, который оказал сильное влияние на следующий язык, разработанный Ритчи и Томпсоном для тех же целей. Показывая эту преемственность, авторы назвали язык C.

Версии языка Си. Турбо-Си. Си++.

Деннис Ритчи разработал язык Си для компьютера типа PDP фирмы DEC, который работал под управлением операционной системы UNIX. Эта версия языка Си приобрела большую известность благодаря классическому труду Кернигана и Ритчи «Язык программирования СИ». Данную основополагающую классическую версию языка принято называть K&R — по первым буквам фамилий классиков.

Далее язык Си продолжал развиваться, и скоро встала проблема стандартизации всех тех улучшений и доработок, которые реализовались при развитии Си. Для этого в 1983 г. в институте ANSI (Американский национальный институт стандартов) был создан специальный комитет. Этот комитет утвердил ANSI-стандарт Си, который стал надмножеством стандарта K&R. Комитет не просто предложил стандарт, а еще подготовил 79 тестов, позволяющих быстро и эффективно определить степень совместимости со стандартом ANSI для любого Си-компилятора.

Калифорнийская фирма «Борланд» (Borland Inernational CA) разработала свой компилятор для IBM PC — Турбо Си. В этой разработке:

1) реализован ANSI-стандарт (выполняется 60 тестов из 79);

2) реализована специальная Турбо-среда, которая максимально автоматизирует процесс разработки программ.

В начале 80-х годов в Bell Laboratory Бьерном Страутструпом в результате дополнения и расширения языка Си был создан новый, по сути, язык, получивший название «С с классами». В 1983 г. это название было заменено на «С++». Это название указывает на эволюционную природу перехода от «С» к «С++», так как «++» — это операция приращения в Си (увеличение на 1). С++ — это мощная, объектно-ориентированная версия языка, обычный С сохранен в С++ как подмножество (есть очень немногие исключения).

Следует иметь в виду, что кроме Borland С++ существует еще версия С++, разработанная фирмой Microsoft.

В данной книге описываются основные возможности классического, или

стандартного, языка Си, который не зависит от реализаций и имеет место практически для любой конкретной среды программирования.

Cи — это язык программирования общего назначения, хорошо известный своей эффективностью, экономичностью и переносимостью. Указанные преимущества Си обеспечивают хорошее качество разработки почти любого вида программного продукта. Использование Си в качестве инструментального языка позволяет получать быстрые и компактные программы. Во многих случаях программы, написанные на Си, сравнимы по скорости с программами, написанными на языке ассемблера. При этом они имеют лучшую наглядность и их более просто сопровождать.

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

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

Си поддерживает указатели на переменные и функции. Указатель на объект программы соответствует машинному адресу этого объекта. Посредством разумного использования указателей можно создавать эффективно выполняемые программы, так как указатели позволяют ссылаться на объекты тем же самым путем, как это делает машина. Си поддерживает арифметику указателей, и тем самым позволяет осуществлять непосредственный доступ и манипуляции с адресами памяти.

В своем составе Си содержит препроцессор, который обрабатывает текстовые файлы перед компиляцией. Среди его наиболее полезных приложений при написании программ на Си являются: определение программных констант, замена вызовов функций аналогичными, но более быстрыми макросами, условная компиляция. Препроцессор не ограничен процессированием только исходных текстовых файлов Си, он может быть использован для любого текстового файла.

Эффективность . По компактности и скорости выполнения программы на языке Си приближаются к программам, написанным на Ассемблере.

Мощность . Язык Си содержит большой набор современных управляющих конструкций и способов представления данных.

Способность поддерживать технологию структурного программирования . Управляющие конструкции (операторы) языка Си согласуются с технологией структурного программирования; Си обеспечивает полный набор операторов структурного программирования.

Способность поддерживать разработку модульных программ . Основной программной единицей является функция, есть возможность создавать многофайловые программы.

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

Лаконичность . Программы на языке Си получаются короче, чем на других языках программирования, при этом наглядность и ясность программы не теряется.

Главный недостаток: язык предъявляет высокие требования к квалификации использующего его программиста. Так, Си предоставляет программисту очень большую свободу в программировании, однако бесконтрольное использование этой свободы часто приводит к ошибкам.

1.1 ОСНОВНЫЕ ЭТАПЫ РЕШЕНИЯ ЗАДАЧ НА ЭВМ

Цель изучения данного материала — познакомиться с общей технологией разработки программ на ЭВМ. В принципе, эта технология не зависит от языка программирования. Ниже приводятся примеры на двух языках: Паскаль и Си.

Обычно выделяются следующие этапы решения задачи на ЭВМ:

2) для математических задач — выбор математического метода решения задачи и окончательная математическая постановка задачи (построение математической модели);

3) разработка алгоритма решения и наглядное изображение алгоритма в одной из принятых форм;

4) написание программы (запись алгоритма на языке программирования);

5) ввод текста программы в ЭВМ;

6) получение рабочей программы;

7) тестирование и отладка программы;

9) анализ результатов выполнения программы и оформление их в виде таблиц, графиков и т.д.;

10) оформление отчета о проделанной работе.

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

Математическая постановка задачи

Объем прямой треугольной призмы вычисляется по формуле:

Источник

Читайте также:  Технологии разработки desktop приложений
Оцените статью