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

Ввод исходных данных.

Варианты ввода исходной информации покажем на примерах:

    • Const х=20; {идентификатору x задается постоянного значения в разделе описания констант}
    • y:=20; {идентификатору y присваивается численное значение в теле основной программы}
    • read(x); { выполнение программы приостанавливается для ввода значения "x" с клавиатуры. Оператор аналогичен оператору INPUT в Бейсике}
    • readln(x); {ввод значения идентификатора с новой строки}
    • read(x,y); {ввод двух значений x ,y. Одно значение от другого отделяется нажатием клавишей пробела или Enter}
    • Write(‘x= ’); readln(x); {Ввод значения с пояснением. На экране в месте ввода появляется сообщение: ‘х= ’}

Расчет.

Основные математические соотношения и операции Турбо Паскаль:

    • + { сложение}
    • – { вычитание}
    • * { умножение}
    • / { деление}
    • = {равенство (используется при описании констант, типов и т.д.)}
    • := {присваивание}
    • > { больше}
    • < { меньше}
    • >= { больше либо равно}
    • <= { меньше либо равно}
    • <> { не равно}.

Стандартные функции Турбо Паскаля

    • abs(x); {модуль, абсолютная величина}
    • exp(x); {еx- экспонента}
    • sqr(x); {x2 - квадрат числа}
    • sqrt(x); { Структурное программирование - student2.ru - корень квадратный}
    • ln(x); {вычисление натурального логарифма }

{ Структурное программирование - student2.ru - вычисление логарифма по произвольному основанию}

{xa=exp(a*ln(x)) - возведение в степень}

    • sin(x); {-вычисление синуса}
    • cos(x); {-вычисление косинуса}

{tg(x) = sin(x)/cos(x) - вычисление тангенса}

{ctg(x) = cos(x)/sin(x) - вычисление котангенса}

    • arctan(x); {вычисление арктангенса}
    • round(x); {округление: x=4.9; y=round(x), ⇒ y=5 }
    • trunc(x); { выделение целой части: x=4.9; y=trunc(x), ⇒ y=4}
    • i mod j; { остаток целочисленного деления 10 mod 3 → 1 {10:3=3(1)}
    • i div j ; { целочисленное деление 10 div 3 → 3}
    • chr(i) ; { по порядковому номеру i возвращает символ}
    • ord(b); {функция, обратная предыдущей (возвращение порядкового номера)}
    • int(r) ;{возвращение целой части числа}
    • frac(r) ;{возвращение дробной части числа}

Стандартные процедуры

    • Dec(i); {i:=i-1}
    • inc(i); {i:=i+1}
    • GotoXY(i,j); {перемещение курсора в указанную точку экрана с координатами i, j}
    • str(x,S); {идентификатор численного типа x переводит в строковую переменную S: x→S. }{ Требуется модуль Crt}
    • Clrscr; {очистка экрана} {Требуется модуль Crt }


Константы

Pi{число π = 3.14…}

Вывод результатов

    • Write(x); {вывод на экран значения x: при реальном x=4, на экран выводится "4.0000000000E+00"}
    • Write(x:5:1); {вывод форматированных данных, то есть выделение на экране заданного количества позиций для вывода идентификатора: 5 показывает общее число позиций, 1 – число знаков после запятой: при x=4 , на экран выводится "4.0"}
    • Writeln(x); {вывод с новой строки}
    • Writeln(x,y); {вывод двух значений идентификаторов}
    • Writeln(‘x= ’,x:4:1); {вывод с комментариями и форматированием: "x= 4.0"}
    • Writeln(‘Площадь круга радиусом 3 м равна’,3.14*sqr(3):4:1); {Вывод с комментариями и выполнением расчетов: "Площадь круга радиусом 3 м равна 28.3"}

Технология программирования

Включает пять технологических операций (этапов):

    1. Постановка задачи.
    2. Математическое описание.
    3. Алгоритм – структограмма.
    4. Написание текста программы.
    5. Отладка, получение результатов.

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

Пример. Определить площадь круга.

Этапы разработки программы сведены в таблицу.

Таблица

N Этапы программирования Выполнение
1. Постановка задачи Составить программу для вычисления площади круга радиусом R.
2. Математическое описание Расчетная формула: S=πR2
3. Разработка алгоритма (структограммы)
Описание R,S
Ввод R
Расчет S=πR2
Вывод S
4. Написание программы Program P1; { программа вычисления площади круга} Var r,S:real;{Описание переменных} Begin Read(R); {в этом месте программа останавливается, для ввода числового значения R} {R:=4;}{другой вариант ввода исходных данных} S:=3.14*Sqr(R); {расчет} {S:=Pi*sqr(R);} {другой вариант расчета} Writeln(‘R=’,R:3:1, ‘S=’,S:8:4); {Вывод} end.
5. Отладка и получение результатов R= 4.0 S= 48.7654


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

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

Основные положения структурного программирования:

    1. Программа разбивается на блоки, каждый из которых имеет один "вход" и один "выход".
    2. Любая программа может быть составлена из трех структур или блоков, которые представлены в таблице.
    3. Алгоритмы при структурном программировании представляются в виде структоргамм, элементы написания которых также приведены в таблице.

Таблица

Основные типы структур и примеры их изображения на структограммах

Название Алгоритм
Блок-схема Структограмма
а) линейная структура Структурное программирование - student2.ru Структурное программирование - student2.ru
б) Ветвящаяся структура Структурное программирование - student2.ru Структурное программирование - student2.ru
в) циклическая структура:    
с предусловием Структурное программирование - student2.ru Структурное программирование - student2.ru
с постусловием Структурное программирование - student2.ru Структурное программирование - student2.ru

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

