Ввод исходных данных.
Варианты ввода исходной информации покажем на примерах:
- 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); { - корень квадратный}
- ln(x); {вычисление натурального логарифма }
{ - вычисление логарифма по произвольному основанию}
{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"}
Технология программирования
Включает пять технологических операций (этапов):
- Постановка задачи.
- Математическое описание.
- Алгоритм – структограмма.
- Написание текста программы.
- Отладка, получение результатов.
При разработке программ будем последовательно выполнять технологические этапы программирования, для наглядности помещая их в таблицу.
Пример. Определить площадь круга.
Этапы разработки программы сведены в таблицу.
Таблица
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
|
Структурное программирование
Структурное программирование – это стиль программирования, позволяющий разрабатывать хорошо структурированные программы.
Основные положения структурного программирования:
- Программа разбивается на блоки, каждый из которых имеет один "вход" и один "выход".
- Любая программа может быть составлена из трех структур или блоков, которые представлены в таблице.
- Алгоритмы при структурном программировании представляются в виде структоргамм, элементы написания которых также приведены в таблице.
Таблица
Основные типы структур и примеры их изображения на структограммах
Название
| Алгоритм
|
Блок-схема
| Структограмма
|
а) линейная структура
|
|
|
б) Ветвящаяся структура
|
|
|
в) циклическая структура:
|
|
|
с предусловием
|
|
|
с постусловием
|
|
|
Операторы цикла используются для многократного повторения аналогичных вычислений.
Для организации цикла в ТП имеются три различных оператора.
- Счетный оператор цикла For:
For <параметр цикла>:=<начальное значение> to <конечное значение> do Р;
P- простой или составной оператор.
При каждом прохождении цикла < параметр цикла >, начиная с <начального значения>, увеличивается на единицу. Цикл выполняется, пока <параметр цикла> не станет больше <конечного значения>.
Другой вариант записи оператора For:
For <параметр цикла >:=< начальное значение> downto <конечное значение> do Р;
В этом случае при каждом прохождении цикла < параметр цикла > уменьшается на единицу от <начального значения> до <конечного значения>.
- Оператор цикла While с проверкой предусловия:
While <условие> do P; {Пока выполняется условие, делать}
Цикл выполняется, пока условие истинно (true).
- Оператор цикла Repeat … until с проверкой постусловия:
Repeat P until <условие>; {Выполнять до тех пор, пока не будет выполнено условие}
Цикл выполняется, пока условие ложно (false).
Пример.
- Постановка задачи. Найти сумму 5 целых чисел от 1 до 5. Написать программы для определения суммы с помощью трех рассмотренных операторов цикла.
- Математическое описание.
- Структограммы и программы для каждого оператора цикла приведены в таблице:
Таблица
Структограммы и программы
Цикл For …
| While…
| Repeat…
|
|
3.1.
| 3.2
| 3.3
|
|
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.
|
|
предназначен для ветвления программы на два направления.
Условный оператор позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие.
Рассмотрим четыре варианта записи оператора IF:
- If <условие> then P1 else P2;
- If <условие> then P1;
- If (<условие1>) or (<условие2>) then P1 else P2;
- 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.
| Математическое описание
|
|
3.
| Разработка структограммы
|
|
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.
| Отладка и получение результатов
| Выполнить самостоятельно
|