- •Министерство образования и науки российской федерации
- •Оглавление предисловие
- •Составление структурных схем алгоритмов и программ
- •Пример 1
- •Пример 2
- •Задания
- •Пример 3
- •Задания
- •Пример 4
- •Пример 5
- •Задания
- •Алфавит языка pascal. Типы данных. Раздел описаний. Оператор присваивания. Ввод-вывод. Составление простейших программ
- •Стандартные процедуры
- •Стандартные функции
- •Пример 1
- •Пример 2
- •Задания
- •Пример 3
- •Задания
- •Задания
- •Использование переменных логического типа. Логический оператор присваивания
- •Логический оператор присваивания
- •R операция_сравнения s
- •Пример 1
- •Задания
- •4. Программирование разветвляющихся структур
- •4.1. Использование в программах условного оператора
- •Пример 1
- •Задания
- •4.2. Использование в программах оператора варианта
- •Case выражение-селектор of метка_случая : оператор;
- •Пример 1
- •Задания
- •5. Использование переменных типа char
- •Задания
- •6. Реализация циклических структур
- •6.1. Применение оператора цикла с параметром
- •Шаг изменения параметра цикла:
- •Пример 1
- •Задания
- •Пример 2
- •Пример 3
- •Задания
- •Пример 4
- •Задания
- •Таким образом изображаются циклы в структурных схемах (в лабораторных работах, курсовых работах и т.Д.). Пример 5
- •Задания
- •Задания
- •Пример 6
- •Задания
- •Не смотря на то, что есть еще другие операторы цикла, обычно вводят и выводят массивы с помощью оператора цикла с параметром.
- •6.2. Применение оператора цикла с постусловием
- •Пример 1
- •Задания
- •6.3. Применение оператора цикла с предусловием
- •Основные различия между операторами циклов с постусловием и предусловием
- •Пример 1
- •Задания
- •6.4. Работа с двухмерными массивами.
- •Задания
- •Пример 1
- •Задания
- •7. Поиск и сортировка числовых данных
- •Пример 1
- •Задания
- •8. Решение задач с применением подпрограмм
- •Procedure имя(список параметров);
- •Var идентификаторы:имя типа;...; var идентификаторы: имя типа
- •Var идентификаторы:имя типа;...;var идентификаторы: имя типа;...; идентификаторы:имя типа;...;идентификаторы:имя типа
- •Идентификаторы:имя типа;идентификаторы:имя типа; ...;идентификаторы:имя типа
- •Локальные переменные доступны только внутри процедур, в которых они определены!
- •Пример 1
- •Задания
- •9. Использование переменных перечисляемого типа
- •Ввод и вывод значений переменных перечисляемого типа запрещен.
- •Задания
- •10. Использование переменных ограниченного типа
- •Задания
- •11. Использование переменных множественного типа
- •Var идентификатор : set of порядковый тип;
- •Запрещен.
- •Правила приоритета для множественных операций:
- •Задания
- •12. Использование записей
- •With префикс[,префикс [...]] do оператор
- •Пример 1
- •Задания
- •13. Работа со строками
- •Каждая переменная типа string вводится отдельной процедурой readln
- •Пример 1
- •Задания
- •14. Работа с файлами
- •Пример 1
- •Пример 2
- •Пример 3
- •Задания
- •Библиографический список
Задания
№1. Определить значение величины Z:
Var
A,B,Z:real;
Function F(x,y:real):real;
begin
f:=(x+y)/2
end;
Begin
A:=0;
B:=4;
Z:=F(a,b)+a/b;
Writeln(z)
End.
Давайте напишем структурную схему к заданию №1, для того, чтобы показать, как в схемах оформляются подпрограммы-функции и обращение к ним:
СТРУКТУРНАЯ СХЕМА ГЛАВНОЙ ПРОГРАММЫ
FUNCTION F(X,Y)
№2. Определить значение величины R:
Var
R,x,y:real;
Function UR(u,v:real):real;
begin
UR:=sqr(u)-sqr(v)
end;
Begin
x:=2;
y:=3;
R:=UR(UR(x+1,y-1),UR(5,3))+200;
Writeln(R)
End.
№3. Есть подпрограмма-функция FORM1:
Function FORM1(a,b,c:real):real;
begin
form1:=a+b/c-5
end;
Вторую подпрограмму-функцию RZ(p,Q) составьте сами. Она должна быть предназначена для вычисления следующей функции:
RZ(p,Q)=-Q/2+sqrt(p).
Напишите программу, которая с помощью этих функций вычисляла бы значения следующих величин:
D15=3+F*(u+v+3/g-5);
x2=u/((-z)/2+sqrt(sqr(a)+sqr(b)));
ABC=(-25/2+sqrt(z))*(7,8+x/25-5);
Recur=u+v/W-5+R/S-5.
На О.О.Ф. не исследовать. Считать, что все исходные данные удовлетворяют О.О.Ф.
№4. Составьте программу с использованием подпрограммы-функции для вычисления значения следующих величин:
y=COS 2+ln(5+x);
z=COSz1+ln(8x-8)+24.
На О.О.Ф. не исследовать. Считать, что все исходные данные удовлетворяют О.О.Ф.
№5. Диагональ делит выпуклый четырехугольник на два треугольника. Найти площадь четырехугольника ABCD, если известны длины всех его сторон иAC.
B
1
А C
2
D
№6. Определить значение переменной N1, которое будет вычислено в результате выполнения следующей программы:
Type
MAS=array[1..5] of integer;
Var
M:MAS;
K,N1:integer;
function F(K:MAS;N:integer):integer;
var
j,u:integer;
begin
u:=0;
for j:=1 to n do
u:=u+k[j];
F:=u end;
Begin
for k:=1 to 5 do
M[k]:=k;
N1:=F(m,5);
Writeln(N1)
End.
№7. Задана подпрограмма-функция, предназначенная для вычисления значения следующего выражения:
тип задан в главной программе
Function PROIZV(a:mas;N:integer):real;
var
P:real;
i:integer;
begin
P:=1;
for i:=1 to n do
p:=p*a[i];
proizv:=p
end;
Составить главную программу, которая с использованием подпрограммы-функции PROIZV будет вычислять значения величин:
№8. C использованием functionвычислить
№9. В программе описаны три процедуры:
PROCEDURE P(x,y:integer);
begin
y:=x+1
end;
PROCEDURE Q(x:integer;var y:integer);
begin
y:=x+1
end;
PROCEDURE R(var x,y:integer);
begin
y:=x+1
end;
Правильны ли следующие обращения к процедурам? Если да, определить, что будет выдано на экран.
а) c:=2;
d:=0;
P(sqr(c)+c,d);
writeln(d);
б) c:=2;
d:=0;
Q(sqr(c)+с,d);
writeln(d);
в) c:=2; d:=0;
R(sqr(c)+c,d);
writeln(d);
№10. Определить, что будет выдано на экран в результате выполнения следующей программы:
Type
vect=array [1..2] of real;
Var
a:vect;
i:integer;
procedure R(var k:integer; var x:real);
begin
k:=2;
x:=0;
end;
Begin
a[1]:=1;
a[2]:=2;
i:=1;
R(i,a[i]);
Writeln(a[1],a[2])
End.
Напишем структурную схему к программе задания №140 для того, чтобы показать, как в схемах оформляются процедуры и обращения к ним:
СТРУКТУРНАЯ СХЕМА
ГЛАВНОЙ ПРОГРАММЫ
№11. Что будет выдано на экран следующей программой:
Var
a,b,c,d:integer;
procedure P(var b:integer; c:integer);
Var
d:integer;
begin
a:=5;
b:=6;
c:=7;
d:=8;
writeln(a,b,c,d)
end;
Begin
a:=1;
b:=2;
c:=3;
d:=4;
P(a,b);
Writeln(a,b,c,d)
End.
№12. Выполнить задание №4 с использованием процедур.
№13. Есть процедура, вычисляющая сумму элементов вектора Х:
тип описывается в главной программе
Procedure KR(X:MAS;N:integer;var S:real);
var
i:integer;
begin
S:=0;
For i:=1 to N do
s:=s+x[i]
end; {KR}
Составить программу с использованием описанной выше процедуры для нахождения суммы элементов одномерного вектора Y, в котором 10 элементов, а также определить значение величины
№14. Пусть элементами круга являются: радиус (первый элемент) и диаметр (второй элемент). Составить подпрограмму, которая по номеру N одного из элементов и его значению вычисляла бы площадь круга (процедуру и функцию).
№15. Вычислить с использованием процедур и функций (два варианта) значение выражения:
№16. Cоставить программу для вычисления величины
В программе использовать процедуру.
№17. Составить подпрограмму, которая вычисляла бы сумму элементов некоторого столбца матрицы Аразмером[NxM].C ее помощью вычислить сумму элементов пятого столбца матрицыРразмером[12x15]и 10 столбца этой же матрицы (задачу решить двумя способами: с помощью процедур и функций).
№18. Дана матрица 8х8, отображающая содержимое шахматной доски: 0 - нет фигуры, 1 - черные фигуры (их более 1), 2 - белая ладья (одна). Королей нет. Составить программу с использованием процедуры для определения количества черных фигур, стоящих под боем у белой ладьи.
№19. Для трех двухмерных массивов V(5,6), Y(7,3), F(4,10)найти средние арифметические значения элементов во всех строках всех массивов.
№20. Для трех двухмерных массивов A(6,5), B(4,7), C(7,4)найти средние арифметические значения элементов во всех столбцах всех массивов.
№21. Для трех двухмерных массивов D(3,9), E(5,5), F(6,10) найти средние арифметические значения элементов каждого массива.
№22. Для трех двухмерных массивов G(4,4), H(7,7), J(6,6)найти среднее арифметическое значение элементов всех массивов.
№23. Что будет на экране в результате выполнения следующих программ:
a) Uses crt;
Var
i,j:integer;
Function a(f:integer):integer;
function b(d:integer):integer;
begin
if d>5 then b:=10*d;
end;
begin
inc(f);
a:=b(i);
end;
Begin
clrscr;
Read(i);
Write(a(i),' ',i);
Readkey
End.
при 1) i=5;
2) i=10;
3) i=0 ?
б) Uses crt;
Var
i,j:integer;
Function a(f:integer):integer;
function b(d:integer):integer;
begin
if d>5 then b:=10 mod d
else b:=d div 3
end;
begin
inc(i);
f:=b(i);
a:=f-i
end;
Begin
clrscr;
Read(i);
Writeln(a(i),' ',i);
i:=a(i);
Writeln(a(i),' ',i);
Readkey
End.
при 1) i=5;
2) i=10;
3) i=0 ?
№24. Покажите, что выведет на экран следующая программа:
Program sample;
Var
x,a,variant:integer;
function recurs(z:integer):integer;
begin
if z<=5 then
recurs:=3
else
if z>=10 then
recurs:=10
else
recurs:=2*recurs(z-1)
end; {recurs}
Begin
Readln(variant);
x:=recurs(variant);
Writeln('x=',x);
x:=x-3;
x:=recurs(x);
Writeln('x=',x);
x:=x+variant;
a:=recurs(x);
Writeln('a=',a)
End.
при 1) variant=10;
2) variant=5;
3) variant=7.
№25. Перепишите заново функцию recurs из №24, не пользуясь рекурсией.
№26. Вместо функции recursиз №24 напишите эквивалентную рекурсивную процедуру. В обращении к этой процедуре должно быть два параметра, один из которых будет представлять результирующее значение (аналог результата функцииrecurs).
№27. Имеется следующая рекурсивная функция:
function testrec(number:integer):integer;
begin
if number=0 then
testrec:=0
else
testrec:=testrec(number-1)
end; {testrec}
а) Определите результаты трех вызовов testrec:
1) z:=testrec(3);
2) z:=testrec(4);
3) z:=testrec(6)
б) Какую математическую функцию реализует подпрограмма testrec?
в) Перепишите программу testrec, чтобы она делала то же самое, но без использования рекурсии.