29. Составить программу, которая по введенной заглавной букве выводит название столиц мира: Москва, Париж, Лондон, Рим.
30. Составить программу, которая выводит меню и при вводе буквы вычисляет соответствующую функцию:
A - Abs x
S - Sin x
C - Cos x
III. ЦИКЛЫ
операторы:
Оператор
Назначение
Синтаксис
For
Цикл
с параметром
For <перем>:=<начальное знач> to <кон.знач> do <оператор>;
Значение переменной изменяется от начального значения к конечному с шагом 1.
For <перем>:=<нач. знач> downto <конеч. знач> do <оператор>;
Значение переменной изменяется от начального значения к конечному с шагом -1
While
Цикл
с предусловием
While <условие> do <оператор>;
Цикл выполняется, пока условие истинно.
Repeat
Until
Цикл
с постусловием
Repeat
<Операторы>;
Until <условие>;
Цикл выполняется, пока условие ложно.
Пример 1.
Вывести квадраты первых десяти натуральных чисел.
Решение:
Program pr1;
Var i, x: integer;
begin
for i:=1 to 10 do begin {перебираем натуральные числа от 1 до 10}
x:=sqr(i); {возводим очередное число в квадрат}
write(x, ' '); {выводим полученное значение}
end;
readln
end.
Результат
1 4 9 16 25 36 49 64 81 100
Пример 2.
Найти сумму 1 + 1/3 + 1/5 +...(N слагаемых).
Решение:
Program pr2;
Var I, N: integer;
S: real;
begin
Write('N='); Readln(N); {вводим количество слагаемых}
S:=0; {обнуляем сумму}
For I:=1 to N do {выполняем цикл N раз, добавляя к сумме по од ному слагаемому}
S:=S+1/(2*I-1);
Writeln('S=',S:5:2); {выводим значение суммы с двумя десятичными знаками}
Readln
end.
Результат:
N=4
S= 1.68
Пример 3.
Дано натуральное число n. Найти сумму S=1+2/3+3/7... (n слагаемых)
Решение:
Program pr3;
var i,b,n:integer;
s:real;
begin
write('Введите n ');
readln(n);
s:=1;
b:=3;
for i:=2 to n do
begin
s:=s+ i/b;
b:=b+4;
end;
writeln('сумма=',s:4:2);
readln;
end.
Результат:
Введите n 5
сумма=2.79
Пример 4.
Дано натуральное число n. Вычислить 31+32+…...+3n
Решение:
program pr4;
var i,n:integer;
s:real;
begin
write('введите n ');
readln(n);
s:=0;
for i:=1 to n do
s:=s+ exp(i*ln(3));
writeln('сумма=',s:4:0);
readln;
end.
Результат:
введите n 5
сумма= 363
Пример 5.
Найти сумму ряда: S = x - x2 /4 + x3/9 - x4/16... (n слагаемых).
Решение:
Program Pr5;
Var i, n, z: integer;
p, s: real;
begin
writeln ('введите n'); readln ( n );
writeln('введите x'); readln( x );
z:=1; p:=x; s:=0;
for i:=1 to n do begin
s:= s + z*p/sqr(i); p:=p*x; z:=-z
end;
writeln ('S=', S :6:2);
readln
end.
Пример 6.
Вычислить произведение:
(1 + sin2 )*(2 + sin3 )*... (n сомножителей).
Найти сумму ряда: S = x - x2 /4 + x3/9 - x4/16... (n слагаемых).
Решение:
Рrogram Pr6;
Var n, i: integer;
p: real;
begin
write('n='); readln(n); p:=1;
for i:=1 to n do
p:=p* (i + sin(i+1));
writeln('p=', p:6:3);
readln
end.
Результат:
n=5
p=131.645
Пример 7.
Задана арифметическая прогрессия -21; - 16;… Определить номер первого положительного члена прогрессии.
a – очередной член прогрессии, n – его порядковый номер
Решение:
Program Pr7;
var
a, n: integer;
begin
a:= -21; n:=1; {задаем начальные значения}
while a<=0 do begin {пока очередной член прогрессии меньше либо ра
a:=a+5; n:=n+1; равен 0, вычисляем следующий член прогрессии и end; и его порядковый номер}
writeln(‘n=’, n); {выводим номер 1-го положительного члена
прогрессии}
readln;
end.
Результат:
n=6
Пример 8.
Протабулировать функцию y:=sin(x)*x интервале [-p/2,p/2] с шагом p/10.
Решение:
Program pr8;
Var x, y: real;
begin
x:=-pi/2;
while x<=pi/2 do
begin
y:=sin(x)*x;
writeln('x=',x:8:2,' y=',y:8:2);
x:=x+pi/10
end;
end.
Пример 9.
Вычислить сумму:
S =cos(1+x)+cos2(1+x)+cos3(1+x)+...+cosn(1+x) (n слагаемых).
Решение:
Рrogram Pr9;
Var n, i: integer;
s,x,t: real;
begin
write(' n='); readln(n);
write(' x='); readln(x);
s:=0; t:=cos(1+x);
for i:=1 to n do begin
s:=s+t;
t:=t*cos(1+x);
end;
writeln('s=', s:4:2)
end.
Пример 10.
Подсчитать количество двузначных чисел, у которых сумма цифр нечетна.
Решение:
Program Pr10;
Var n, a, b, k: integer;
begin
k:=0; for n:=10 to 99 do begin
a:= n div 10; b:=n mod 10;
if (a+b) mod 2=1 then k:=k+1;
end;
writeln('k=',k)
end.
ЗАДАНИЯ
1. Дано натуральное число n. Вычислить 21+22+…+2n .
2. Дано натуральное число n. Вычислить n! ( )
3. Дано натуральное число n. Вычислить .
4. Дано натуральное число n и действительно число х. Вычислить .
5. Даны натуральные числа а, n. Вычислить .
6. Найти произведение: Р = (1 + х)·(3+2х)·(5+3х)·... . (n множителей)
7. Задана арифметическая прогрессия. 7,6; 6,3; … . Сколько членов прогрессии нужно сложить, чтобы полученная сумма стала <0.
8. Задана арифметическая прогрессия 2; 2,8; … . Сколько членов прогрессии нужно сложить, чтобы полученная сумма стала >20.
9. Задана арифметическая прогрессия. 7,1; 5,3; … . Сколько членов прогрессии нужно сложить, чтобы полученная сумма стала <0.
10. Задана арифметическая прогрессия. 8,4; 6,2 … . Сколько членов прогрессии нужно сложить, чтобы полученная сумма стала <0.
11. Задана арифметическая прогрессия. 2; 3,8; ... . Сколько членов прогрессии нужно сложить, чтобы полученная сумма стала >30.
12. Подсчитать количество и сумму четных трехзначных чисел.
13. Подсчитать сумму двухзначных чисел, сумма цифр которых не превышает 7.
14. Подсчитать количество двузначных чисел, кратных 3.
15.Подсчитать сумму двузначных чисел, сумма цифр которых не превышает 10.
16. Подсчитать количество и сумму трехзначных чисел, кратных 3.
17. Подсчитать количество и сумму четных трехзначных чисел.
18. Протабулировать функцию y=x3-1 на интервале [-1,3] с шагом 0.2.
19. Протабулировать функцию y=x2-1/x на интервале [1,2] с шагом 0.05.
20. Протабулировать функцию y= sin x – cos x на интервале [-p,p] с шагом p/10.
21. Протабулировать функцию y= cos(x)*x на интервале [-p,p] с шагом p/10.
22. Протабулировать функцию y=sin2x на интервале [0,p] с шагом p/20.
23. Протабулировать функцию y= cos x2+sin x2 на интервале [-p/2,p/2] с шагом p/10.
24. Дано натуральное число n. Найти сумму S=1-3+5-… . (n слагаемых)
25. Дано натуральное число n. Найти сумму S=1+2/3+3/5 ... . (n слагаемых)
26. Дано натуральное число n. Найти сумму S=1-1/5+1/9-1/13+… . (n слагаемых)
27. Дано натуральное число n. Найти сумму S=1-3+5-… . (n слагаемых)
IV. ПРОЦЕДУРЫ
Процедура – это относительно самостоятельная часть программы, имеющая собственное имя. Процедура описывается перед основной программой.
Const <константы>; раздел объявления меток, констант, типов данных,
Type <типы данных>; переменных (может отсутствовать)
Var <переменные>;
Begin
<операторы > - тело процедуры
End;
Параметры, указанные в заголовке процедуры называются формальными. Вызов процедуры осуществляется из основной программы указанием ее имени. При вызове процедуры формальные параметры заменяются фактическими. Количество и тип формальных и фактических параметров должны совпадать. Для передачи исходных данных в процедуру используются параметры-значения. Фактические параметры-значения могут быть константами, переменными, выражениями. Полученный в процедуре результат передается в основную программу с помощью параметров-переменных. В заголовке описания процедуры перед параметрами-переменными пишется Var.
Пример 1.
Создать процедуру вычисления среднего арифметического и среднего квадратичного натуральных чисел a и b.
p:= a + b + Sgrt(a*a + b*b); {периметр треугольника с катетами a, b}
s:= a*b/2; { площадь треугольника с катетами a, b }
End;
Begin {основная программа}
Write('a, b =');Readln(a, b); {ввод исходных данных}
Treug(a, b, p, s); {вызов процедуры и передача исходных данных a, b}
Writeln('p=', p:4:1, ‘ s=’, s:4:1); {вывод результата, полученного из процедуры}
Readln;
End.
Результат:
a, b= 3 4
p=12.0 s= 6.0
Пример 3.
Создать процедуру, определяющую возможность построения треугольника со сторонами x, y, z. Из чисел a,b,c,d выбрать тройки таких, которые позволяют построить треугольник.
Для решения задачи используется «правило треугольника»: каждая сторона треугольника меньше суммы двух других сторон.
Решение:
Program pr3;
Var
a,b,c,d: integer;
Procedure Treug(x, y, z:integer);
Begin
if (x<y+z) and (y<x+z) and (z<x+y)
then writeln (‘Треугольник со сторонами ‘, x, ‘,’, y, ‘,’, z, ’можно построить’)
else writeln(‘Треугольник со сторонами ’ x, ‘,’, y, ‘,’, z, ‘нельзя построить ‘)
End;
Begin {основная программа}
Write('Введите a b c d: '); Readln(a,b,c,d); {ввод исходных данных}
{вызываем процедуру и проверяем возможность построения треугольника со сторонами a,b,c}
Treug(a,b,c);
{вызываем процедуру и проверяем возможность построения треугольника со сторонами a,b,d}
Treug(a,b,d);
{вызываем процедуру и проверяем возможность построения треугольника со сторонами a,c,d}
Treug(a,c,d);
{вызываем процедуру и проверяем возможность построения треугольника со сторонами b,c,d}
Treug(b,c,d);
Readln;
end.
Результат:
Введите a b c d: 1 3 4 5
Треугольник со сторонами 1,3,4 нельзя построить
Треугольник со сторонами 1,3,5 нельзя построить
Треугольник со сторонами 1,4,5 нельзя построить
Треугольник со сторонами 3,4,5 можно построить
Пример 4.
Упорядочить по возрастанию числа A, B, C, создав процедуру обмена значениями 2-х переменных.
Решение:
Program pr4;
Var
A, B, C: real;
Procedure Obmen(Var X,Y:real);
{X,Y являются и входными, и выходными данными}
Var
T: real; { T –вспомогательная переменная}
Begin
T:=X;
X:=Y;
Y:=T;
End;
begin {основная программа}
Write('A, B, C ='); Readln(A,B,C); {ввод исходных данных}
If A>B then Obmen(A,B); {если A больше B, то производим их обмен}
If A>C then Obmen(A,C); {если A больше С, то производим их обмен}
If B>C then Obmen(B,C); {если В больше С, то производим их обмен}
Создать процедуру для вывода первых N членов арифметической прогрессии, заданной значением первого члена а и разностью d. Вывести первые 7 членов прогрессии 2, 5, … (a=2, d=3) и первые 10 членов прогрессии 20, 19, ….(a=20, d= -1)
Решение:
Program pr5;
Procedure progres(a,d,n:integer);
Var
i: integer; {i – номер очередного члена прогрессии }
Begin
for i:=1 to n do {перебираем i от 1 до n}
begin
write(a,' '); {выводим очередной член прогрессии}
a:=a+d; {вычисляем следующий член прогрессии}
end;
End;
begin {основная программа}
{вызов процедуры для вывода 7 членов арифметической прогрессии 2, 5,…}
progres(2,3,7);
writeln;
{вызов процедуры для вывода 10 членов прогрессии 20,19,…}
progres(20,-1,10);
Readln;
end.
Результат:
2 5 8 11 14 17 20
20 19 18 17 16 15 14 13 12 11
Пример 6
Выяснить, какие натуральные числа от 2 до 10 являются простыми, а какие - составными (создать процедуру, определяющую простым или составным является данное число).
Число называется простым, если оно не имеет делителей кроме 1 и самого себя. Если у него есть другие делители, то число – составное.
Решение:
Program pr6;
Var
i: integer;
Procedure prostoe(x:integer);
Var
k,n: integer; {n - возможные делители числа, k – количество делителей}
Begin
k:=0;
for n:=2 to x div 2 do {перебираем числа от 2 до x div 2 для поиска делителей}
if x mod n = 0 {если n –делитель числа x}
then k:=k+1; {увеличиваем количество делителей на 1}
if k=0 {если у числа нет делителей}
then writeln (x,' - prostoe') {то число простое}
else writeln (x,' - sostavnoe'); {иначе число составное}
End;
begin {основная программа}
for i:=2 to 10 do {перебираем числа от 2 до 10}
prostoe(i); {вызываем процедуру для проверки очередного числа}
Readln;
end.
Результат:
2 - prostoe
3 - prostoe
4 - sostavnoe
5 - prostoe
6 - sostavnoe
7 - prostoe
8 - sostavnoe
9 - sostavnoe
10 - sostavnoe
ЗАДАНИЯ
1. Создать процедуру для вычисления периметра и площади квадрата по длине его стороны.
2. Создать процедуру для вычисления объема и площади поверхности куба по длине его ребра.
3. Создать процедуру для вычисления длины окружности и площади круга по заданному значению радиуса. ( L= 2pR, S=pR2)
4. Создать процедуру для вычисления периметра и площади прямоугольника по длинам его сторон.
5. Создать процедуру для вычисления периметра и площади треугольника по длинам его сторон ( , a, b, c – стороны треугольника, p – полупериметр)
6. Создать процедуру для нахождения корней квадратного уравнения по его коэффициентам a,b,c.
7. Вводятся A, B, C, D. Поменять местами A и C, B и D, создав процедуру обмена значениями 2-х переменных.
8. Создать процедуру для вывода первых N членов арифметической прогрессии, заданной первым членом а и разностью d. С помощью этой процедуры вывести 8 первых членов прогрессии 1, 4, … и 10 первых членов прогрессии 24, 22, ….
9. Создать процедуру для вывода первых N членов арифметической прогрессии, заданной первым членом а и разностью d. С помощью этой процедуры вывести 5 первых членов прогрессии 3, 7, … и 7 первых членов прогрессии 14, 11, ….
10. Создать процедуру для вывода первых N членов арифметической прогрессии, заданной первым членом а и разностью d. С помощью этой процедуры вывести 7 первых членов прогрессии 12, 10, … и 9 первых членов прогрессии 2, 5, ….
11. Создать процедуру для вывода и нахождения суммы первых N членов арифметической прогрессии, заданной формулой an=2n+1.
12. Создать процедуру для вывода и нахождения суммы первых N членов арифметической прогрессии, заданной формулой an=3n-2.
13. Создать процедуру для вывода и нахождения суммы первых N членов арифметической прогрессии, заданной формулой an=5n-3.
14. Определить, какие из целых чисел от -3 до 8 являются решениями неравенства (x-5)(x+1)>0 (создать процедуру, определяющую является или не является данное целое число решением неравенства (x-5)(x+1)>0)
15. Определить, какие из целых чисел от -10 до 2 являются решениями неравенства (x+4)(x+1)<0 (создать процедуру, определяющую является или не является данное целое число решением неравенства (x+4)(x+1)<0)
16. Создать процедуру для вывода и подсчета суммы последовательных целых чисел от a до b. С помощью этой процедуры вывести и найти сумму целых чисел: 1) от 10 до 20; 2) от -5 до 15.
17. Создать процедуру для вывода таблицы значений функции y=sin 3x + 1 для х от a до b с шагом h. Вывести две таблицы: а) для х от 1 до 2 с шагом 0.1 и б) для х от 5 до 10 с шагом 0.5
18. Создать процедуру для вывода таблицы значений функции y=tg x + 1/x для х от a до b с шагом h. Вывести две таблицы: а) для х от 2 до 4 с шагом 0.2 и б) для х от 1 до 10 с шагом 0.5
19. Создать процедуру для вывода таблицы значений функции y= 3x2 + 1 для х от a до b с шагом h. Вывести две таблицы: а) для х от 1 до 2 с шагом 0.1 и б) для х от 2 до 5 с шагом 0.5
20. Создать процедуру для вывода таблицы значений функции y=sin (x + 1)2для х от a до b с шагом h. Вывести две таблицы: а) для х от 2 до 3 с шагом 0.1 и б) для х от -2 до 3 с шагом 0.5