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

Операторы присваивания

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

Общий вид оператора присваивания:

x := s;

где x – имя переменной,

s – выражение (переменная, константа) того же типа,

:= - знак присваивания.

Оператор присваивания дает команду компьютеру на:

1. вычисление значения выражения справа от знака присваивания,

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

a:= 3 Mod 2;

a := a + 1;

После выполнения этих операторов переменная a примет значение 2.

Пример: с помощью последовательности операторов присваивания обменять значениями две переменные a и b:

Неправильное решение:

a := b;

b := a;

В этом случае обмена не произойдет, и обе переменные примут одно и то же значение, в данном случае – значение переменной b.

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

c := a;

a := b;

b := c;

Неправильная запись операторов присваивания:

10 := x; слева должно стоять имя

a + b := y; переменной, а справа - выражение

i := j := k := 1; нельзя присваивать однимоператором одновременно значениесразу нескольким переменным

Пример: чему будет равно значение переменной s после выполнения следующих операторов присваивания:

x := 534;

s := 0;

s := s + x Mod 10; s =0 + 4

s := s + x Div 10 Mod 10; s = 4 + 3

s := s + x Div 10 Div 10 Mod 10; s = 7 + 5

Эта программа вычисляет сумму цифр переменной x, то есть s = 12.

 

 

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

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

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

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

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

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

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

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

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