ОРГАНИЗАЦИЯ ВЫЧИСЛЕНИЙ С РАЗВЕТВЛЕНИЕМ

ОРГАНИЗАЦИЯ ВЫЧИСЛЕНИЙ С РАЗВЕТВЛЕНИЕМЦель:- Ознакомиться с понятием составного оператора, оператором завершения программы и вводом данных с клавиатуры; - Изучить структуру оператора условного перехода (IF...THEN...ELSE) и оператора безусловного перехода (GOTO) и приобрести навыки составления разветвляющихся программ с их использованием.
Раздел Информатика
Класс 9 класс
Тип Другие методич. материалы
Автор
Дата
Формат doc
Изображения Есть
For-Teacher.ru - все для учителя
Поделитесь с коллегами:

ОРГАНИЗАЦИЯ ВЫЧИСЛЕНИЙ С РАЗВЕТВЛЕНИЕМ

Цель:

- Ознакомиться с понятием составного оператора, оператором завершения программы и вводом данных с клавиатуры;

- Изучить структуру оператора условного перехода (IF...THEN...ELSE) и оператора безусловного перехода (GOTO) и приобрести навыки составления разветвляющихся программ с их использованием.

Пример1.


Вычислить и вывести на печать корни квадратного уравнения ax2+bx+c=0 ,

выполнив проверки : - если а=0 , то выдать сообщение и остановить программу;

- если дискриминант уравнения отрицательный, то выдать

сообщение и выйти из программы.

Коэффициенты уравнения ввести с клавиатуры по запросу программы.

Программа расчета :


Program Pr1; LABEL

Start; {Описание метки}

VAR

a,b,c: real; {Описание типов коэффициентов}

x1,x2,d: real;

BEGIN

Write('Задайте коэффициенты уравнения a,b,c > ');

Readln(a,b,c); {Ввод коэффициентов с клавиатуры}

IF a<>0 THEN GOTO Start; {Проверка условия а<>0}

Writeln('Это не квадратное уравнение (а<>0)');

Halt="ОРГАНИЗАЦИЯ ВЫЧИСЛЕНИЙ С РАЗВЕТВЛЕНИЕМ"; {Завершение программы}

Start: d:=sqr(b)-4*a*c; {Вычисление дискриминанта}

IF d>0 THEN {Проверка положительности дискриминанта}

begin

x1:=(-b+sqrt(d))/(2*a); {Вычисление корней уравнения}

x2:=(-b+sqrt(d))/(2*a);

Writeln('Корни уравнения x1=',x1,' x2=',x2);

Readln;

Halt="ОРГАНИЗАЦИЯ ВЫЧИСЛЕНИЙ С РАЗВЕТВЛЕНИЕМ"; {Завершение программы}

End

ELSE

Writeln('Kopни мнимые');

