Лекция 5 "Основы программирования и алгоритмические языки" Тема Структура программы Основні концепції процедурного програмування та їх реалізація у Паскалє-подібних мовах




Скачать 73.57 Kb.
НазваниеЛекция 5 "Основы программирования и алгоритмические языки" Тема Структура программы Основні концепції процедурного програмування та їх реалізація у Паскалє-подібних мовах
Дата публикации04.09.2013
Размер73.57 Kb.
ТипЛекция
uchebilka.ru > Информатика > Лекция

Лекция 5 "Основы программирования и алгоритмические языки"

Тема 1.5. Структура программы

Основні концепції процедурного програмування та їх реалізація у Паскалє-подібних мовах.

Розділи програми, оператори, процедури, коментарії.

Структурне програмування.

Детальное изложение этой темы и упражнения смотрите в файле «C.А. Немнюгин - TURBO PASCAL.pdf»1, стр. 16-19, 37-42, 46-47, 53-56.

Процедурное программирование


В лекции 4 (тема 1.4) говорилось, что концепция процедурного программирования состоит в том, что программа складывается из последовательности процедур (операторов). Там же приводилось определение оператора и примеры операторов, входящих в Паскале-подобные языки.

Очевидно, что любую программу на Паскале можно создать, записав необходимое количество таких операторов (подряд, в нужном порядке). Однако возникает вопрос, а не будет ли такая запись настолько длинной, что ее невозможно прочесть и понять? Как найти нужный логический участок в такой длинной записи?

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

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

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

Процедура является оператором языка программирования. Она может изменять доступные ей данные. Например – процедура вывода меню на экран.

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

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

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

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

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

Далее рассмотрим, как эти концепции процедурного программирования реализованы в Паскале-подобных языках.
^

Структура программы



Общая структура. (Примеры см. в "C.А. Немнюгин")

Программа на Паскале состоит из заголовка и двух разделов: раздела описаний и раздела операторов. Раздел описаний может отсутствовать, но если он есть, то должен предшествовать разделу операторов.

^ Раздел описаний.

Состоит разделов констант, типов, переменных, процедур и меток. Любой из перечисленных разделов может отсутствовать или встречаться в любом количестве. Для последних версий Паскале-подобных языков их порядок несущественен.

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

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

Далее следуют описания типов данных, которые свойственны реализуемому алгоритму. При описании массивов, интервальных типов и пр. используются объявленные выше константы.

После объявления констант и типов данных можно описывать переменные и типизированные константы.

Одним из последних следует раздел процедур. В нем описываются процедуры, которые могут вызываться из раздела операторов. Заметим, что описания процедур в языке Паскаль, в отличие от многих других языков, могут быть вложены друг в друга. И в описании каждой процедуры и функции могут повторяться все разделы описаний. Но объявленные в них имена действуют (видимы) только от места объявления и до конца процедуры, в которой объявлены.

Раздел меток, как правило, не используется, так как переходы по меткам не поощряются принципами структурного программирования.

^ Раздел операторов.

Содержит операторы и вложенные в них выражения в порядке выполнения алгоритма. Операторы разделяются точкой с запятой.

Обратите внимание на понятие «Операторный блок». Это последовательность операторов, охваченная конструкцией BEGIN-END. Операторный блок рассматривается, как один оператор.

В принципе, раздел операторов может не содержать ни одного оператора или состоять из единственного оператора – вызова объявленной выше процедуры, в которой сосредоточены все действия.

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

Комментарии


Комментарии, в Паскале-подобных языках, это произвольный текст, заключенный в круглые скобки со звездочками (* *) или в фигурные скобки { }. Их можно записывать практически в любом месте программы. Один тип комментариев может быть вложен в другой тип, но вложенность однотипных не допускается.

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

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


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

  • последовательное выполнение (композиция) операторов,

  • ветвление,

  • цикл.

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

Развитием этой идеи является то, что можно строить программу из больших операторных блоков, каждый из которых легко прокомментировать (описать смысл выполняемых действий) и детализовать (разбить на более мелкие блоки с более простыми действиями).

В рационально составленной программе каждый элемент структуры выполняет единственную, только ему присущую функцию (принцип структурно-функционального соответствия). Хорошим решением является реализация таких элементарных функций программы в виде отдельных процедур (см. стр. 2 этой лекции).

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

В принципе, объединение может быть просто визуальным – с помощью комментариев или рисунков.

