Язык программирования Pascal Линейные алгоритмы А. Жидков
Выражение Выражение – совокупность операндов и операций. Операнды – константы, переменные, функции. Арифметические операции – –бинарные операции + - * /, (* - умножение / - деление) –унарные операции + и -. –бинарные операции div и mod определены только для целых чисел, переменных типа integer. –div – деление нацело 5 div 2 = 2 –mod – остаток от деления 43 mod 10 = 3
Приоритет операций Приоритет - порядок выполнения операций в выражении. Операции, имеющие одинаковый приоритет, выполняются слева направо. Для изменения порядка операций используют скобки (), скобки обладают наивысшим приоритетом. Таблица приоритетов операций вычисление функций 0 not 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 (X+Y*3.2-A)B 7 X+Y/(Z*Z) 8 X*X+Y*Y=R*R 9 SQRT(A*2+B*B)
Оператор присваивания := Выполняет изменение значения переменной Синтаксис := ; Семантика Вычисляется в правой части, Результат записывается в. Ограничение. Тип выражения должен быть совместим по присваиванию с переменной. Например: Одинаковые типы совместимы. Выражение типа integer можно присвоить переменной типа real. Обратное неверно. Пример использования оператора присваивания. 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
Оператор присваивания Какое значение получит переменная Y после выполнения следующей программы? Х:= 5; A:= 2; В:= -1; У:= A*X+B; 9
Оператор присваивания Какое значение получит переменная Y после выполнения следующей программы? А:=12; В:=14; А:=10; В:=В+5; У:=А+В; END. 29
Оператор присваивания Какое значение получит переменная X после выполнения следующей программы? 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 – вызывает переход к следующей строке. С процедурой ввода связан ряд ошибок (например, если должно быть получено целое число, а вводится 'ABC'). Пример: read (a,b) readln (x,y,z)
Вывод write, writeln. Вывод в окно вывода Синтаксис: Write ( ); writeln( ); Параметры в списке перечисляются через запятую. Семантика: 1. Вычисление значений выражений. 2. Вывод значений. Процедура writeln после вывода своих параметров осуществляет переход на следующую строку. Пустой writeln вызывает пропуск строки.
Вывод write writeln. Форматы вывода. В процедурах вывода write и writeln можно указать формат вывода, в виде :m:n, где m и n - целые значения.. :m - ширина поля вывода. :n - количество знаков после десятичной точки Если длина выводимого значения меньше ширины поля вывода, то выводимый текст слева дополняется пробелами. Выравнивание по правому краю. Если длина выводимого значения больше ширины поля вывода, то формат игнорируется. Значения с форматом вывода вида :m будут представлены в экспоненциальной форме. Например, если a, b - целые переменные, то при выполнении операторов a:=-2437; b:=13555; writeln(a:6,'Привет!':9); writeln(b:1); в окно вывода будет выведен следующий текст: Привет! Например: writeln( :10:3); // ___ writeln( :10:5); // _ writeln( :10:2); // ____ writeln( :10:0); // _______-15 writeln( :10:7); // writeln((0,1):10:1); // _(0.0,1.0) (здесь символом _ изображены пробелы).
Оператор 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. Какой оператор определяет пропуск строки?
Примеры использования := 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. Пример 1. Перемена местами двух целых значений. Дано: x, y;
Задания на линейные алгоритмы Разработать математическую модель. Составить блок-схему алгоритма и тест. Написать программу на языке 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) Даны координаты трех вершин треугольника: (x1, y1),(x2, y2), (x3, y3). Найти его периметр P и площадь S. Для нахождения площади треугольника со сторонами a, b, c использовать формулу Герона 73. Написать программу, которая преобразует введенное с клавиатуры дробное число в денежный формат. Например, число 12.5 должно быть преобразовано к виду 12 руб. 50 коп.
Операции div и mod 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;
Задачи div и mod