Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 11 ВТ и П.doc
Скачиваний:
2
Добавлен:
22.07.2019
Размер:
324.1 Кб
Скачать

Тема : 6. Программирование

Лекция 11.

1.Стандартные функции

2.Алгоритмы линейной структуры (продолжение). Типы данных в языке Pascal. Выражения и совместимость типов. Константы.

3.Алгоритмы с разветвляющейся структурой. Оператор выбора IF.

Логический тип данных. Логические выражения и логические операции

4.Алгоритмы с разветвляющейся структурой (продолжение).

Оператор выбора Case.

5.Алгоритмы с циклической структурой. Оператор выбора For.

6.Алгоритмы с циклической структурой . Операторы циклов While и Repeat. Общие черты и различия циклических операторов.

1.Стандартные функции

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

Как пример, рассмотрим функцию, которая вычисляет синус угла, заданного в радианах:

Sin(x);

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

Cos(x);

Функция, которая возводит переданный её параметр х во 2 степень, называется:

Sqr(x);

Если х вещественного типа real, то значение функции будет также данного типа. Это же справедливо и для целочисленного типа.

Функция, которая ищет квадратный корень из числа, называется:

Sqrt(x);

А вот функции P никакие параметры не нужны – она просто возвращает значение числа π, поэтому эту функцию, как правило, используют в математических выражениях.

Ещё есть 2 важных инструкции, которые можно использовать только с целочисленным типом данных языка TurboPascal – это инструкции div и mod. При этом div делит число и оставляет от данного числа целую часть, которая осталась после деления, а mod оставляет остаток, а всё остальное отсекает.

Ниже приведены примеры использования этих функций и инструкций div и mod:

Sin(0)=0;

Cos(Pi)=-1;

X:=10;

Sqr(x)=100;

X:=sqr(x); //x=10 (до) и х=100 (после выполнения функции)

Тогда (теперь х=100)

Sqrt(x)=10;

25478div10=2547

25478mod10=8

14div7=2

14mod7=0

Задание:

Написать программу, которая вычисляет сумму трёхзначного числа n.

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

n:=596;

y:=ndiv100+ndiv10mod10+nmod10;

При этом, ndiv100 в данном случае =5, ndiv10mod10=9, nmod10=6.

Теперь решим такую задачу:

Написать программу пересчёта величины временного интервала, заданного в минутах, в величину, выраженную в часах и минутах. Например, 120 минут – это 2 часа и 0 минут.

Исходных код программы будет иметь следующий вид:

{ Преобразование величины, выраженной в минутах, в соответствующее ей значение, выраженное в часах и минутах }

Program Vrema;

var

min: integer; { интервал в минутах ]

h: integer; { количество часов }

m: integer; { количество минут }

Begin

writeln ('Введите величину временного интервала (в минутах) ‘);

write ('->');

readln (min);

h:= min div 60;

m:= min mod 60;

writeln;

writeln (min,‘ мин. — этоr,h,' час. ‘,m, ‘ мин.’);

readln;

End.

Задание математических выражений.

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

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

x*5-10

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

Это выражение на языке Pascal запишется точно так же, как и приведённое выше:

y:=x*5-10

Единственное, как видим, чтобы результат вычисления куда-то записался, мы должны завести для этого отдельную переменную y, но могли бы использовать и x:

х:=x*5-10

Правда, в этом случае исходное значение x мы уже безвозвратно потеряем.

Теперь давайте запишем такое выражение:

x*

Оно на языке программирования Pascal должно быть записано так:

y:=x*sqrt(5)-10

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

Выражение запишется так:

y:=x*sqrt(5)-10*u+5/x

Ниже приведён полный исходный текст такой программы, вычисляющей значение данного выражения по вводимым пользователем значениям x и u. Результат выводится в конце программы. Здесь необходимо помнить, что x не может быть равен 0, так как произойдёт деление на 0:

program Virajenie;

{$APPTYPE CONSOLE}

uses

SysUtils;

Var

x, u, y: real;

begin

Write('Vvedite znacheniya x i u cherez probel: ');

Readln(x,u);

y:=x*sqrt(5)-10*u+5/x;

Writeln('Rezultat raven ',y:0:2);

Readln;

end.

Как видим, x и u мы можем ввести в одной строчке, используя инструкции write и readln применительно для считывания сразу двух переменных, разделив два значения пробелами, и программа поймёт, что мы хотели ввести. При этом пробел заменит enter и, доходя для пробела, программа понимает, что на этом закончился ввод первого числа и, считав следующее число за пробелом, программа занесёт его уже не в переменную x, а в переменную u.

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

Выражение

Запись в программе

y:=(x*sqrt(5)-10*u+5/x)/u

y:=(sin(x)-5*u*cos(x))/(10+u)

y:=(sin(x)-5*u*cos(x))/(sin(x)/cos(x))-sqrt(6/u)

y:=5.8*sqrt(6- sqr(u))/( sqr(x)*sqr(x)+4*u)

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