Например, при разработке программы проверки знаний студентов, можно предусмотреть следующие крупные объединения процедур в блоки:

  • Блок студента, решает все вопросы допуска к тестированию и учета результатов.

  • Блок вопросов, обеспечивает подачу тестового материала.

  • Блок ответов, выполняет проверку и оценку ответов.

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



При разработке программы удобно пользоваться пустыми процедурами – "заглушками". Они имеют имя, список параметров, вызываются в нужных местах, но временно ничего не делают. Их назначение – "поддерживать" структуру программы, резервируя место для будущих полнофункциональных процедур. Сначала пишем программу на "заглушках", разрабатывая ее структуру, а затем постепенно программируем содержимое "заглушек", наполняя программу функциональностью.

Контрольные вопросы и задания:

Для программы "Компьютерная игра" из предыдущих лекций составить список возможных процедур и функций, показать их вложенность.



1 Неминюгин С.А. Turbo Pascal. – СПб: Издательство «Питер»,2000. – 496 с.



/home/server10/uchebilka.ru/pars_docs/refs/85/84957/84957.doc 12.9.2007 11:20:00 PM


Добавить документ в свой блог или на сайт

Похожие:

Лекция 5 \"Основы программирования и алгоритмические языки\" Тема Структура программы Основні концепції процедурного програмування та їх реалізація у Паскалє-подібних мовах iconЛекция 6 "Основы программирования и алгоритмические языки" Тема Типи...
В этой лекции мы можем обобщить сведения о данных, которые стали нам известны из предыдущих лекций и учебника. Итак

Лекция 5 \"Основы программирования и алгоритмические языки\" Тема Структура программы Основні концепції процедурного програмування та їх реалізація у Паскалє-подібних мовах iconЛекция 8 "Основы программирования и алгоритмические языки" Тема Оператори...
«оператор» несколько шире. Это не только действие, выполняемое при работе программы (исполняемый оператор), но и объявление последующих...

Лекция 5 \"Основы программирования и алгоритмические языки\" Тема Структура программы Основні концепції процедурного програмування та їх реалізація у Паскалє-подібних мовах iconЛекция 2 "Основы программирования и алгоритмические языки" Тема Процесс программирования
Вычислительный процесс – это решение задачи путем преобразования исходных данных в результат с помощью вычислителя, который действует...

Лекция 5 \"Основы программирования и алгоритмические языки\" Тема Структура программы Основні концепції процедурного програмування та їх реалізація у Паскалє-подібних мовах iconМетодические указания к выполнению контрольной работы по дисциплине...
Методические указания к выполнению контрольной работы по дисциплине «Основы программирования и алгоритмические языки» для студентов...

Лекция 5 \"Основы программирования и алгоритмические языки\" Тема Структура программы Основні концепції процедурного програмування та їх реалізація у Паскалє-подібних мовах iconЛекция 4 "Основы программирования и алгоритмические языки" Тема Составление...
Обычно это программа, которая просто выводит на экран одну строку. Например, на языке Pascal

Лекция 5 \"Основы программирования и алгоритмические языки\" Тема Структура программы Основні концепції процедурного програмування та їх реалізація у Паскалє-подібних мовах iconЛекция 3 "Основы программирования и алгоритмические языки" Тема Устройство компьютера
Электронная Вычислительная Машина (эвм) – это программируемое устройство для обработки информации, передаваемой с помощью электрических...

Лекция 5 \"Основы программирования и алгоритмические языки\" Тема Структура программы Основні концепції процедурного програмування та їх реалізація у Паскалє-подібних мовах iconКурсовой проект по дисциплине: «Основы программирования и алгоритмические языки»

Лекция 5 \"Основы программирования и алгоритмические языки\" Тема Структура программы Основні концепції процедурного програмування та їх реалізація у Паскалє-подібних мовах iconКурсовой проект по дисциплине: «Основы программирования и алгоритмические языки»

Лекция 5 \"Основы программирования и алгоритмические языки\" Тема Структура программы Основні концепції процедурного програмування та їх реалізація у Паскалє-подібних мовах iconЛекция 7 "Основы программирования и алгоритмические языки" Тема Операції...
Операция, это способ обработки данных, который приводит к вычислению нового данного – результата операции. Например, операция сложения...

Лекция 5 \"Основы программирования и алгоритмические языки\" Тема Структура программы Основні концепції процедурного програмування та їх реалізація у Паскалє-подібних мовах iconПрактическая работа №19 Тема : Основы программирования в среде
Тема: Основы программирования в среде rad. Установка Delphi, знакомство с интерфейсом, создание первой простой программы

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
uchebilka.ru
Главная страница


<