Readln; {(Ожидание нажатия клавиши ввода}

END.

Результаты расчета :


Задайте коэффициенты уравнения а,b,с > (введем, например) 1_-7_10 <ввод>

Корни уравнения x1=5.0000000000E+00 x2=2.0000000000E+00

В случае мнимых корней:

Задайте коэффициенты уравнения a,b,c > (введем, например) 1_-7_15 <ввод>

Корни мнимые.

Пример 2.


Пусть даны два числа. Если первое больше второго по абсолютной величине, то необходимо уменьшить первое в пять раз. Иначе оставить числа без изменения.

Программа:


Program pr2 (input, output);

var x, y: real;

begin read (x, y);

if abs (x) > abs (y) then x:= x / 5;

write (x, y);

end.

Пример 3.


Даны три числа x, y, z. Требуется найти max (x, y, z) - наибольшее из этих чисел (среди x, y, z могут быть и равные числа: например, max (3, -1, 3) = 3, max (7, 7, 7) = 7 и т. д.).

Программа:


Program M (input, output);

var x, y, z, t: real;

begin read (x, y, z); t:=x;

if t < y then t:= y;

if t < z then t:= z; write (t);

end.

Задание:

(При выполнении задания для организации разветвлений в программе использовать только операторы условного и безусловного перехода, а исходные данные вводить с клавиатуры по запросу программы)

Даны действительные числа a, b, c, d. Если a  b  c  d, то каждое число заменить наибольшим из них; если a > b > c > d, то числа оставить без изменения; в противном случае все числа заменяются их квадратами.

ФУНКЦИИ И ПРОЦЕДУРЫ

Цель :

  • Ознакомиться с понятием процедуры и особенностями процедуры-функции;

  • Ознакомиться с обменом данными между основной программой и процедурой;

  • Изучить различия между формальными и фактическими параметрами между глобальными и локальными описаниями переменных;

  • Научиться составлять программы с использованием процедур.

Пример 1.


Написать процедуру-функцию, которая возводит произвольное число b в произвольную вещественную степень X, и использовать ее в программе для вычисления суммы k членов обобщенного гармонического ряда :

ОРГАНИЗАЦИЯ ВЫЧИСЛЕНИЙ С РАЗВЕТВЛЕНИЕМ. Параметры k и a вводить по запросу программы.

Программа расчета :


Program Pr1;

VAR {a,res,i,k - глобальные переменные}

a,res : real; {Переменные для показателя степени и суммы сленов ряда}

i,k: integer; {Переменная цикла и число членов ряда}

Function Pocfun (b,x:real) : real; {b и x - формальные параметры-значения}

Begin {Начало процедуры функции}

If b>0 then POCFUN:=exp(x*ln(b))

Else

If b<0 then POCFUN:=exp(x*ln(abs(b))) {Показ. Ф-ция. Определена для b>0}

Else

If x=0 then POCFUN:=1

Else POCFUN:=0

End;

BEGIN {Начало основной программы}

Res:=0;

Write('Введите показатель степени = ');

Readln(a);

Write('Введите число членов = ');

Readln(k);

FOR i:=1 to k DO

Res:=res+1/POCFUN(i,a); {i и a фактические параметры}

Writeln('res = ',res);

Readln;

END.

Результаты расчета:


Введите показатель степени = 1.765 <ввод>

Введите число членов ряда = 10 <ввод>

Res = 1.7209260727E+00

Пример 2.


Заданы координаты вершин плоского выпуклого шестиугольника (x1,y1),(x2,y2),…,(x6,y6). Определить периметр и площадь этого многоугольника. Для определения длин сторон использовать процедуру вычисления расстояния между двумя досками. Для определения площади многоугольника использовать процедуру вычисления площади треугольника по заданным координатам его вершин.


Программа расчета:


Program Pr2;

CONST {Ввод координат вершин многоугольника}

x :array[1..6]of real = (1,1,4,7,7,4); {в виде одномерных массивов констант}

y :array[1..6]of real = (1,4,6,6,3,1);

VAR {edge,perim,art,arpol,i - глобальные переменные}

edge,perim : real; {Сторона и периметр многоугольника}

art,arpol : real; {Площади треугольника и многоугольника}

i : integer; {Переменная цикла}

{Процедура DIST вычисляет расстояние между двумя

точками (x1,y1); (x2,y2) и присваивает его параметру len}

PROCEDURE DIST(x1,y1,x2,y2 : real; var len : real); {x1,y1,x2,y2 - формальные параметры значения, а len - параметр-переменная}

begin

len:=sqrt(sqr(x2-x1)*sqr(y2-y1)); end;

PROCEDURE AREA(x1,y1,x2,y2,x3,y3 : real; var st : real);

var p : real; {Полупериметр - локальная переменная}

begin

p:=(sqrt(sqr((x2-x1)+(sqr(y2-y1))+sqrt(sqr((x3-x2)+(sqr(y3-y2))+sqrt(sqr((x3-x2)+(sqr(y3-y2)))/2))))));

st:=sqrt(p*(p-sqrt(sqr(x2-x1)+sqr(y2-y1)))*(p-sqrt(sqr(x3-x2)+sqr(y3-y2)))*(p-sqrt(sqr(x3-x1)+sqr(y3-y1))));

end;

BEGIN

Perim:=0; arpol:=0; {Начало основной программы}

FOR i := 1 to 6 DO {Начало цикла вычисления периметра}

begin

if i<=5 then

DIST(x[i],y[i],x[i+1],y[i+1],edge)

else DIST(x[i],y[i],x[1],y[1],edge);

perim:= perim+edge;

end; {Конец цикла вычисления периметра}

writeln('Периметр многоугольника = ',perim);

FOR i := 1 to 4 DO {Начало цикла вычисления площади}

begin

AREA(x[1],y[1],x[i+1],y[i+1],x[i+2],y[i+2],art);

arpol := arpol+art;

end; {Конец цикла вычисления площади}

writeln( 'Площадь многоугольника = ',arpol);

END.

Результаты расчета :


Периметр многоугольника = 1.9211102551Е+01

Площадь многоугольника = 2.4000000000Е+01

Пример 3.

Программа вычисления площади четырехугольника.

Программа:


Program pr3 (input, output);

var AB, BC, CD, DA, AC, s1, s2: real;

procedure str3 (var a, b, c, s: real);

var p: real;

begin p := (a + b + c)/2;

s := sqrt (p*(p - a)*(p - b)*(p - c))

end;

begin read (AB, BC, CD, DA, AC);

str3 (AB, BC, AC, s1);

str3 (CD, DA, AC, s2)

end.

Пример 4.


Для вычисления величин ОРГАНИЗАЦИЯ ВЫЧИСЛЕНИЙ С РАЗВЕТВЛЕНИЕМ и ОРГАНИЗАЦИЯ ВЫЧИСЛЕНИЙ С РАЗВЕТВЛЕНИЕМ может быть использована процедура.

Программа:


Procedure pr4 (a: T; var s, t: real);

var i: integer; u: real;

begin

s := sqr (a[1]); t := abs (a[1]);

for i := 2 to n do

begin s := s + sqr (a[i]);

u := abs (a[i]);

if u > t then t := u;

end;

end.

Пример 5.


Программа вычисления площади четырехугольника:

Программа:


Program pr5 (input, output);

var AB, BC, CD, DA, AC: real;

function triangl (a, b, c: real): real;

var p: real;

begin p := (a + b + c)/2;

triangl := sqrt (p*(p - a)*(p - b)*(p - c));

end;

begin read (AB, BC, CD, DA, AC);

write (triangl(AB, BC, AC) + triangl (CD, DA, AC))

end.

Пример 6.

Пусть даны действительные s, t, ОРГАНИЗАЦИЯ ВЫЧИСЛЕНИЙ С РАЗВЕТВЛЕНИЕМ (n - некоторая константа) и пусть требуется вычислить ОРГАНИЗАЦИЯ ВЫЧИСЛЕНИЙ С РАЗВЕТВЛЕНИЕМ, где ОРГАНИЗАЦИЯ ВЫЧИСЛЕНИЙ С РАЗВЕТВЛЕНИЕМ. Программа (считаем, что n = 7).

Программа:


Program pr6 (input, output);

const n = 7;

type T = array[0..n] of real;

var a: T; s, t, u: real; i: integer;

function p (x: real): real;

var y: real; i: integer;

begin y := a[n];

for i := n - 1 downto 0 do

y := y*x + a[i];

p := y;

end;

begin read (s, t);

for i := 0 to n do read (a[i]);

u := p (0,2);

write (u - p (t) + sqr (p(s -t)) - 1,7*u*u*u);

end.

© 2010-2022