Раздел 7. Разработка программ

Примерная схема разработки программ:

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.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: