Язык программирования Pascal Линейные алгоритмы
- Выражение – совокупность операндов и операций.
- Операнды – константы, переменные, функции.
- Арифметические операции –
- бинарные операции + - * / , (* - умножение / - деление) унарные операции + и - .
- бинарные операции + - * / , (* - умножение / - деление)
- унарные операции + и - .
- бинарные операции div и mod определены только для целых чисел, переменных типа integer .
- бинарные операции div и mod определены только для целых чисел, переменных типа integer .
- div – деление нацело 5 div 2 = 2 mod – остаток от деления 43 mod 10 = 3
- div – деление нацело 5 div 2 = 2
- mod – остаток от деления 43 mod 10 = 3
Приоритет - порядок выполнения операций в выражении.
Операции, имеющие одинаковый приоритет, выполняются слева направо.
Для изменения порядка операций используют скобки (), скобки обладают наивысшим приоритетом.
Таблица приоритетов операций
вычисление функций 0
n ot 1 (высший)
*, /, div, mod, and , 2
+, -, or, xor 3
=, , , =, in 4 (низший)
- n ot 1 (высший) *, /, div, mod, and , 2 +, -, or, xor 3 =, , , =, in 4 (низший)
Все записи в одну строку.
Знаки умножения опускать нельзя.
Главный критерий правильности записи выражения - совпадение порядка выполнения операций с принятым в математике.
Какие из приведенных выражений правильно записаны на языке ПАСКАЛЬ?
1 (A+B+C)/2
2 A^ 2C
3 SIN(X+2)*2
4 2COS(A+2)-A
5 X^.Y+Z-5.1
6 (X+Y*3.2-A)B
7 X+Y/(Z*Z)
8 X*X+Y*Y=R*R
9 SQRT(A*2+B*B)
1 3 7 9
Оператор присваивания :=
Выполняет изменение значения переменной
Синтаксис
:= ;
Семантика
Вычисляется в правой части,
Результат записывается в .
- Вычисляется в правой части, Результат записывается в .
- Вычисляется в правой части, Результат записывается в .
Ограничение. Тип выражения должен быть совместим по присваиванию с переменной . Например:
Одинаковые типы совместимы.
Выражение типа integer можно присвоить переменной типа real.
Обратное неверно.
Пример использования оператора присваивания.
- Одинаковые типы совместимы. Выражение типа integer можно присвоить переменной типа real. Обратное неверно. Пример использования оператора присваивания.
a := (3 + 5) * 8;
b := a + 2;
- a := (3 + 5) * 8; b := a + 2;
Оператор присваивания
1 X:=X+5 5 X+2:=Y
2 Y:=7 6 K+5:=X+Y
3 WRITE(“C=”,C:6:2) 7 WRITE(“A+B”)
4 Z:=SQR(Z)+5.3*X 8 X:=X*X+A*X+B
1 2 4 8
Оператор присваивания
Х:= 5;
A:= 2;
В:= -1;
У:= A*X+B;
9
Оператор присваивания
Какое значение получит переменная Y после выполнения следующей
программы?
А :=12;
В:=14;
А:=10;
В:=В+5;
У:=А+В;
END.
29
Оператор присваивания
A:= 3;
B:= 4;
A:=(A+B)/2+A*2;
X:=SQRT(A+B*B-0.5);
END.
5
Оператор присваивания
Какое значение получит переменная S после выполнения программы?
A:=5;
B:=6;
S:=A*B;
A:=-1;
B:=3;
S:=S+A* B
27
Оператор ввода read , readln
Синтаксис
read () ;
readln () ;
Семантика
- Происходит считывание данных с клавиатуры и запись их в переменные из по порядку.
- Происходит считывание данных с клавиатуры и запись их в переменные из по порядку.
- Вводить данные нужно через пробел или по нажатию . Программа продолжится , когда будут считаны все данные.
- Вводить данные нужно через пробел или по нажатию .
- Программа продолжится , когда будут считаны все данные.
- Readln – вызывает переход к следущей строке.
- Readln – вызывает переход к следущей строке.
С процедурой ввода связан ряд ошибок (например, если должно быть получено целое число, а вводится 'ABC').
Пример : read (a,b)
readln (x,y,z)
Вывод write , writeln .
Вывод в окно вывода
Синтаксис :
Write () ;
writeln () ;
Параметры в списке перечисляются через запятую .
Семантика :
- Вычисление значений выражений .
- Вывод значений .
Процедура writeln после вывода своих параметров осуществляет переход на следующую строку.
Пустой writeln вызывает пропуск строки.
Вывод write writeln . Форматы вывода.
Например, если a, b - целые переменные, то при выполнении операторов
a:=-2437; b:=13555; writeln (a :6 ,'Привет!' :9 ); writeln (b :1 );
в окно вывода будет выведен следующий текст:
-2437 Привет! 13555
Например:
writeln (-14.859:10:3); // ___-14.859 writeln (-14.859:10:5); // _-14.85900 writeln (-14.859:10:2); // ____-14.86 writeln (-14.859:10:0); // _______-15 writeln (-14.859:10:7); // -14.8590000 writeln ((0,1):10:1); // _(0.0,1.0) (здесь символом _ изображены пробелы).
В процедурах вывода write и writeln можно указать формат вывода , в виде :m:n , где m и n - целые значения. .
:m - ширина поля вывода .
: n - количество знаков после десятичной точки
Если длина выводимого значения меньше ширины поля вывода , то выводимый текст слева дополняется пробелами. Выравнивание по правому краю.
Если длина выводимого значения больше ширины поля вывода , то формат игнорируется.
Значения с форматом вывода вида :m будутпредставлены в экспоненциальной форме.
Оператор write , writeln
1 write (' A=',A:5:2) 5 write(x:6:3,f:7:4)
2 write(a,b,c) 6 write(s,d)
3 writeln 7 write(‘s= ‘, s:6:3, ‘ ‘,’w=’,w:8:4)
4 write (‘ x=', x: 10:5) 8 write(sqrt(25)+5)
1. Какие из операторов вывода, приведенные в таблице, выводят только значения переменных?
2. Какие из приведенных операторов вывода выводят имена переменных и их значения?
3. Какой оператор определяет пропуск строки?
2 5 6
1 4 7
Примеры использования :=
Пример 1 . Перемена местами двух целых значений. Дано: x, y;
Program swap1;
var x, y, v : integer;
begin
read(x,y);
writeln( ‘x=‘, x, ' y= ', y);
v := x;
x := y;
y := v;
writeln( ‘x=‘, x, ' y= ', y); end.
Program swap2;
var x, y: integer;
begin
read(x, y);
writeln( ‘x=‘, x, ' y= ', y);
x := x + y;
y := x - y;
x := x - y;
writeln( ‘x=‘, x, ' y= ', y); end.
Задания на линейные алгоритмы
Разработать математическую модель. Составить блок-схему алгоритма и тест. Написать программу на языке Pascal.
- Задача 1 . Даны катеты прямоугольного треугольника a и b . Найти его гипотенузу c , периметр P и площадь S . ( begin12) Задача 2 . Найти длину окружности L и площадь круга S заданного радиуса R . ( L=2 π R ; S= π R 2 ; считать, что π =3,14 ) . ( begin 7) Задача 3 . Скорость первого автомобиля V1 км/ч, второго — V2 км /ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили удаляются друг от друга. ( begin 36) Задача 4. ( begin 20) Найти расстояние между двумя точками с заданными координатами ( x 1 , y 1 ) и ( x 2 , y 2 ) на плоскости. Расстояние вычисляется по формуле Задача 5 . ( begin 21) Даны координаты трех вершин треугольника: ( x 1, y 1), (x 2, y 2), ( x 3, y 3). Найти его периметр P и площадь S. Для нахождения площади треугольника со сторонами a , b , c использовать формулу Герона
- Задача 1 . Даны катеты прямоугольного треугольника a и b . Найти его гипотенузу c , периметр P и площадь S . ( begin12)
- Задача 2 . Найти длину окружности L и площадь круга S заданного радиуса R . ( L=2 π R ; S= π R 2 ; считать, что π =3,14 ) . ( begin 7)
- Задача 3 . Скорость первого автомобиля V1 км/ч, второго — V2 км /ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили удаляются друг от друга. ( begin 36)
- Задача 4. ( begin 20) Найти расстояние между двумя точками с заданными координатами ( x 1 , y 1 ) и ( x 2 , y 2 ) на плоскости. Расстояние вычисляется по формуле
- Задача 5 . ( begin 21) Даны координаты трех вершин треугольника: ( x 1, y 1), (x 2, y 2), ( x 3, y 3). Найти его периметр P и площадь S. Для нахождения площади треугольника со сторонами a , b , c использовать формулу Герона
73. Написать программу, которая преобразует введенное с клавиатуры дробное число в денежный формат. Например, число 12.5 должно быть преобразовано к виду 12 руб. 50 коп.
Операции div и mod
- ВНИМАНИЕ!!! Операции div и mod определены только для данных типа integer
- Целочисленное деление x div y = x / y , округленное до ближайшего целого по направлению к нулю.
- Остаток от целочисленного деления x mod y = x - (x div y) * y .
- Пример использования 1. Для определения четности числа:
x mod 2 = 0 x — четное x mod 2 0 x — нечетное
2. Для операций с цифрами числа
Сумма цифр целого трехзначного числа А.
s:=a div 100+a mod 100 div 10 +a mod 10;