Для организации цикла в ТП имеются три различных оператора.

  1. Счетный оператор цикла For:

For <параметр цикла>:=<начальное значение> to <конечное значение> do Р;

Структурное программирование - student2.ru

P- простой или составной оператор.

При каждом прохождении цикла < параметр цикла >, начиная с <начального значения>, увеличивается на единицу. Цикл выполняется, пока <параметр цикла> не станет больше <конечного значения>.

Другой вариант записи оператора For:

For <параметр цикла >:=< начальное значение> downto <конечное значение> do Р;

В этом случае при каждом прохождении цикла < параметр цикла > уменьшается на единицу от <начального значения> до <конечного значения>.

  1. Оператор цикла While с проверкой предусловия:

While <условие> do P; {Пока выполняется условие, делать}

Цикл выполняется, пока условие истинно (true).

  1. Оператор цикла Repeat … until с проверкой постусловия:

Repeat P until <условие>; {Выполнять до тех пор, пока не будет выполнено условие}

Цикл выполняется, пока условие ложно (false).

Пример.

    1. Постановка задачи. Найти сумму 5 целых чисел от 1 до 5. Написать программы для определения суммы с помощью трех рассмотренных операторов цикла.
    2. Математическое описание. Структурное программирование - student2.ru
    3. Структограммы и программы для каждого оператора цикла приведены в таблице:

Таблица

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

Цикл For … While… Repeat…  
3.1. Структурное программирование - student2.ru 3.2 Структурное программирование - student2.ru 3.3 Структурное программирование - student2.ru Структурное программирование - student2.ru
4.1: Program P2; Var i,S:integer; Begin S:=0; For i:=1 to 5 do S:=S+i; Writeln(‘S=’,S:5); End. 4.2: Program P2; Var i,S:byte; Begin S:=0; i:=1; While i<=5 do Begin S:=S+i; I:=i+1; End; Writeln(‘S=’,S); End. 4.3: Program P3; Var i,S:integer; Begin S:=0; i:=1; Repeat S:=S+i; I:=i+1; Until i>=6; Writeln(S); End. Структурное программирование - student2.ru


предназначен для ветвления программы на два направления.

Условный оператор позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие.

Рассмотрим четыре варианта записи оператора IF:

  1. If <условие> then P1 else P2;
  2. If <условие> then P1;
  3. If (<условие1>) or (<условие2>) then P1 else P2;
  4. If (<условие1>) and (<условие2>) then P1 else P2;

где <условие>,<условие1>, <условие2> - переменные логического типа. Р1, Р2 - простые или составные операторы.

  • В первом случае если условие истинно, то выполняется оператор P1, если ложно – то P2.
  • Во втором варианте записана краткая форма оператора.
  • В третьем и четвертом примерах два условия объединены служебными словами or (или) и and (и). В результате объединения получается новая логическая переменная, истинность которой определяется согласно следующей таблицы.

Таблица

Таблица истинности сложных условий: И - истинно, Л - ложно

(<условие1>) И И Л Л
(<условие2>) И Л И Л
(<условие1>) or (<условие2>) И И И Л
(<условие1>) and (<условие2>) И Л Л Л

Пример. Написать программу для решения квадратного уравнения a∙x2+b∙x+c=0.

Технологические операции программирования и их выполнение приведены в таблице

Таблица

N Этапы программирования Выполнение
1. Постановка задачи Написать программу для решения квадратного уравнения a∙x2+b∙x+c=0.
2. Математическое описание Структурное программирование - student2.ru
3. Разработка структограммы Структурное программирование - student2.ru
4. Написание программы Program P3; Var a,b,c,d,x1,x2:real; Begin a:=1; b:=3; c:=5; D:=sqr(b)-4*a*c; If D>=0 then Begin X1:=(-b+sqrt(D))/2/a; X2:=(-b-sqrt(D))/2/a; Writeln(x1,x2); End Else Writeln(‘Действ.корней нет’); End.
5. Отладка и получение результатов Выполнить самостоятельно

Наши рекомендации