Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Паскалю.doc
Скачиваний:
61
Добавлен:
04.06.2015
Размер:
7.62 Mб
Скачать

Программа и этапы ее разработки. Структура программы

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

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

Программа – это запись алгоритма на языке программирования.

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

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

2. Анализ задачи и моделирование– определяются исходные данные и результат решения задачи, выявляются ограничения на их значения, выполняется формализованное описание задачи и построение математической модели, пригодной для решения на компьютере.

3. Разработка или выбор алгоритма решения задачи– выполняется на основе ее математического описания. Многие задачи можно решить различными способами. Программист должен выбрать оптимальное решение. Неточности в постановке, анализе задачи или разработке алгоритма могут привести кскрытойошибке– программист получает неверный результат, считая его правильным.

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

5. Кодирование– запись алгоритма на языке программирования. Современные системы программирования (Delphi) позволяют ускорить процесс разработки программы, автоматически создавая часть ее текста, однако вся творческая работа по-прежнему лежит на программисте. Для успешной реализации целей проекта программисту необходимо использовать современные технологии и методы программирования: структурное, модульное и объектно-ориентированное программирование.

6. Отладка и тестирование программы.Подотладкойпонимается устранение ошибок в программе, не выявленных в процессе компиляции.Тестированиепозволяет вести их поиск и, в конечном счете, убедиться в том, что полностью отлаженная программа дает правильный результат. Для этого разрабатываетсясистема тестов– специально подобранных контрольных примеров с такими наборами параметров, для которых решение задачи известно. Тестирование должно охватывать все возможные ветвления в программе, то есть проверять все ее инструкции, и включать такие исходные данные, для которых решение невозможно. Проверка особых,исключительных ситуаций, необходима для анализа корректности. В ответственных проектах большое внимание уделяется так называемойзащите от дурака(fool-tolerance), подразумевающей устойчивость программы к неумелому обращению пользователем. Использование специальныхпрограмм-отладчиков, которые позволяют выполнять программу по отдельным шагам, просматривая при этом промежуточные результаты, значительно упрощает этот этап.

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

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

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

  • точность полученного результата,

  • время выполнения,

  • объем требуемой памяти.

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

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

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

  1. вводданных,

  2. определение представления этих данных в памяти компьютера (создание структурданных),

  3. определение операций по обработке структур данных в соответствии с заданным алгоритмом – создание базовыхструктур,

  4. выводрезультатов работы.

Типовой алгоритм вычислительного процесса, реализованного в программе, имеет вид:

Программа на Паскале имеет четко выраженную структуру – последовательность разделов, нарушать которую нежелательно.

Любая программа состоит из заголовкаиразделов.

Заголовок записывается как первая строка программы и начинается со слова Program, за которым следует имя программы:

Program Summa;

Program Primer_1;

Выбор заголовка программы подчиняется правилам выбора имени переменной. Заголовок заканчивается точкой с запятой.

За заголовком следуют разделы программы:

Usesраздел используемых модулей

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

Uses CRT, Graph;

Labelраздел описания меток

В нем перечисляются метки, используемые в программе. Любой оператор программы можно выделить, поставив перед ним метку – целое число без знака от 0до 9999или идентификатор. Метками снабжаются операторы программы, на которые осуществляется переход операторамиGoTo, и отделяются от помеченного операторадвоеточием:

10: f := f + 1;

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

Label 20, 5, metka;

Если в программе нет помеченных операторов, то раздел описания меток опускается,

Constраздел определения поименованных и типизированных констант

в нем задаются константы, используемые в программе, значения которых нужно будет менять в разных вариантах программы. Например, если в программе часто используется константа 2,71, то ее лучше задать в этом разделе:

Const eps = 2.71;

Тип константы определяется типом ее значения. Как правило, в этом разделе определяются размеры массивов, которые далее описываются в разделах TypeилиVar:

Const row = 2;

col = 3;

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

Const mass: Array [1..row,1..col] Of Integer =((5,-2,0),(12,1,-20));

Заданы элементы массива mass, состоящего из двух строк и трех столбцов. Использование констант делает программу наглядной и удобной для отладки и внесения изменений.

Typeраздел определения типов

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

Если мы хотим объяснить кому-нибудь новое для него понятие, то в простейшем случае перечисляем реальные объекты, охватываемые этим понятием. Например, как пояснить, что такое время года? Это, говорим мы, весна, лето, осень и зима. А сторона света? Это север, юг, восток и запад. В Паскале такие понятия можно выразить через перечисляемыйтип данных:

Type TStorona = (sever, yug, vostok, zapad);

Конкретные значения типа перечисляются в скобках через запятую. Переменные заданного типа описываются далее в разделе Var. По принятому соглашению, имена новых типов начинаются с буквыT.

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

yug > sever = True

Ord(sever) = 0нумерация значений начинается с нуля!

Ord(zapad) = 3

Pred(vostok) = yug

Succ(vostok) = zapad

Если в программе определены несколько перечисляемых типов, то необходимо следить за тем, чтобы одно и то же значение не входило в два типа одновременно.

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

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

В ряду значений любого упорядоченного типа можно выделить более узкий диапазон или интервал:

2 .. 5

-10 .. 20

a’ ..’d

yug .. zapad

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

Type TIndex = 1..10;

TYear = 1970..2000;

TDay = 1..31;

TLitera = ‘a’..’z’;

Внимание!Между границами диапазона (интервала) ставятсядветочки.

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

для TIndex- от 1до10

для TYear- от1970до2000

для TDay- от1до31

для TLitera- отaдоz

После определения интервального типа объявляются переменные этого типа в разделе Var, причем в программе эти переменные могут принимать только значения, лежащие в заданном диапазоне.

Внимание! Нельзя определять интервальный тип длявещественныхданных.

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

Error 201: Range check error ошибка проверки диапазона возможных значений.

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

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

Varраздел описания переменных

В этом разделе перечисляются имена используемых в программе переменных с указанием их типов:

Var i, j : Integer; переменные целого типа

alfa: Real; переменная вещественного типа

b: Boolean; переменная логического типа

n, m: TIndex; переменные типа TIndex

x: TLitera; переменная типа TLitera

st: TStorona; переменная типа TStorona

k: 1..100; переменная интервального типа

В программе эти переменные могут принимать значения констант только своих типов,

Function, Procedureраздел описания функций и процедур

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

Begin . . . Endраздел операторов

В нем записываются операторы программы в соответствии с алгоритмом ее работы. Каждый оператор заканчивается точкой с запятой. На одной строке помещается по одному оператору. Раздел операторов заканчивается словом End, после которого ставитсяточка– это физический конец программы.

Пример: написать программу, определяющую сумму цифр целого трехзначного числаx = 543:

Program Summa;

Uses CRT;