Примерная схема разработки программ:
1. Анализ условия задачи, чёткая формулировка вопроса задачи.
2. Выделение исходных данных, определение формы выходных данных.
3. Детальное изучение задачи.
4. Определение необходимых переменных и их типа.
5. Составление алгоритма.
6. Написание программы.
7. Ввод программы и запуск её на исполнение.
8. Отладка программы (поиск ошибок).
9. Анализ работы и доработка программы.
Раздел 8. Решение задач.
Задачи на математические вычисления:
1. Напишем самую простую программу вычисления результата сложения двух переменных s = a+b.
Program Slozenie; {заголовок программы}
var a,b,s:integer; (*раздел описания переменных*)
begin //начало раздела операторов
read(a,b); {занесение в ячейки a и b их значений}
s:=a+b; {вычисление значения s }
writeln(’сумма = ’,s); {вывод на экран текста ’сумма = ’ и значения s}
end. {конец программы}.
Напоминаю, что тексты, заключённые в скобки {}, (* *) и после // являются комментариями.
2. Программа вычисления площади S прямоугольного треугольника, по двум катетам a и b:
|
|
Program PloshadTreug1;
Var a,b: integer, S:real; // объявление переменных
begin
writeln ('введите целые значения длины катетов a,b');
{вывод пояснительного текста на экран}
readln (a,b); //ввод данных (a и b) с клавиатуры
S:=a*b/2; //вычисление площади треугольника
writeln(’площадь треугольника = ’,S);
end.
3. Эту же программу можно записать без объявления переменной S.
Прямо в операторе вывода writeln можно вычислить значение площади по формуле, а вывести его значение на экран в виде числа, с пояснением.
Program PloshadTreug1;
Var a,b: integer; // объявление переменных
begin
writeln ('введите целые значения длины катетов a,b');
{вывод пояснительного текста на экран}
readln (a,b); //ввод данных (a и b) с клавиатуры
S:=; //вычисление площади треугольника
writeln(’площадь треугольника = ’, a*b/2);
{вывод пояснительного текста на экран и результата вычисления площади тр.}
end.
4. Программа вычисления площади трапеции по высоте и двум основаниям:
Program PloshTrap;
var a,b,h,s: real; //объявляем переменные
begin
writeln(введите значения оснований и высоты');
readln(a,b,h); //вводим значения оснований и высоты
s:=0.5*(a+b)*h; //вычисляем площадь
writeln('Площадь трапеции = ',s); //выводим на экран
end.
5. Программа, определяющая вид треугольника по его сторонам:
Program SravStoronTreug;
var a,b,c: real; //объявляем переменные
begin
writeln('Введите стороны a= b= c=');
readln(a,b,c);
if (a+b<=c)or (b+c<=a)or(b+c<=a) then
writeln('Треугольник не существует')
else
begin
if (a=b)and(b=c) then writeln('Треугольник - равносторонний');
if (a<>b)and(b<>c)and (a<>c) then writeln ('Треугольник - разносторонний');
if(sqr(a)=sqr(b)+sqr(c))or(sqr(b)=sqr(a)+sqr(c))or(sqr(c)=sqr(b)+sqr(a)) then writeln('Треугольник - прямоугольный');
if ((a=b)and(c<>a)) or ((b=c)and(a<>b))or ((c=a)and(c<>b))then writeln('Треугольник - равнобедренный');
|
|
end
end.
6. Программа определения дня недели, по введённому номеру:
Program OperatorCase;
var den: integer; //объявляем переменные
begin
writeln('Введите номер дня недели (1..7): ');
readln(den);
case den of // Оператор выбора
1..5: writeln('Рабочий день');
6,7: writeln('Выходной');
else writeln('Введите правильно номер дня!');
end;
end.
7. Программа сравнения введенных чисел (полная форма условного оператора if):
Program SravChisel;
var a,b: integer; //объявляем переменные
begin
writeln('Введите a и b');
read(a,b);
if a<b then
writeln(a,'<',b)
else
if a>b then
writeln(a,'>',b)
else writeln(a,'=',b);
end.
8. Программа, выводящая на экран таблицу умножения на 3:
Program Umnoz3;
var n: integer; a: real; //объявляем переменные
begin
for n:=1 to 10 do
begin
a:=n*3;
writeln('3*',n,'=',a)
end;
end.
9. Программа нахождения всех делителей числа a:
В цикле for последователь делим число a на параметр цикла начиная от 1 до значения числа a,и находим все числа, остаток от деления которых (mod) равен нулю. Если такие числа есть, то выводим их на экран их с помощью оператора write(i,' ');
Program Deliteli;
var a,i: integer; //объявляем переменные
begin
write('Введите число a=');
readln(a);
write('Делители числа a: ');
for i:=1 to a do
begin
if a mod i =0 then write(i,' ');
end;
end.
11. Программа вычисления квадрата и квадратного корня числа n:
Program Kvad_Kor;
var kv,n:integer; kor:real; //объявляем переменные
begin
writeln('Введите число n');
readln(n);
kv:=sqr(n);
kor:=sqrt(n);
writeln('Квадрат числа ',n,' = ',kv,' Корень числа ',n, ' = ',kor);
end.
12. Программа возведения в квадрат, с использованием функции power:
Program stepen2;
var n: integer; a:real; //объявляем переменные
begin
for n:=1 to 10 do
begin
a:=power(2,n);
writeln('2^',n,'=',a)
end;
end.
13. Программа вычисления длины отрезка по введённым координатам:
Program DlinaOtrezka;
var x1,y1,x2,y2,d:real; //объявляем переменные
begin // Вычисляем длину отрезка по теореме Пифагора
writeln(' Введите координаты точек A(X1,Y1) и B(X2,Y2)');
readln(x1,y1,x2,y2);
d:=sqrt(sqr(y2-y1)+sqr(x2-x1));
writeln(' Длина отрезка |AB|=',d);
end.
14. Программа возведения в степень любого числа:
Program StepenChisla;
var p,a: real; n,i: integer; //объявляем переменные
begin
writeln('Введите a,n: ');
read(a,n);
p:=1; //задаём начальное значение отличное от 0
for i:=1 to n do //организуем цикл
p:= p * a; // Вычисляем степень числа
writeln(a,' В степени ',n,' = ',p); // выводим результат
end.
Задачи с числовыми последовательностями.
1. Программа вычисления суммы чисел кратных 3, в диапазоне 0…100.
Program Summ3;
var s,i:integer; //объявляем переменные
begin
for i:=1 to 100 do //задаём диапазон от 0 до 100
if i mod 3 = 0 then //находим числа кратные 3
write(i:3);
writeln();
begin
s:=0;
for i:=1 to 100 do
if i mod 3 = 0 then
s:=s+i; //находим сумму чисел кратных 3
end;
writeln(' s = ',s); // выводим результат
end.
2. Программа вычисления суммы нечетных чисел последовательности
от 0 до 100, с помощью цикла repeat.
Program SumChet;
var i,s:integer; // i-индекс,s-накопитель суммы
begin i:=0; s:=0; // обнуление исходных значений i,s
repeat // оператор цикла повтора
i:=i+2; // нахождение чётных индексов.
s:=s+i; {т.к. индексы последовательности соответствуют значениям чисел, то к предыдущему значению ’s’ прибавляем значения чётных индексов}
until i>99; // условие выхода из цикла
writeln('s=',s); // вывод результата
end.
3. Напишем программу нахождения суммы нечетных чисел последовательности от 0 до 100, с помощью цикла while.
Program SumChet1;
var i,s:integer; // i-индекс,s-накопитель суммы
begin i:=0; s:=0; // обнуление исходных значений i,s
while i<100 do // оператор цикла повтора c условием выхода из него
begin
i:=i+2; // нахождение чётных индексов.
s:=s+i; //вычисление суммы
end;
writeln('s=',s); // вывод результата
end.
4. Напишем ту же программу нахождения суммы нечетных чисел последовательности от 0 до 100, с помощью цикла for.
Program SumChet3;
var i,s:integer; // i-индекс,s-накопитель суммы
begin s:=0;
for i:=0 to 100 do
begin
s:=s+i; //вычисление суммы
i:=i+1;
end;
writeln('s=',s); //вывод результата
end.
5. Та же программа, с помощью цикла for иоперации mod..
Для поиска чётных чисел используется проверка чётности с помощью операции целочисленного деления mod. (Если остаток от деления числа на 2 равен 1 то, следовательно, число нечётное).
|
|
Program SumChet4;
var i,s:integer; // i-индекс,s-накопитель суммы
begin
for i:=0 to 100 do
begin
if i mod 2=1 then //нахождение нечётных индексов
s:=s+i; //вычисление суммы
end;
writeln('s=',s); //вывод результата
end.
6. Простая сортировка 3-х чисел:
Program ProstSort;
var a,b,c: integer;
begin
readln(a,b,c);
if (c>b)and(b>a) then write(a,' ',b,' ',c);
if (b>c)and(c>a) then write(a,' ',c,' ',b);
if (c>a)and(a>b) then write(b,' ',a,' ',c);
if (a>c)and(c>b) then write(b,' ',c,' ',a);
if (b>a)and(a>c) then write(c,' ',a,' ',b);
if (a>b)and(b>c) then write(c,' ',b,' ',a);
end.
7. Программа нахождения Max элемента массива и его порядкового номера:
Program MaxElement;
const n=100;
var a: array [1..n] of integer;
i,j,p,max: integer;
begin
for i:=1 to n do
begin
a[i]:=random(101);
write(a[i],' ');
end;
writeln;
max:=a[1];
p:=1;
for j:=2 to n do
begin
if a[j]>max then
begin
max:=a[j];
p:=j;
end;
end;
writeln('Max элемент = ',max, 'Его № = ',p);
end.
8. Программа вычисления N-го числа последовательности (ряда) Фибоначчи, с использованием метода рекурсии.
Последовательность Фибоначчи – это ряд чисел, в котором, начиная с третьего элемента ряда, каждое следующее число равняется сумме двух предыдущих.
Program FibonachiRekursia;
var n:byte; //объявляем переменные
function F(k:byte):word; //определяем функцию F, осуществляющую
begin //рекурсивный вызов, т.е. обращение к двум предыдущим своим
if k<2 then F:=1 else F:=F(k-1)+F(k-2); //значениям F(k-1)и F(k-2)
end;
begin
write('введите номер числа Фибоначчи ');
readln(N);
writeln(N,'-ое число Фибоначчи =',F(N));
readln
end.
9. Та же задача, выполненная с помощью цикла, причём выводящая весь ряд чисел Фибоначчи, от 1 до N:
Program FibonachCicl;
var
i,N,k1,k2,kn:integer; //объявляем переменные
begin
writeln('Введите число N');
readln(N);
k1:=1; //первые два члена ряда равны = 1
k2:=1;
writeln('f1 = ',k1);
writeln('f2 = ',k2);
for i:=1 to n-2 do
begin
kn:=k1+k2; // kn - это число Фибоначчи и индексом i+2, т.к. вычисление
writeln('f',i+2,' = ',kn); // начинаем с 3-го элемента последовательности
k1:=k2; //переопределяем значения переменных, т.е. присваиваем
k2:=kn; //двум последним элементам значение двух предыдущих
end;
end.