Язык программирования 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-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)
Оператор присваивания := Выполняет изменение значения переменной Синтаксис <имя переменной> := <выражение>; Семантика Вычисляется <выражение> в правой части, Результат записывается в <переменную> . Ограничение. Тип выражения должен быть совместим по присваиванию с переменной. Например: Одинаковые типы совместимы. Выражение типа 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;
Оператор присваивания Какое значение получит переменная Y после выполнения следующей программы? А:=12; В:=14; А:=10; В:=В+5; У:=А+В; END.
Оператор присваивания Какое значение получит переменная X после выполнения следующей программы? A:= 3; B:= 4; A:=(A+B)/2+A*2; X:=SQRT(A+B*B-0.5); END.
Оператор присваивания Какое значение получит переменная S после выполнения программы? A:=5; B:=6; S:=A*B; A:=-1; B:=3; S:=S+A*B
Оператор ввода read, readln Синтаксис read(<список переменных>); readln(<список переменных>); Семантика Происходит считывание данных с клавиатуры и запись их в переменные из <списка переменных> по порядку. Вводить данные нужно через пробел или по нажатию <Enter>. Программа продолжится, когда будут считаны все данные. Readln – вызывает переход к следущей строке. С процедурой ввода связан ряд ошибок (например, если должно быть получено целое число, а вводится 'ABC'). Пример: read (a,b) readln (x,y,z)
Вывод write, writeln. Вывод в окно вывода Синтаксис: Write (<список выражений>); writeln(<список выражений>); Параметры в списке перечисляются через запятую. Семантика: Вычисление значений выражений. Вывод значений. Процедура writeln после вывода своих параметров осуществляет переход на следующую строку. Пустой writeln вызывает пропуск строки.
Вывод write writeln. Форматы вывода. В процедурах вывода 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. Какой оператор определяет пропуск строки?
Примеры использования := 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.
Задания на линейные алгоритмы Разработать математическую модель. Составить блок-схему алгоритма и тест. Написать программу на языке Pascal. Задача 1. Даны катеты прямоугольного треугольника a и b. Найти его гипотенузу c, периметр P и площадь S. (begin12) Задача 2. Найти длину окружности L и площадь круга S заданного радиуса R.(L=2πR; S= πR2; считать, что π=3,14). (begin 7) Задача 3. Скорость первого автомобиля V1 км/ч, второго — V2 км /ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили удаляются друг от друга. (begin 36) Задача 4. (begin 20) Найти расстояние между двумя точками с заданными координатами (x1, y1) и (x2, y2) на плоскости. Расстояние вычисляется по формуле Задача 5. (begin 21) Даны координаты трех вершин треугольника: (x1, y1),(x2, y2), (x3, y3). Найти его периметр P и площадь S. Для нахождения площади треугольника со сторонами a, b, c использовать формулу Герона
Операции 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;
Задачи div и mod
Задачи div и mod
Задачи div и mod