- •Содержание:
- •Порядок выполнения лабораторных работ
- •Оператор присваивания
- •Операторы ввода-вывода
- •Условный оператор
- •Задание к лабораторной работе
- •Программирование разветвляющегося
- •Оператор цикла for
- •Нестандартные типы данных
- •Ограниченные типы данных
- •Оператор выбора варианта
- •Задание к лабораторной работе
- •Лабораторная работа 3 регулярные типы данных. Селективная обработка массивов
- •Регулярные типы данных
- •Сортировка массивов
- •Примеры выполнения задания лабораторной работы
- •Задание к лабораторной работе
- •Лабораторная работа 4 вложенные циклы. Обработка двумерных массивов
- •Общие указания
- •Задания к лабораторной работе
- •Лабораторная работа 5 процедуры и функции
- •Процедуры
- •Функции
- •Задание к лабораторной работе
- •Лабораторная работа 6 обработка символьных данных
- •Символьный тип данных
- •Строковый тип данных
- •Процедуры
- •Функции
- •'Abcdef' copy(s,2,3) 'bcd'
- •'System' length(s) 6;
- •Задание к лабораторной работе
- •Лабораторная работа 7 комбинированные типы данных
- •Задание к лабораторной работе
- •Лабораторная работа 8 файлы и файловые типы данных
- •Файловый тип данных
- •Процедуры обработки файлов
- •Файлы с типом
- •Процедуры для работы с файлами с типом
- •Функции для обработки файлов с типом
- •Задание к лабораторной работе
- •Список рекомендованной литературы
Оператор присваивания
Общий вид - V:=A.
Здесь V - переменная, A - выражение, := - операция присваивания. Выражение А может содержать константы, переменные, названия функций, знаки операций и скобки. Например:
y:= 2*x+3*sin(sqr(x))/cos(z);
k:= a < b * m.
Для возведения в степень используется тождество ax=exlna. Поэтому при необходимости вычислить y=ax, можно записать оператор:
y:=exp(x*ln(a)).
В выражении действия выполняются слева направо с соблюдением следующего старшинства:
1) выражение в скобках;
2) not;
3) *, /, div, mod, and;
4) +, -, or;
5) =, <>, <, >, <=, >=, in.
Переменной типа integer нельзя присваивать выражения типа real.
Операторы ввода-вывода
Операторы ввода-вывода имеют вид:
- read (список ввода);
- readln (список ввода);
- write (список вывода);
- writeln (список вывода).
Операторы readln и writeln осуществляют после ввода и вывода перевод строки. В списках ввода - вывода перечисляются через запятую имена переменных. Например:
read(k,ab); writeln(y1,zk).
На печать можно выводить произвольный набор символов, заключенный в апострофы, например:
writeln(’ x1=’,x1).
Для выводимых переменных можно явно указать число позиций, например, для целой переменной
write(’k=’, k:6),
а для вещественной
write(’k=’, k:10:4),
где 10 - общее число позиций, из них 4 - под дробную часть.
Условный оператор
Общий вид –
if a then p1 else p2;
Здесь a - булевское (логическое) выражение; p1,p2 - операторы.
Булевское выражение может принимать одно из двух значений: true (истина) либо false (ложь).
Простейшими логическими выражениями являются выражения отношения:
a1 op a2.
Здесь a1, a2 - выражения, а op - операция отношения (=, <>, <, >, <=, и т.д.).
К булевским данных применимые логические операции and, or, not, xor. Булевское выражение определяет условие в операторе if, истинность которой ведет к выполнению оператора p1, а ложность - выполнение оператора p2.
Например:
if (X>5) and (Y<=10)
then
Z:=8
else
Z:= X+4;
Конструкции else р2 может отсутствовать.
Примеры выполнение задания лабораторной работы
Пример 1. Вычислить y = 2cos2x, где x=2lna; a=6,7.
Порядок работы:
Шаг 1. Вводим a.
Шаг 2. Вычисляем x = 2lna.
Шаг 3. Вычисляем y = 2cos2x.
Шаг 4. Печатаем x, y.
Шаг 5. Останов.
Блок-схема
Пример 2.Составить программу для вычисления функции
,
где b = x(arctgy + e-x+3); x = 4,2; y = 1,7.
Паскаль - программа для данного примера имеет вид
program pr2;
var x,y,a,b,c,d:real;
begin
x:=4.2; y:=1.7;
b:=x*(arctan(y)+exp(-x+3));
c:=sqrt(abs(x-1))-exp(ln(abs(b))/3);
d:=1+sqr(x)/2+sqr(sqr(y))/5;
a:=c/d;
writeln(‘ b=‘,b,’ a=‘,a)
End.
Пример 3. Треугольник задан длинами сторон. Найти радиусы вписанной и описанной окружностей.
Если стороны треугольника обозначить через а,b,c, полупериметр через р, а площадь через s, то можем записать:
.
Паскаль-программа для данного примера имеет вид
program pr3;
uses crt;
var a,b,c,p,s,rb,rm:real;
z:char;
begin clrscr;
WRITE('ВВЕДИ СТОРОНЫ ТРЕУГОЛЬНИКА: ');
readln(a,b,c);
p:=(a+b+c)/2;
s:=sqrt(p*(p-a)*(p-b)*(p-c));
rm:=s/p;
rb:=a*b*c/(4*s);
writeln(‘ a= ‘,a,‘ b= ‘,b,’ c= ‘,c);
writeln(‘ rm= ‘,rm,‘ rb= ‘,rb);
z:=readkey
end.
Пример 4. Вычислить корни квадратного уравнения
ax2 + bx + c = 0
при условии d = b2-4ac 0 по формуле
.
В противном случае, то есть при d<0, предусмотреть вывод сообщения «Действительных корней нет».
Порядок работы:
Шаг 1. Вводим a, b, c.
Шаг 2. Вычисляем d = b2-4ac.
Блок-схема
Шаг 3. Если d<0, выводим сообщения «Действительных корней нет», останов.
Шаг 4. Вычисляем
.
Шаг 5. Выводим x1, x2.
Шаг 6. Останов.
Пример 5. Дано действительное число x. Составить программу для вычисления функции f(x), если
Программа вычисления f(x) имеет вид
program pr5_1;
uses crt;
var x,y:real; k:char;
begin clrscr;
write('x ? '); readln(x);
if x<=0 then
y:=sqr(x)*x
else
if (x>0) and (x<=2) then
y:=sqr(x)+4*x+5
else
y:=sqr(x)-sin(pi*x*x/3);
writeln(' x= ',x:5:1,' y = ',y:5:1);
k:=readkey
end.
или
program pr5_2;
uses crt;
var x,y:real; k:char;
begin clrscr;
write('x ? '); readln(x);
if x<=0 then y:=sqr(x)*x;
if (x>0) and (x<=2) then y:=sqr(x)+4*x+5;
if x>2 then y:=sqr(x)-sin(pi*x*x/3);
writeln(' x= ',x:5:1,' y = ',y:5:1);
k:=readkey
end.
Пример 6. Пусть D - заштрихованная часть плоскости (рис. 1). Функция U определяется по х и y следующим образом:
Даны два числаx,y. Составить программу для вычисления значения U.
Для описания участка D составим уравнения линий, которые ограничивают часть плоскости. Получим:
1) уравнение линии 1 x=-1;
2) уравнение линии 2 x2+y2=1;
3) уравнение линии 3 определим из общего уравнения прямой. Для этого подставим к уравнению прямой y=ax+b координаты двух точек (-1;1) и (1;0). Решив полученную систему линейных уравнений, найдем уравнения линии 3: y=-0,5x+0,5.
Спланируем участок D на две подобласти: A, что лежит ниже оси OX, и B, что лежит выше оси OX. Тогда подобласть A можно описать системой неравенств:
x2+y21; y0,
а подобласть B - системой неравенств:
y 0,5x +0,5; x -1; y 0.
Участок D определится как сумма подобластей A и B. Тогда программа вычисления U приобретет вид
program pr6;
uses crt;
var x,y,u,z:real; a,b,d:boolean; k:char;
begin clrscr;
writeln(‘x,y? ‘); readln(x,y);
a:=(sqr(x)+sqr(y)<=1) and (y<=0);
b:=(x>=-1) and (y<=-0.5*x+0.5) and (y>=0);
d:=a or b;
if d then
begin
z:=(x/pi)/sqrt(1-sqr(x/pi));
u:=exp(x-y)+arctan(z)
end
else
u:=exp(sin(y)*ln(abs(x)))*ln(abs(x*sqr(y)));
writeln(‘D=’,D,’x=’,x:5:1,’y=’,y:5:1,’u=’,u:5:1);
k:=readkey
end.