Задание 1.Определите, что вычисляется в алгоритме. Составьте программу по данной блок-схеме.
Начало
n
S = 0
S
Конец
S = S + 1/i
i= 1, n, 1
Рис. 4. Цикл с параметром
Задание 2.Составьте программу для вычисления суммы ряда
1 + 1/3 + 1/5 + 1/7 + …
Programabc;
vars, t:real;
i,n:integer;
Begin
write('введите n');
readln(n);
s:=0;
fori:=1 ton do
Begin
t:=2*i-1;
s:=s+1/t;
end;
write('сумма равна ',s);
readln;
end.
Задание 3.Составьте программу для вычисления факториала
(n! = 1·2·3·…·n).
Programabc;
varn, i, k:real;
Begin
write('введите n');
readln(n);
ifn=0 thenwriteln('0!=1') else
ifn<0 thenwriteln('факториал определён только для неотрицательных чисел') else
i:=0;
k:=1;
Repeat
k:=k*(i+1);
i:=i+1;
untili=n;
write(n,'!=',k);
readln;
end.
Задание 4.Составьте программу, которая выводит на экран таблицу степеней двойки от 0 до 10.
programstepen;
Var
i: integer;
Begin
fori := 0 to10 do
writeln('2^',i,' ',exp(ln(2)*i));
end.
Задание 5.Составьте программу, которая выводит на экран таблицу степеней для произвольного числа.
programstepen;
Var
i,s,n,t: integer;
Begin
writeln('введите число, начальную и конечную степени');
readln(s,t,n);
fori:=t ton do
writeln(s,'^',i,' ',exp(ln(s)*i));
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.
Выводит число, на 1 большее квадрата x
Задание 8.Составьте программу, которая выводит таблицу значений функции y = 2x2 + 3x – 9 в диапазоне от – 3 до 3 с шагом 0,5.
Рекомендуемый вид экрана:
---------------
Х | У
---------------
– 3 | 0
– 2,5 | – 4
– 2 | – 7
… | …
3 | 18
---------------
Доработайте программу, чтобы диапазон и шаг можно было вводить при запуске программы.
Programprogram;
var a,b,dx,y:real;
Begin
Repeat
writeln('Введите начало и конец диапазона:');
readln(a,b);
until a<=b;
writeln('Введите шаг: ');
readln(dx);
while a<=b do
Begin
y:=4*a+3*a-9;
writeln(a:4:2,y:9:2);
a:=a+dx;
end;
end.
Задание 9.Составьте программу, в которой необходимо отгадать зашифрованное слово (например, КОБЯЛО). Пользователь вводит ответ до тех пор, пока не отгадает слово из этих букв. Как только введено правильное слово, программа завершается, и на экран выводится сообщение «Вы угадали с N попытки!».
ProgramExample;
consta = 'КОРОВА';
constb = 'ОВКОРА';
Varc:string;
n:integer;
Begin
WriteLn(b,' Какое слово загадано?');
Repeat
ReadLn(c);
n:= n+1;
Untilc=a;
WriteLn('Вы угадали c ',n,' попытки!');
End.
Задание 10. Составьте программу, которая находит все простые числа в диапазоне от A до B.
uses crt;
var a,b,i,s,j:integer;
Begin
write('Введите A=');
readln(a);
Repeat
write('Введите B=');
readln(b);
until b>a;
writeln('Простые числа в диапазоне [',a,';',b,']');
for i:=a to b do
Begin
s:=0;
for j:=2 to i-1 do
if i mod j=0 then inc(s);
if (s=0) then write(i,' ');
end;
end.
Задание 11. Составьте программу, которая находит все совершенные числа в диапазоне от A до B.
programprimer11;
usescrt;
vars,n,i,A,B:integer;
Begin
clrscr;
writeln ('Введите целые числа [A,B]: ');
readln (A,B);
forn:=A toB do
Begin
s:=0;
fori:=1 ton do
if(n modi=0) and(n>i) then begins:=s+i;
end;
if((n divi)=(n/i)) and(s=n) then
writeln('Совершенное число: ',n,' ');
read;
end;
readln;
end.
Лабораторная работа № 4. Одномерные массивы
Задание 1.В алгоритме вычисления суммы и количества положительных элементов заполните пустые места.
Начало
n
sum:=0
i
Конец
i=1, n, 1
count:=0
inc(count)
sum, count
i=1, n, 1
sum:=sum+a[i]
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.
Задание 3.Составьте программу, которая находит максимальный и минимальный элементы в одномерном массиве и их порядковые номера.
const n = 10;
Var
a:array[1..n]of integer;
i,max,min,e,y:integer;
Begin
randomize;
for i:=1 to n do
a[i]:=random(101)+1;
for i:=1 to n do
write(a[i],' ');
writeln;
max:=a[1]; min:=a[1];
for i:=1 to n do begin
if a[i]>max then begin max:=a[i]; e:=i;end;
if a[i]<min then begin min:=a[i]; y:=i;end;
end;
writeln('Элемент №',e,' - максимальный, он равен = ',max);
writeln('Элемент №',y,' - минимальный, он равен = ',min);
end.
Задание 4.Составьте программу, в которой меняются местами максимальный и минимальный элементы.
programprimer4;
Var
A: array[1..10] ofinteger;
i,p,m,m1,p1: integer;
Begin
randomize;
p:=1;
fori := 1 to10 do
Begin
A[i] := random(100)-50;
write (a[i]:3);
ifa[i]>p then
Begin
p:=A[i];
m:=i;
end;
ifa[i]<p1 then
Begin
p1:=A[i];
m1:=i;
end;
end;
writeln;
A[m]:=p1;
A[m1]:=p;
fori := 1 to10 do
write (a[i]:3);
readln;
end.
Задание 5.Установите правильный порядок команд в программе, и определите, что в ней вычисляется.
Program Example8;
Uses crt;
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);
Readkey
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.Составить программу, которая преобразует одномерный массив таким образом, чтобы сначала шли отрицательные, затем нулевые и положительные элементы.
Programprimer7;
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;
readln;
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); { запись в файл 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.
Задание 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.
Programzadanie;
Varf: text;
n,i:integer;
a:array[1..100] ofinteger;
Begin
Assign(f, 'C:\PABCWork.NET\date.txt');
Rewrite(f);
write('введите n= ');
readln(n);
fori:= 1 ton do
begina[i]:= 5+random(25);
Writeln(f, a[i]);
end;
Close(f);
End.
Задание 5.Разработайте программу, которая считывает информацию из файла date.txt, находит максимальное число и общую сумму. Результат запишите в файл result.txt.
Programprogram;
UsesCRT;
Varf,z: Text;
a,max,S: integer;
Begin
CLRSCR;
Assign(f, 'C:\PABCWork.NET\date.txt');
Reset(f);
Assign(z,' C:\PABCWork.NET\result.txt');
Rewrite(z);
max:=a;
Close(f);
Assign(f, 'C:\PABCWork.NET\date.txt');
Reset(f);
While noteof(f) do
Begin
ReadLn(f,a);
ifa>max thenmax:=a;
Inc(S,a);
End;
Write(z,'Сумма: ',S,' Максимальное число: ',max);
WriteLn('Сумма: ',S,' Максимальное число: ',max);
Close(f);
Close(z);
ReadLn;
End.
Лабораторная работа № 9. Записи
Задание 1.Наберите текст программы и познакомьтесь с типом данных Record. Определите, что выполняется в программе.
В программе содержится много повторяющихся данных. Для её упрощения воспользуйтесь оператором присоединения With.
For i:= 1 to n do Begin
With Tbl[i] do Begin
Write('FIO:'); Readln (FAM);
Write('Ozenki: ');
Readln(B1, B2, B3, B4, B5);
End;
End;
Writeln('Sredniy ball');
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;
Задание 2.Доработайте программу, чтобы данные о студентах и их средние баллы записывались в файл.
Type
STR = Record
Fam: string;
B1, B2, B3, B4, B5: 2..5;
SB: real;
End;
Var
Tbl: array[1..50] ofstr;
i, n: integer;
k: text;
Begin
assign(k, 'D:\sredniy ball.txt');
rewrite(k);
Write('n=');
Readln(n);
fori := 1 ton do
withTbl[i] do
Begin
Write('FIO:'); Readln(FAM);
Write('Ozenki: ');
Readln(B1, B2, B3, B4, B5);
end;
Writeln('Sredniy ball');
fori := 1 ton do
Begin
withTbl[i] do
Begin
SB := (B1 + B2 + B3 + B4 + B5) / 5;
writeln(FAM, ' – ', SB:5:2);
Write(k, FAM, ' – ', SB:5:2);
end;
end;
close(k);
end.
Лабораторная работа № 10. Подпрограммы
Задание 1. Исправьте ошибки в программе.
FunctionV(R, H: real): real;
Begin
V:= pi*sqr(R)*H;
End;
Varx,a,b: real;
Begin
a:= V(3,4);
b:= V(2,4);
Writeln('V1=', a);
Writeln('V2=', b);
x:= a - b;
Writeln('V1 – V2=', x:4:1);
End.
Задание 2. Посмотрите пример функции вычисляющей факториал числа. В основной программе посчитайте выражение y = (m! + k!)/s!
Var
m,k,s:integer;
y:real;
Functionfactorial(n: byte): longint;
Begin
if(n = 0) or(n = 1) thenfactorial:= 1
elsefactorial:= 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.
vara,b,logarifm:real;
Begin
writeln('введите основание');
readln(b);
writeln('введите показатель логарифма');
readln(a);
logarifm:=ln(a)/ln(b);
writeln('log=',logarifm);
end.
Задание 4. Составьте функцию для вычисления площади кольца.
Рис. 7. Кольцо
varr1, r2: integer;
s: real;
Functionploshad(r1, r2: integer) : real;
Begin
ploshad:= pi*(r1*r1-r2*r2)
End;
Begin
writeln('Введите внешний радиус кольца');
readln(r1);
writeln('Введите внутренний радиус кольца');
readln(r2);
s:=ploshad(r1, r2);
writeln('Площадь кольца равна', s);
readln;
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. Доработайте программу, чтобы цвет фона и цвет текста вводились пользователем при запуске программы.
programptimer6;
UsesCrt;
ProcedureColor(x, y: word);
Begin
TextColor(x);
TextBackGround(y);
End;
varn,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 с.