Лабораторная работа № 2. Разветвляющиеся алгоритмы. 6
Лабораторная работа № 3. Циклы. 10
Лабораторная работа № 4. Одномерные массивы. 13
Лабораторная работа № 5. Двумерные массивы. 17
Лабораторная работа № 6. Множества 21
Лабораторная работа № 7. Строки. 23
Лабораторная работа № 8. Файлы. 25
Лабораторная работа № 9. Записи. 27
Лабораторная работа № 10. Подпрограммы. 29
Библиографический список. 31
Лабораторная работа № 1. Линейные алгоритмы
Задание 1. Запустите среду программирования Pascal и наберите следующий код программы:
program example;
Uses Crt;
Var R, S, L: real;
Begin
Clrscr;
Write('R=');
Readln(R);
S:= pi*sqr(R);
L:= 2*pi*R;
Write('S=', S);
Write(' L=',L);
Readln;
End.
вычисляется в программе-S, L окружности
Задание 2.Определите, что появится на экране после выполнения команд:
a) x:=10;
y:=3;
z:=x/y;
Writeln(x, ’:’, y,’=’, z:3:1);
program example;
Uses Crt;
Var x, y, z: real;
Begin
write(x,y);
x:=10;
y:=3;
z:=x/y;
Readln(x,y);
Writeln(x, ':', y,'=', z:3:1);
End.
Появится:
10:3=3,3
b) x:= 9 mod 2;
y:= 9 div 2;
Writeln(‘Целая часть от деления 9 на 2 равна’, y);
Writeln(‘Остаток от деления 9 на 2 равен’, x);
Целая часть от деления на 2 равна 4
Остаток от деления 9 на 2 равен 1
Задание 3.Установите правильный порядок команд в программе, вычисляющей объем параллелепипеда.
4 Begin
7 V:=a*b*h;
1 Program Example1;
2 Uses Crt;
9 end.
8 Writeln(‘V=’,V:5:2);
3 Var h, a, b: integer;
V: real;
6 Write(‘a=’); Readln(a);
Write(‘b=’); Readln(b);
Write(‘h=’); Readln(h);
5 Writeln(‘Вычисление объема параллелепипеда’);
Задание 4.Составьте программу по заданной блок-схеме.
Начало
a, b
S = a + b
P = a · b
S, P
Конец
Рис. 1. Линейный алгоритм
program example;
Uses Crt;
Var a, b: integer;
S, P: real;
Begin
Write('a='); Readln(a);
Write('b='); Readln(b);
S:=a+b;
P:=a*b;
Writeln('S=',S:4:2);
Writeln('P=',P:4:2);
End.
Задание 5.Запишите следующие математические выражения на языке Pascal:
a) y = 2x2 + ex; y=2*sqr(x)+exp(x);
b) z = |tg(5x) – 2x|; z=abs(sin(5x)/cos(5x)-2*x);
c) a = b10; a=power(b,10);
d) y = log5 (3x-2); y=ln(3*x-2)/ln(5);
e) y = . y=sqrt(5*x).
Задание 6.Составьте программу для вычисления выражения у=10log2(x2+2).
Program example;
uses crt;
var x,y: real;
begin
write(‘введите х’);
readln(x);
y:=10*(ln(x*x+2)/ln(2));
writeln ('y=',y);
end.
Задание 7.Составьте программу для вычисления синуса угла, заданного в градусах.
Programexample;
usescrt;
varx,y: real;
Begin
write('введите градусную меру угла');
readln(x);
y:=sin(x*pi/180);
writeln ('y=',y);
end.
Задание 8.Составьте программу, которая переводит величину, заданную в минутах в величину, выраженную в часах и минутах.
Например, 255 мин. = 4 ч. 15 мин.
Programexample;
usescrt;
varx,y,z: integer;
Begin
write('введите минуты');
readln(x);
y:=x div60;
z:=x mod60;
writeln(y,'часов',z,'минут');
readln;
end.
Лабораторная работа № 2. Разветвляющиеся алгоритмы
Задание 1.Составьте блок-схему к следующей программе:
Program Example2;
Uses Crt;
Var x, y: integer;
Begin
Clrscr;
Writeln (‘Введите число’);
Readln(x);
y:= x mod 2;
if y=0 then writeln(‘число ’, х, ’ – четное’)
else writeln(‘число’, х, ’ – нечетное’);
начало
End.
Ввод х
y= x mod 2
У=0
данет
конец
Вывод
Число х четное
Вывод
число х нечетное
Задание 2.Установите правильный порядок выполнения команд в программе.
1 Program Example3;
5 Writeln(‘Введите два числа’);
2 Uses Crt;
6 Readln(a, b);
8 if a = b then Writeln(a, ‘=’, b) else Writeln(a, ‘<’, b);
3 Var a, b: integer;
7 if a > b then Writeln(a, ‘>’, b) else
4 Begin
9 End.
Задание 3.В алгоритме для вычисления значения функции y заполните пустые места.
,
Да
Нет
Нет
Да
Начало
х
У=
Вывод у
Конец
х<=-2
х<=-2
Рис. 2. Алгоритм вычисления значения функции
Задание 4.Разработайте программу для вычисления значения функции
Program E;
Uses Crt;
Var x, y : real;
Begin
Writeln('Введите x');
Readln(x);
If x<=-1 then y:=-ln(abs(x))+5 else if x<=1then y:=sqr(x)-1 else y:=-ln(abs(x));
Writeln('y=', y);
End.
Задание 5.Составьте программу по заданной блок-схеме.
Начало
a, b, c
Конец
a≤0 или b≤0 или c≤0
Длины сторон треугольника должны быть положительные
a+b>c и a+c>b и b+c>a
Нет
Да
Да
Нет
Со сторонами a, b, c можно составить треугольник
Со сторонами a, b, c нельзя составить треугольник
Рис. 3. Разветвляющийся алгоритм
Доработайте программу, чтобы в ней вычислялась площадь треугольника по формуле Герона ( , ).
Program abc;
Var a, b, c: real;
P,S: real;
Begin
Writeln('введите a, b, c ');
read(a,b,c);
If (a+b>c) and (b+c>a) and (a+c>b) and (a>0) and (b>0) and (c>0) then
Begin
P:=(a+b+c)/2;
S:=sqrt(p*(p-a)*(p-b)*(p-c));
writeln('S= ', s:3:2);
end
else
Writeln('со сторонами a b c нельзя составить треугольник');
readln;
end.
Задание 6.Укажите правильный порядок команд в программе.
1 ProgramExample4;
2 Uses Crt;
6 Readln(x);
8 else writeln(‘такой операции не существует’);
9 End;
10 End.
7 Case x of
‘+’: writeln(‘сложение’);
‘-‘: writeln(‘вычитание’);
‘*’: writeln(‘умножение’);
‘/’: writeln(‘деление’)
3 Var x: char;
4 Begin
5 Writeln(‘Введите символ арифметической операции’);
Лабораторная работа № 3. Циклы
Задание 1.Определите, что вычисляется в алгоритме. Составьте программу по данной блок-схеме.
Начало
n
S = 0
S
Конец
S = S + 1/i
i= 1, n, 1
Рис. 4. Цикл с параметром
Вычисляется сумма ряда 1 + 1/2 + 1/3 + 1/4 + ….
var n, i: integer;
s:real;
begin
writeln('введите количество чисел');
readln(n);
s:=0;
for i:=1 to n do begin
s:=s+1/i;
end;
writeln('Сумма данного ряда чисел s= ',s:5:5);
end.
Задание 2.Составьте программу для вычисления суммы ряда
1 + 1/3 + 1/5 + 1/7 + …
var n, i: integer;
s:real;
begin
writeln('введите количество чисел ');
readln(n);
s:=0;
i:=1;
while i<= n do begin
s:=s+1/i;
i:=i+2;
end;
writeln('Сумма данного ряда чисел s= ',s:5:5);
end.
Задание 3.Составьте программу для вычисления факториала
(n! = 1·2·3·…·n).
var n, i: integer;
f:real;
begin
writeln('Введите число');
readln(n);
f:=1;
for i:=1 to n do begin
f:=f*i;
end;
writeln(' факториал данного числа n!= ',f);
end.
Задание 4.Составьте программу, которая выводит на экран таблицу степеней двойки от 0 до 10.
var n, i: integer;
f:real;
begin
for i:=0 to 10 do begin
writeln('2 в степени ',i,'= ', power(2,i) );
end;
end.
Задание 5.Составьте программу, которая выводит на экран таблицу степеней для произвольного числа.
var n, i: integer;
f:real;
begin
writeln('введите число ');
readln(f);
for i:=0 to 10 do begin
writeln(' ',f, ' в степени ',i,'= ', power(f,i) );
end;
end.
Задание 6.Определите, что вычисляется в программе.
Program Example5;
Uses Crt ;
Var n, m: integer ;
Begin
Clrscr;
Writeln ('Введитедвачисла');
Readln (n, m);
While m<>n do
Begin
if m > n then m:=m-n else n:=n-m;
End;
Writeln (m) ;
End.
Вычисляется наибольший общий делитель.
Задание 7.Определите, что вычисляется в программе, и составьте к ней блок-схему.
Program Example6;
Uses Crt ;
Var x, y: real ;
Begin
Clrscr;
x:= 1;
While x <= 10 do
Begin
y:= sqr(x) + 1;
Writeln(x:5:1, y:10:1);
x:= x+0.5;
End;
End.
В программе составляется таблица значений уравнения: y=x2+1 , шаг 0
начало
Х=1
x>=10
конец
y= x2 +1
x:= x+0.5
Вывод у
Задание 8.Составьте программу, которая выводит таблицу значений функции y = 2x2 + 3x – 9 в диапазоне от – 3 до 3 с шагом 0,5.
Рекомендуемый вид экрана:
---------------
Х | У
---------------
– 3 | 0
– 2,5 | – 4
– 2 | – 7
… | …
3 | 18
---------------
Доработайте программу, чтобы диапазон и шаг можно было вводить при запуске программы.
Var x, y: real ;
a,z,k: real;
Begin
writeln('введите интервал переменной ');
readln(a,z);
writeln('введите шаг переменной');
readln(k);
x:= a;
writeln(' X | Y ');
writeln('_______________________');
writeln;
While x <= z do
Begin
y:= 2*sqr(x) + 3*x -9;
Writeln(x:5:1,' | ', y:10:1);
x:= x+k;
End;
End.
Задание 9.Составьте программу, в которой необходимо отгадать зашифрованное слово (например, КОБЯЛО). Пользователь вводит ответ до тех пор, пока не отгадает слово из этих букв. Как только введено правильное слово, программа завершается, и на экран выводится сообщение «Вы угадали с N попытки!».
uses crt;
var
a:string;
n:integer;
begin
while a<>'солнышко' do
begin
readln(a);
n:=n+1;
end;
writeln('Вы угадали с ',n,' попытки!');
end.
Задание 10. Составьте программу, которая находит все простые числа в диапазоне от A до B.
var
i,j,f:integer;
begin
write i,j
for i:=2 to 40 do
begin
f:=0;
for j:=2 to trunc(sqrt(i)) do
if i mod j=0 then f:=1; {f-ложно}
if f=0 then write(i,' ');
end;
end.
Задание 11. Составьте программу, которая находит все совершенные числа в диапазоне от A до B.
var d,n,m,i,sum:integer;
begin
writeln('начало диапазона');
read(n);
writeln('конец диапазона');
read(m);
Writeln ('совершенные числа:');
for d:= n to m do
begin
sum:=0;
for i:=1 to (d div 2) do
if d mod i =0 then sum:=sum+i;
if sum=d then writeln('совершенное','=',d);
end;
end.
Лабораторная работа № 4. Одномерные массивы
Задание 1.В алгоритме вычисления суммы и количества положительных элементов заполните пустые места.
Начало
n
S=o
a[i]
Конец
l=1, n, 1
K=0
S=S+ a[i]
Вывод S,K
I=1,n,1
K=K+1
a[i]>0
Да
Нет
Рис. 5. Одномерный массив
Задание 2.Составьте блок-схему к следующей программе:
Program Example7;
Uses crt;
Var a: array[1..100] of integer;
i, n, max: integer;
Begin
Clrscr;
Write('n=');
Readln(n);
for i:=1 to n do Begin
Write('a[',i,']=');
Readln(a[i]);
End;
max:=a[1];
for i:=2 to n do if a[i]>max then max:=a[i];
Writeln('max=',max);
End.
начало
Ввод n
Вывод a[i]=
i=1, n, 1
i=1, n, 1
max = a[1]
a[i]>max
max=
данет
max= a[i]
конец
Задание 3.Составьте программу, которая находит максимальный и минимальный элементы в одномерном массиве и их порядковые номера.
Var a: array[1..100] of integer;
i, n, max, min, c, b: integer;
Begin
Write('n=');
Readln(n);
for i:=1 to n do Begin
Write('a[',i,']=');
Readln(a[i]);
End;
max:=a[1];
min:=a[1];
for i:=2 to n do begin
if a[i]>max then begin
max:=a[i];
c:=i;
end;
if a[i]<min then begin
min:=a[i];
b:=i;
end;
end;
Writeln('max=',max, ' его порядковый номер = ', c);
Writeln('min=',min, ' его порядковый номер = ', b);
End.
Задание 4.Составьте программу, в которой меняются местами максимальный и минимальный элементы.
Var a: array[1..100] of integer;
i, n, max, min, c, b: integer;
Begin
Clrscr;
Write('n=');
Readln(n);
for i:=1 to n do Begin
Write('a[',i,']=');
Readln(a[i]);
End;
writeln;
max:=a[1];
min:=a[1];
for i:=2 to n do begin
if a[i]>max then begin
max:=a[i];
c:=i;
end;
if a[i]<min then begin
min:=a[i];
b:=i;
end;
end;
for i:=1 to n do Begin
if i=c then a[i]:=min else if i=b then a[i]:=max else a[i]:=a[i];
Writeln('a[',i,']=', a[i]);
End;
End.
Задание 5.Установите правильный порядок команд в программе, и определите, что в ней вычисляется.
3 Var a, b:array[1..100] of integer;
i, n, k: integer;
8 for i:=1 to n do
if a[i] < 0 then Begin
k:= k+1;
b[k]:= i;
End;
10 Readkey
11 End.
9 for i:= 1 to k do Write(b[i]:4);
2 Uses crt;
7 for i:= 1 to n do Begin
Write('a[', i, ']=');
Readln(a[i]);
End;
1 Program Example8;
4 Begin
5 Write('n=');
6 Readln(n);
k:= 0;
По количеству отрицательных элементов заданного массива составляется новый массив, элементы которого являются порядковыми номерами отрицательных элементов первоначального массива.
Var a, b:array[1..100] of integer;
i, n, k: integer;
Begin
Write('n=');
Readln(n);
k:= 0;
for i:= 1 to n do Begin
Write('a[', i, ']=');
Readln(a[i]);
End;
for i:=1 to n do
if a[i] < 0 then Begin
k:= k+1;
b[k]:= i;
End;
for i:= 1 to k do Write(b[i]:4);
End.
Задание 6.Определите, что выполняется в программе.
Program Example9;
Uses crt;
Var a: array[1..100] of integer;
i, j, n, m:integer;
Begin
Clrscr;
Write('n='); Readln(n);
for i:= 1 to n do Begin
Write('a[', i, ']=');
Readln(a[i]);
End;
for j:= 1 to n-1 do
for i:= 1 to n-j do Begin
if a[i] < a[i+1] then Begin
m:= a[i];
a[i]:= a[i+1];
a[i+1]:= m;
End;
End;
for i:= 1 to n do Write(a[i]:5);
End.
Программа сортирует элементы матрицы по убыванию.
Задание 7.Составить программу, которая преобразует одномерный массив таким образом, чтобы сначала шли отрицательные, затем нулевые и положительные элементы.
Vara: array[1..100] ofinteger;
i, n:integer;
Begin
Write('n='); Readln(n);
fori:= 1 ton do Begin
Write('a[', i, ']=');
Readln(a[i]);
End;
fori:= 1 ton do begin
ifa[i] < 0 thenwrite(' ',a[i]);
end;
fori:= 1 ton do begin
ifa[i] = 0 thenwrite(' ',a[i]);
end;
fori:= 1 ton do begin
ifa[i] > 0 thenwrite(' ',a[i]);
end;
End.
Лабораторная работа № 5. Двумерные массивы
Задание 1.Заполните пустые места в алгоритме поиска минимального элемента в двумерном массиве.
a[i,j]<min
min=a[1,1]
Начало
n, m
a[i, j]
Конец
i=1, n, 1
min
Да
Нет
j=1, m, 1
i=1, n, 1
j=1, m, 1
min=a[1,1]
min=a[i,j]
Рис. 6. Двумерный массив
Задание 2.Составьте блок-схему к программе, вычисляющей произведение элементов двумерного массива.
начало
Program Example10;
Uses crt;
N, m
Var a: array[1..100, 1..100] of integer;
i, j, n, m: integer;
i= 1,n,1
P: longint;
Begin
j= 1,m,1
Clrscr;
Write('n='); Readln(n);
a[i]
Write('m='); Readln(m);
P=1
for i:= 1 to n do
for j:= 1 to m do Begin
Write('a[', i, j, ']=');
i= 1,n
Readln(a[i, j]);
End;
j= 1,m
P:= 1;
fori:=1 to n do
P=P*a[i]
for j:= 1 to m do P:= P *a[i, j];
Write(‘P=’, P);
End.
конец
P
Доработайте программу, чтобы на экран выводился массив в виде матрицы.
Var a: array[1..100, 1..100] of integer;
i, j, n, m: integer;
P: longint;
Begin
Write('n='); Readln(n);
Write('m='); Readln(m);
for i:=1 to n do
for j:=1 to m do
begin
read(a[i,j]);
end;
for i:=1 to n do
begin
for j:=1 to m do
write(a[i,j]:5);
writeln;
End;
P:= 1;
for i:=1 to n do
for j:= 1 to m do P:= P *a[i, j];
Write('P= ', P);
End.
Задание 3.Составьте программу для поиска максимального элемента и его индексов.
var a:array[1..20,1..20] of integer;
max,i,j,nmax,mmax:integer;
begin
mmax:=1;
nmax:=1;
for i:= 1 to 3 do begin
for j:= 1 to 3 do
readln(a[i,j]);
end;
for i:= 1 to 3 do begin
for j:= 1 to 3 do
writeln;
max:=a[1,1];
end;
for i:= 2 to 3 do
begin for j:= 1 to 3 do
if a[i,j]>max then begin
max:=a[i,j];
nmax:=i;
mmax:=j;
end;
end;
writeln('max= ',max);
writeln('nmax= ',nmax);
write('mmax= ',mmax);
End.
Задание 4.Заполните пустые места в программе, вычисляющей сумму элементов, расположенных на главной диагонали.
Program Example11;
Uses crt;
Var a: array[1..100, 1..100] of integer;
i, j, n, m, S: integer;
Begin
Clrscr;
Write('n='); Readln(n);
for i:=1 to n do
for j:=1 to n do
begin
Write('a[', i, j,']=');
Readln(a[i, j]);
end;
S:= 0;
for i:=1 to n do
for j:=1 to n do if
i=j
then S:=S+a[i,j];
for i:= 1 to n do
Begin
for j:= 1 to n do
Write(a[i, j]:5);
Writeln;
End;
Writeln('S=', S);
End.
Доработайте программу, чтобы считалась сумма элементов, расположенных на побочной диагонали.
varmas:array[1..100,1..100]ofinteger;
i,j,n,sp:integer;
Begin
writeln('n=');
readln(n);
sp:=0;
randomize;
fori:=1 ton do
forj:=1 ton do
mas[i,j]:=random(50);
fori:=1 ton do begin
sp := sp + mas[i,N-i+1];
end;
fori:=1 ton do begin
forj:=1 ton do
write (mas[i,j]);
writeln;
end;
writeln(sp);
end.
Задание 5.Составьте программу для поиска максимального элемента на побочной диагонали. Для заполнения массива воспользуйтесь датчиком случайных чисел.
Var a: array[1..100 , 1..100] of integer;
i, j, n, m, max, c, b: integer;
Begin
Write('n=');
Readln(n);
Write('m=');
Readln(m);
for i:=1 to n do
for j:=1 to m do
Begin
a[i,j]:=random(100);
write(a[i,j], ' ');
End;
writeln;
Writeln('Матрица :');
For i:=1 to n do
Begin
For j:=1 to m do
Write(A[i,j]:5);
Writeln;
end;
Writeln;
max:=a[1,1];
for i:=2 to n do
for j:=1 to m do
begin
if i=j then begin
if a[i,j]>max then begin
max:=a[i,j];
c:=i;
b:=j;
end;
end;
end;
Writeln('max=',max, ' его индексы : ', c, ',', b);
Задание 6.Составьте программу для поиска минимального элемента среди элементов, расположенных выше главной диагонали.
Var a: array[1..100 , 1..100] of integer;
i, j, n, m, min, c, b: integer;
Begin
Write('n=');
Readln(n);
Write('m=');
Readln(m);
for i:=1 to n do
for j:=1 to m do
Begin
a[i,j]:=random(100);
write(a[i,j], ' ');
End;
writeln;
Writeln('Матрица :');
For i:=1 to n do
Begin
For j:=1 to m do
Write(A[i,j]:5);
Writeln;
end;
Writeln;
min:=a[1,1];
c:=1;
b:=1;
for i:=1 to n do
for j:=1 to m do
begin
if i<j then begin
if a[i,j]<min then begin
min:=a[i,j];
c:=i;
b:=j;
end;
end;
end;
Writeln('min=',min, ' его индексы : ', c, ',', b);
End.
Задание 7.Составьте программу, которая подсчитывает количество строк в двумерном массиве, содержащих отрицательные элементы.
Var a: array[1..100 , 1..100] of integer;
i, j, n, m, c, S, q: integer;
Begin
Write('n=');
Readln(n);
Write('m=');
Readln(m);
for i:=1 to n do
for j:=1 to m do
Begin
a[i,j]:=-50+random(100);
write(a[i,j], ' ');
End;
writeln;
Writeln('матрица :');
For i:=1 to n do
Begin
For j:=1 to m do
Write(A[i,j]:5);
Writeln;
end;
Writeln;
S:=0;
For i:=1 to n do
begin
For j:=1 to m do begin
if a[i,j]<0 then c:=c+1;
end;
if c>0 then q:=q+1;
end;
writeln('q= ',q);
end.
Задание 8.Составьте программу, которая вычисляет сумму элементов по столбцам.
Var a: array[1..100 , 1..100] of integer;
i, j, n, m, c, S: integer;
Begin
Write('n=');
Readln(n);
Write('m=');
Readln(m);
for i:=1 to n do
for j:=1 to m do
Begin
a[i,j]:=random(100)-50;
write(a[i,j], ' ');
End;
writeln;
Writeln('Матрица :');
For i:=1 to n do
Begin
For j:=1 to m do
Write(A[i,j]:5);
Writeln;
end;
Writeln;
S:=0;
For j:=1 to m do
begin
For i:=1 to n do begin
S:=S+a[i,j];
end;
writeln('Сумма ',j,'столбца = ',S);
S:=0;
end;
end.
Лабораторная работа № 6. Множества
Задание 1.Запишите результаты операций над множествами:
[1, 3,6, 7, 8] + [1, 2, 7, 9]
[1,2,3,6,7,8,9]
[5, 6, 8, 9] * [3, 4, 5, 8, 10]
[5,8,]
[‘a’, ‘b’, ‘c’, ‘d’, ‘e’] – [‘b’, ‘d’, ‘f’, ‘g’]
[‘a’,’c’,’e’]
4 in [1, 2, 3, 4, 5]
true
3 in [1, 2, 5, 7, 9]
false
Задание 2.Правильный порядок команд в программе, объединяющей два множества:
3 Var M, N, L: set of byte;
5 N:= [1, 2, 3, 4, 8]; M:= [3, 4, 5, 6, 8];
8 End.
1 Program Example12;
6 L:= N + M;
4 Begin
2 Uses Crt;
Задание 3.Заполните пустые места в программе, определяющей количество цифр в тексте.
Program ABC;
Uses Crt;
Var G:
Set of
char;
t: string;
i, n, m: byte;
Begin
Clrscr;
G:= ['0' .. '9'];
Writeln('Введите текст ');
Readln(t);
n:=0;
For i:= 1 to Length(t) do Begin
if
T[i] in G
then n:= n+1;
End;
Writeln(n);
Readkey;
End.
Задание 4.Составьте программу, которая заполняет множество нечетными числами от 1 до n (n ≤ 255) и выводит эти числа на экран.
Var A:set of byte;
i,n:integer;
Begin
write('n=');
readln(n);
for i:=1 to n do begin
if i mod 2=1 then
A:=A+[i];
end;
writeln('A',A);
end.
Задание 5.Составьте программу, которая заполняет множество простыми числами от 1 до n (n ≤ 255) и выводит эти числа на экран.
Var A:set of byte;
i,y,j,n:integer;
Begin
write('n=');
readln(n);
for i:=1 to n do begin
y:=0;
for j:=1 to i do
if i mod j=0 then y:=y+1;
if y=2 then A:=A+[i];
end;
writeln('A',A);
end.
Лабораторная работа № 7. Строки
Задание 1.Заполните пустые места в программе, подсчитывающей количество букв «а» в строке.
Program Example12;
Var S: string;
i, k: integer;
Begin
Writeln ('Введитестроку');
Readln (S);
k:=0;
For i:= 1 to length(S) do
if
S[i]=’a’
then
k:=k+1
Writeln('Символ «а» встречается', k, ' раз');
End.
Задание 2.Укажите правильный порядок команд в программе, удаляющей из строки все буквы «о».
9 End.
2 Var S, T: string;
i: integer;
3 Begin
1 Program Example13;
7 if S[i] <>'о' then T:=T+S[i];
8 Writeln (T);
5 T:='';
6 For i:= 1 to length(S) do
4 Writeln ('Введите строку'); Readln (S);
Задание 3.Составьте программу, в которой все буквы «а» заменяются на буквы «о».
Var S: string;
i: integer;
Begin
Writeln ('Введите строку'); Readln (S);
For i:= 1 to length(S) do
if S[i]='a' then
S[i]:='o';
Writeln (S);
end.
Задание 4.Определите, что выполняется в программе.
Program Example14;
Const X = ['0' .. '9'];
Var S, T: string;
i: integer;
Begin
Writeln ('Введитестроку');
Readln (S);
T:= ' ';
For i:= 1 to length(S) do
if not(S[i] in X) then T:= T+S[i];
Writeln(T);
Readln;
End.
Выводим строку, в которой нет цифр
Задание 5.Составьте программу, в которой из строки удаляются все символы, кроме цифр.
ConstX = ['0' .. '9'];
VarS, T: string;
i: integer;
Begin
Writeln ('Введите строку');
Readln (S);
T:= ' ';
Fori:= 1 tolength(S) do
if(S[i] inX) thenT:= T+S[i];
Writeln(T);
Readln;
End.
Задание 6.Составьте программу, в которой из строки удаляются последние три символа.
Const X = ['0' .. '9'];
Var S: string;
i: integer;
Begin
Writeln ('Введите строку');
Readln (S);
i:=Length(S);
Delete(S,i-2,Length(S));
Writeln(S);
End.
Лабораторная работа № 8. Файлы
Задание 1.Определите, что выполняется в программе. В фигурных скобках укажите назначение команд.
Program Example15;
Uses crt;
Var f: text;
st: string;
Begin
Assign(f, 'C:\Example.txt'); {устанавливаем связь файловой переменной с физ. файлом на диске}
Rewrite(f); {открываем файл для записи}
Writeln('Введите текст ');
Read(st);
Write(f, st); {записываем последовательно строки в файл}
Close(f); {заканчиваем работу с файлом, теперь на диске есть файл содержащий введенные нами строки}
End.
Задание 2.Определите, что выполняется в программе и для чего предназначена команда Append?
Program Example16;
Uses crt;
Var f: text;
i, n, x: integer;
Begin
Assign(f, 'C:\Example.txt');
Append(f); { открываем файл для добавления записей в конце файла}
Writeln('Введите количество чисел');
Readln(n);
Writeln('Введите числа');
for i:= 1 to n do Begin
Readln(x);
Write(f, x:4);
End;
Close(f);
End.
Записывается набор чисел в файл 'C:\Example.txt'
Задание 3.Определите, что выполняется в программе. В фигурных скобках запишите назначение команд.
Program Example17;
Uses crt;
Var f: text;
st: string;
Begin
Clrscr;
Assign(f, 'C:\Example.txt');
Reset(f); { открываем файл для чтения}
While not EOF(f) do { пока не конец файла f }
Begin
Readln(f, st); { читаем строку из файла f}
Writeln(st); { выводим на экран}
End;
Close(f);
Readln
End.
Задание 4.Разработайте программу, которая создает файл date.txt и записывает в него n случайных чисел в диапазоне от 5 до 30.
Var f: text;
n,i:integer;
a:array[1..100] of integer;
Begin
Assign(f, 'D:\date.txt');
Rewrite(f);
write('введите n= ');
readln(n);
for i:= 1 to n do
begin a[i]:= 5+random(26);
Write(f, a[i]);
end;
Close(f);
End.
Задание 5.Разработайте программу, которая считывает информацию из файла date.txt, находит максимальное число и общую сумму. Результат запишите в файл result.txt.
Var f,f2: text;
n,n1,max,sum:integer;
Begin
sum:=0;
Assign(f, 'C:\date.txt');
Reset(f);
assign(f2, 'C:\results.txt');
rewrite(f2);
for n:= 5 to 30 do
sum:=sum+n;
max:=n1;
if max<n then max:=n;
write('sum=', sum ,' max=', max);
Write(f2, max , sum);
Close(f);
close(f2);
End.
Лабораторная работа № 9. Записи
Задание 1.Наберите текст программы и познакомьтесь с типом данных Record. Определите, что выполняется в программе.
В программе содержится много повторяющихся данных. Для её упрощения воспользуйтесь оператором присоединения With.
Var Tbl: array[1..50] of str;
i,n: integer;
Begin
Write('n=');
Readln(n);
For i:=1 to n do
With Tbl[i] do Begin
Write('ФИО:'); Readln (FAM);
Write('Оценки: ');
Readln(B1, B2, B3, B4, B5);
End;
Writeln(' средний балл ');
For i:= 1 to n do Begin
With Tbl[i] do Begin
SB:= (B1+B2+B3+B4+B5)/5;
Writeln(FAM,' – ',SB:5:2);
End;
End;
End.
Задание 2.Доработайте программу, чтобы данные о студентах и их средние баллы записывались в файл.
Type STR= Record
Fam: string;
B1, B2, B3, B4, B5: 2..5;
SB: real;
End;
Var Tbl: array[1..50] of str;
i,n: integer;
k:text;
Begin
assign(k,'C:\средний балл.txt');
rewrite(k);
Write('n=');
Readln(n);
For i:=1 to n do
With Tbl[i] do Begin
Write('ФИO:'); Readln (FAM);
Write('Oценки: ');
Readln(B1, B2, B3, B4, B5);
End;
Writeln(Средний балл');
For i:= 1 to n do Begin
With Tbl[i] do Begin
SB:= (B1+B2+B3+B4+B5)/5;
writeln(FAM,' – ',SB:5:2);
Write(k,FAM,' – ',SB:5:2);
close(k);
End;
End;
End.
Лабораторная работа № 10. Подпрограммы
Задание 1. Исправьте ошибки в программе.
Program Example19;
Uses Crt;
Function V(R, H: real): integer; real;
Begin
V:= pi*sqr(R)*H;
End;
Var x: integer; real;
a, b:real;
Begin
a:= V(3,4);
b:= V(2,4);
Writeln('V1=', a:4:2);
Writeln('V2=', b:4:2);
x:= a-b;
Writeln('V1 – V2=', x:4:1);
End.
Задание 2. Посмотрите пример функции вычисляющей факториал числа. В основной программе посчитайте выражение y = (m! + k!)/s!
Function factorial(n: byte): longint;
Begin
if (n = 0) or (n = 1) then factorial:= 1
else factorial:= n * factorial(n - 1);
End;
var
m,k,s:integer;
y:real;
Function factorial(n: byte): longint;
Begin
if (n = 0) or (n = 1) then factorial:= 1
else factorial:= n * factorial(n - 1);
End;
begin
readln(m ,k ,s);
m:=factorial(m);
k:=factorial(k);
s:=factorial(s);
y:= (m + k)/s;
writeln('y= ',y);
end.
Задание 3. Составьте функцию, вычисляющую логарифм с произвольным основанием logab.
var
a,b:integer;
m,k,y:real;
Function logar(n: byte): real;
Begin
if (n < 0) or (n = 0) then logar:= 0
else logar:= ln(n);
End;
begin
readln(a ,b);
m:=logar(a);
k:=logar(b);
y:= m/k;
writeln('y= ',y);
end.
Задание 4. Составьте функцию для вычисления площади кольца.
Рис. 7. Кольцо
const pi=3.14;
var sk,sb,sm:real;
r,Rb:integer;
Function plosh(n: byte): real;
Begin
if (n = 0) then plosh:= 0
else plosh:=pi*sqr(n);
End;
begin
readln(r ,Rb);
sb:=plosh(Rb);
sm:=plosh(r);
sk:=sb-sm;
writeln('sk= ',sk:5:2);
end.
Задание 5. Наберите код программы и посмотрите пример использования процедуры Color.
Program Example20;
Uses Crt;
Procedure Color(x, y: word);
Begin
TextColor(x);
TextBackGround(y);
End;
Begin
Color(1,5);
Write('Hello ');
Color(1,3);
Writeln('student!');
Readln;
End.
Задание 6. Доработайте программу, чтобы цвет фона и цвет текста вводились пользователем при запуске программы.
Uses Crt;
Procedure Color(x, y: word);
Begin
TextColor(x);
TextBackGround(y);
End;
var n,m,k,p:byte;
Begin
read(n,m);
read(k,p);
Color(n,m);
Write('Hello ');
Color(k,p);
Writeln('student!');
Readln;
End.
Библиографический список
1. Златопольский Д. М. Программирование: типовые задачи, алгоритмы, методы / Д. М. Златопольский. – Москва: БИНОМ. Лаборатория знаний, 2007. – 223
2. Информатика: Учебник / Б. В. Соболь, А. Б. Галин, Ю. В. Панов, Е. В. Рашидова, Н. Н. Садовой. – Изд. 3-е, дополн. и перераб. – Ростов н/Д: Феникс, 2007. – 446 с.
3. Окулов С. М. Основы программирования: учебник / С. М. Окулов. – Изд. 5-е, испр. – Москва: БИНОМ. Лаборатория знаний, 2010. – 440 с.
4. Потопахин В. В. Современное программирование с нуля!: учеб. пособие / Потопахин В. – Изд. 2-е, испр. – Москва: ДМК-Пресс, 2011. – 240 с.
5. Рапаков Г. Г. Turbo Pascal для студентов и школьников: учебник / Г. Г. Рапаков, С. Ю. Ржеуцкая. – Санкт-Петербург: БХВ-Петербург, 2007. – 352 с.
6. Фаронов В. В. Turbo Pascal 7.0. Практика программирования: учеб. пособие / В. В. Фаронов. – Москва: Кнорус, 2007. – 416 с.