Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЯВУ - С-С++методичка и титул.doc
Скачиваний:
12
Добавлен:
08.11.2019
Размер:
789.5 Кб
Скачать

81

Министерство образования Российской Федерации

Санкт-Петербургский

государственный университет аэрокосмического приборостроения

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

Структурное программирование на С/С++

Методические указания

к выполнению лабораторных работ

Санкт-Петербург

2009

Составитель: л.А. Прокушев

Рецензент: канд. техн. наук В.П. Попов

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

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

Методические указания предназначены для студентов всех специальностей, изучающих дисциплины «Программирование на языке высокого уровня», «Алгоритмические языки и программирование», «Информатика».

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

 Санкт-Петербургский государственный университет аэрокосмического приборостроения, 2009

Подписано к печати Формат 60х84 1/16. Бумага тип. №3

Печать офсетная. Усл. печ. л. Уч.-изд. л.

Тираж экз. Заказ №

Редакционно-издательский отдел

Отдел оперативной полиграфии СПбГУАП

190000, Санкт-Петербург, ул. Б. Морская, 67

Введение

Языки программирования высокого уровня (ЯВУ) предназначены для записи алгоритмов решения задач в виде программы для ЭВМ. ЯВУ – формализованный язык для описания данных и набор правил (инструкций, операторов) их обработки для реализации алгоритма задачи. Программа, получив исходные данные, должна за конечное число операций по обработке информации выдать определенный результат. Для того чтобы изучить язык, необходимо разобраться в том, как этот язык реализует семь основных понятий программирования:

  1. Представление данных разных типов и выделение для них места в оперативной памяти.

  2. Ввод данных, то есть чтение информации, например, с клавиатуры или внешних носителей данных.

  3. Вывод результатов (промежуточных и выходных) для пользователя либо запись на внешний носитель данных.

  4. Последовательное выполнение операций и команд по обработке данных (для реализации линейных процессов).

  5. Выполнение операций и команд по заданному условию для разветвления вычислений (для реализации ветвящихся процессов).

  6. Повторное выполнение команд по заданному условию (для реализации циклических процессов).

  7. Выделение группы команд в поименованный программный модуль (подпрограмму) и обращение к нему из программы и других подпрограмм (для реализации модульного принципа программирования).

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

Язык С (читается СИ) был создан Денисом Ритчи в начале 1970-х в США как язык программирования системных и прикладных программ для профессиональных программистов. В нем реализован компромисс между машинно-ориентированным языком ассемблера (прямой доступ к ячейкам памяти и манипулирование битами) и процедурно-ориентированным языком, который включает все управляющие конструкции структурного программирования. Такие свойства языка С, как лаконичность, мощность, гибкость, предоставляют программисту возможность создавать большие структурированные программы любой сложности и назначения. Однако в отличие от Паскаля, язык С не является строго типизированным, что не гарантирует надежности программ. Ответственность за надежность программного продукта ложится на программиста, что предъявляет высокие требования к его квалификации. Поэтому программист должен хорошо знать особенности языка, чтобы со знанием дела его использовать.

В начале 1980-х годов Бьерн Страуструп (США) разработал новый язык С++, который, как видно из его названия, является наследником языка С. С++ является надмножеством над С и использует все его возможности. Новизна С++ состоит в том, что он впитал в себя идеи объектно-ориентированного программирования (ООП) таких языков, как Симула 67. В типичных языках структурного программирования таких, как С или Паскаль, данные и обрабатывающие их функции разделены. В языках ООП появились понятия объекта и класса объектов. Класс представляет собой новый обобщенный тип объектов, который содержит единую совокупность данных и функций (методов) их обработки для схожих объектов. Вместе с другими идеями ООП представляет собой технологию программирования, позволяющую формировать более адекватные модели объектов реального мира. С++ расширяет существующие конструкции языка С. Программы на С могут компилироваться в среде С++, но не наоборот. Появляются новые средства для ввода-вывода данных и известных в С операций, а также совсем новые конструкции и правила организации про­грамм для реализации концепций ООП. Нередко алгоритмы методов, описывающих поведение объектов настолько сложны, что требуют использования всех возможностей структурного программирования. Разработка программного обеспечения ЭВМ в настоящее время осу­ществляется с использованием двух основных технологий – структурного (процедурного) программирования и объектно-ориентированного программиро­вания. Таким образом, опытным программистам необхо­димо знать обе технологии программирования и уметь ими пользоваться.

Концепции структурного программирования

Структурное программирование предполагает вы­полнение последовательности этапов разработки программ для решения задач с ис­пользованием ЭВМ.

  1. Постановка задачи – формулирование задачи и целей ее решения на естественном языке и установление критериев решения задачи. Результат этапа – техническое задание на разработку программного обеспечения.

  2. Формализация задачи с использованием математического аппарата и по­лучение ее абстрактной математической модели в виде формул и уравне­ний.

  3. Выбор численного метода из возможных вариантов с учетом требований по времени и точности решения и занимаемого объема памяти ЭВМ.

  4. Алгоритмизация – построение общего плана решения, т. е. алгоритма за­дачи в виде логической последовательности этапов (шагов, действий, операций), приводящих от исходных данных к искомому результату за ко­нечное время на языке понятном человеку.

  5. Программирование – перевод алгоритма задачи на язык ЭВМ (систему команд), т.е. кодирование алгоритма. Процесс разработки программы де­лится на следующие этапы: 1) запись алгоритма на ЯВУ в виде исходного файла в памяти (например, prog1.c); 2) компиляция и редактирование свя­зей (объектный файл – prog1.obj); 3) загрузка программы в оперативную память (исполняемый файл – prog1.exe); 4) исполнение программы; 5) получение результатов программы.

  6. Отладка программы – поиск и исправление ошибок в программе. Этот процесс разбивается на два этапа: 1) синтаксическая отладка – исправле­ние формальных ошибок, связанных с нарушением норм языка програм­мирования, с помощью ЭВМ; 2) семантическая отладка – исправление логических (смысловых) ошибок с применением специальных тестовых данных.

  7. Исполнение (эксплуатация) программы с любыми допустимыми данными и получение результатов решения задачи.

  8. Интерпретация результатов и поддержка программы в процессе эксплуа­тации – изменение программы в соответствии с требованиями пользова­телей, а также исправление ошибок, выявленных в процессе ее эксплуата­ции.

Существование программы можно разделить на три периода: 1) разработка (этапы 1– 4); 2) реализация (этапы 5, 6); 3) сопровождение (этапы 7, 8).

Функциональная декомпозиция.

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

Целесообразно такую задачу разбить на легко решаемые подзадачи, кото­рые в совокупности дают решение исходной задачи. Такой метод решения задач называется функциональной декомпозицией. Для применения этого метода на ЭВМ используется принцип модульного программирования. Каждая подзадача реализуется в виде отдельной подпрограммы (функции, процедуры). Для реше­ния всей задачи создается главная функция, которая вызывает другие функции, передавая им исходные аргументы и получая промежуточные результаты.

Большую программу целесообразно разделить на несколько программных модулей (автономно компилируемых файлов), например, файл подпрограмм и файл главной функции, а для их соединения в общую программу создается файл проекта. При этом файл подпрограмм можно рассматривать как библиоте­ку готовых подпрограмм, которые можно использовать в других задачах, что со­кратит время их решения.

Для структурного программирования характерно то, что данные и методы их обработки (функции, процедуры) отделены друг от друга. Данные рассматриваются как пассивные элементы, обрабатываемые функциями.