Структура программы Программа имеет вид: Описание переменных; Begin Ввод исходных данных; Вычисления; Вывод результатов End. Описание переменных имеет вид: Var <список переменных>: <тип списка переменных>; Основные типы переменных: Integer – целый Real – вещественный Boolean – логический (булевский) Пример1. Var x, y, z, time : real; n : integer; b1, b2 : boolean; Оператор ввода: Read( <список вводимых с экрана значений переменных>); Или: Readln( <список вводимых с экрана значений переменных>); Во втором случае курсор устанавливается на начало следующей строки экрана. Пример2. Read(x,y,z); Оператор вывода: Write(<список выводимых объектов>); Или: 1 Writeln(<список выводимых объектов>); Объектами могут быть переменные, выражения. Строковые выражения заключаются в ‘ ’. Пример3. Writeln(‘площадь фигуры равна ’,s); Writeln(‘площадь прямоугольника равна ’,a*b,’ периметр=’,2*(a+b)); Оператор присваивания имеет вид: <переменная>:=<выражение> Арифметическое выражение состоит их чисел, переменных, знаков арифметических операций: +, -, *(умножить), / (разделить), круглых скобок и указателей стандартных функций: sin, cos, ln (натуральный логарифм), abs (абсолютная величина), sqr (возведение в квадрат), sqrt(извлечение корня квадратного), arctan, exp(x) – e x . Пример4. Формула y ab x cd на паскале имеет вид: Y:=(a+b)/(x*sqrt(abs(c*d))) Пример5. Написать программу вычисления площади s и периметра p прямоугольника, если заданы длины двух его сторон a и b. Var a,b,s,p:real; Begin Writeln(‘задайте длины сторон прямоугольника’); Readln(a,b); S:=a*b; P:=2*(a+b); Writeln(‘s=’,s,’ p=’,p) End. Выполните программу при различных значениях входных данных. 2 Линейные программы 1 Записать программы для вычислении значений по следующим формулам. Вывести результаты. a) y= ab c ; c ab г) abc= 1 x2 ; б) z= x y a2 ; . a1 x y в) w= (1 x) 2 ; д) rez= cos 2 x 3 ; е) rez1= tgx ; 2 Как записать на Паскале величину основания натуральных логарифмов (число е), если Вы забыли цифры этого числа? Как записать число в подобной ситуации? Запишите программу для вывода чисел е и . 3 Записать программу, содержащую операторы присваивания, которые переменной d присваивают а) среднее арифметическое чисел x, y, z; б) расстояние между точками с координатами ( x1 , y1 ) и ( x2 , y2 ) ; в) площадь треугольника со сторонами a, b, c. 4 Записать программу, содержащую оператор присваивания, который меняет знак у значения переменной z. Вывести z до и после перемены знака. 5 Записать программу, в которой меняются местами значения переменных x и y. Вывести x и y до и после обмена значениями. 6 Поменять местами значения переменных x, y и z так, чтобы в x оказалось значение переменной y, в у – значение переменной z, а в z – прежнее значение переменной x. Вывести x, y и z до и после обмена значениями. 3 ОПЕРАТОРЫ: УСЛОВНЫЙ, СОСТАВНОЙ Условный оператор служит для выбора одного из возможных вариантов выполнения программы if <логическое выражение > then <оператор 1> else <оператор2>; Логическое выражение возвращает тип boolean - логический тип, т.е. результатом будет одно из логических значений: true (истина) или false (ложь). Если проверка логического выражения даёт результат true, то выполняется оператор1, если нет – оператор2. Сокращённая форма условного оператора if <логическое выражение > then <оператор 1>. Если логическое выражение равно true, то оператор1 будет выполнен. Если же логическое выражение равно false, то будет выполнен следующий за if оператор. Простое логическое выражение использует знаки операций: =, >=, >, <=, <, <> (не равно). Пример6. Z=1/x Программа: Var x:intrger; z:real; Begin Writeln(‘x=?’); Readln(x); If x<>0 then Writeln(‘z=’,1/x) Else Writeln(‘знаменатель равен нулю’) End. Выполните программу при различных значениях входных данных. 4 Пример7. y8 y, если 2 z y , если y 8 y 3 , если y 8 Программа: Var z,y : real; Begin Writeln(‘введите y’); Readln(y); If y<8 then z:=y else if y=8 then Z:=y*y else Z:=y*y*y; Writeln(‘z=’,z:9:4) End. Выполните программу при различных значениях входных данных: Y=7, y=8, y=10 Обратите внимание на то, что очень распространённой ошибкой при написании программ, имеющих тройное разветвление, использование приведённого ниже фрагмента для вычисления z: If y<8 then z:=y; If y=8 then Z:=y*y else Z:=y*y*y; Что здесь не так? Проследите, какое значение получит z, если y<8? 5 является Если <оператор1>и (или) <оператор2> содержит более одного оператора, то нужно использовать составной оператор. Рассмотрим пример: даны два числа a и b, большее из них поместить в переменную a, меньшее – в переменную b. Program two; Var a,b,c : real; Begin Writeln(‘введите два числа’); Readln(a,b); If b>a then Begin c:=a; a: =b; b:=c //составной оператор End; Writeln(‘большее =’,a:7:2,’ меньшее=’,b:7:2) End. Составной оператор – это последовательность операторов , разделенных символом ; и заключенных в begin и end/ ЗАДАНИЯ 1 y=max{a,b}; 2 y=max{a,b,c}; 3 z 4 w x2 x x2 2 1 sin x xz 5 y ax 2 bx c 1 ax bx c 2 6 w={min{x,max{y,z}} x yt , x y t} 3 7 z xt t 1 min 2 { , x y t} 3 min{ 6 x 2 5 x 6, 8 y 1 2 x 5 x 6 , x2 x2 7