Информатика_и_ИКТ._9кл._Урок№48

  • docx
  • 28.12.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Информатика_и_ИКТ._9кл._Урок№48.docx

Уроки 48. Запись вспомогательных алгоритмов на  языке Паскаль

 

Планируемые образовательные результаты:

 предметные представления о способах записи вспомогательных алгоритмов в языке Паскаль;

 

 метапредметные         умение   самостоятельно   планировать     пути

достижения        целей;        умение        соотносить        свои        действия        с

планируемыми    результатами,    осуществлять    контроль    своей

деятельности,         определять         способы         действий          в         рамках

 

предложенных       условий,       корректировать        свои        действия        в

соответствии    с   изменяющейся    ситуацией;    умение    оценивать

правильность выполнения учебной задачи;

 

личностные            алгоритмическое   мышление,   необходимое   для

 

профессиональной       деятельности        в         современном       обществе;

представление       о       программировании       как       сфере        возможной

профессиональной деятельности.

 

Решаемые учебные задачи:

 

1)    напомнить сущность понятия вспомогательного алгоритма, ввести понятие подпрограммы;

 

2)    познакомить с правилами оформления подпрограммы в виде процедуры;

 

3)    познакомить с правилами оформления подпрограммы в виде функции;

4)    познакомит с примером рекурсивной функции.

 

Основные понятия, рассматриваемые на уроках:

вспомогательный алгоритм;

 

подпрограмма;

 

процедура;

 

функция;

 

рекурсивная функция.

 

Используемые на уроке средства ИКТ:

 персональный        компьютер        (ПК)        учителя,        мультимедийный

 

проектор, экран;

 

ПК учащихся.

 

Электронные образовательные ресурсы

 презентация «Запись вспомогательных алгоритмов на языке Паскаль» из электронного приложения к учебнику.

 

Особенности изложения содержания темы урока

 

Рассматриваемая на этом уроке тема имеет повышенный уровень сложности. Еѐ рассмотрение может быть проведено в ознакомительном порядке или вообще отложено для дальнейшего изучения в 10-11 классах.

 

Ответы и решения к заданиям в тексте параграфа

 

   1 (стр. 226). Необходимо исправить опечатки в программе из примера

1:

program n_20_a;

const m: array [1..5] of integer = (12, 24, 30, 48, 30);

var i, x, y, z: integer;

 

procedure nod (a, b : integer; var c: integer); begin

 

while a<>b do

if a>b then a:=a-b else b:=b-a;

c:=a

end;

begin

 

x:= m[1];

for i := 2 to 5 do

begin

y := m[i];

nod (x, y, z);

x := z

end;

 

writeln ('НОД=', x);

end.

program n_20_b;

var m: array [1..10] of integer;

i, x, y, z: integer;

 

procedure nod (a, b : integer; var c: integer); begin

 

while a<>b do

if a>b then a:=a-b else b:=b-a;

c:=a

end;

begin

randomize;

 

for i := 1 to 10 do

begin

m[i]:=random(90)+10;

writeln ('m[', i, ']=', m[i]);

end;

x:= m[1];

 

for i := 2 to 10 do

begin

y := m[i];

nod (x, y, z);

 

x := z

 

end;

 

writeln ('НОД=', x);

 

end.

 

№ 2 (стр. 227).

 

program n_21_a;

program n_21_b;

var a, b, c, f: integer;

var b, c, d, f: integer;

function max (x, y : integer) : integer;

function max (x, y : integer) : integer;

begin

begin

if x>y then max:=x else max:=y;

if x>y then max:=x else max:=y;

end;

end;

begin

begin

readln (a, b, c);

readln (b, c, d);

f:= max(max(a, b), c);

f:= max(max(b, c), d);

writeln ('f=', f);

writeln ('f=', f);

end.

end.

program n_21_v;

program n_21_g;

var a, b, c, d, f: integer;

var a, b, c, d, f: integer;

function min (x, y : integer) : integer;

function min (x, y : integer) : integer;

begin

begin

if x<y then min:=x else min:=y;

if x<y then min:=x else min:=y;

end;

end;

begin

function max (x, y : integer) : integer;

readln (a, b, c, d);

begin

f:= min(min(a, b), min(c,d));

if x>y then max:=x else max:=y;

writeln ('f=', f);

end;

end.

begin

 

readln (a, b, c, d);

 

f:= max(max(a, b), max(c,d))-

 

min(min(a, b), min(c,d));

 

writeln ('f=', f);

 

end.

 

   3 (стр. 228). Этого задания нет, но его можно предложить ученикам. Написать программу, вычисляющую и выводящую на экран 10 первых

 

членов последовательности Фибоначчи.

program n_22;

 

var i: integer;

function f (n : integer) : integer;

begin

if (n=1) or (n=2) then f:=1

else f:=f(n-1)+f(n-2)

end;

 

begin

 

for i:=1 to 10 do

 

writeln ('f[', i, ']=', f(i))

end.

Ответы и решения к заданиям в учебнике (после параграфа)

 

     3. Наименьшее общее кратное (НОК) двух целых чисел m и n есть наименьшее натуральное число, которое делится на m и n без остатка.

 

НОД и НОК связаны следующей формулой: НОД(m, n) и НОК(m,n) связаны соотношением:

 

НОД(m, n) НОК(m,n)= m n. program n_3_228;

 

var

i, x, y, z: integer;

t1, t2: real;

 

procedure nod (a, b : integer; var c: integer); begin

 

while a<>b do

 

if a>b then a:=a-b else b:=b-a; c:=a

 

end; begin

 

x:= 36; y:=54; nod (x, y, z); t1 := x*y/z; x:= 18; y:=15; nod (x, y, z); t2 := x*y/z;

 

x:= round(t1); y:=round(t2); nod (x, y, z);

 

writeln ('НОК=', x*y/z); end.

 

   4.

program n_4_228;

var a, b, c: integer;

procedure swap (var x, y: integer);

 

var m: integer;

begin

m:=x;

x:=y;

y:=m

end;

begin

 

writeln ('Введите три числа через пробел'); read (a, b, c);

 


if a>b then swap (a,b);

 

if a>c then swap (a, c);

if b>c then swap (b, c);

writeln (a, b, c);

end.

 

   5. Возможный вариант решения задачи. program n_5_229;

 

var a, b, c, d, f: integer;

 

procedure max (x, y, z : integer; var m : integer); begin

 

m := x;

 

if y>m then m := y; if z>m then m := z;

 

end; begin

 

readln (a, b, c, d); max (a, b, c, f); a := f;

 

max (a, a, d, f); writeln ('max=', f);

end.

 

   6. Возможный вариант решения задачи. program n_6_229;

 

var

i, j, imax, x: integer;

a:   array [1..10] of integer;

 

procedure max (b: array [1..10] of integer; k: integer; var jmax: integer);

var j: integer;

begin

jmax := k;

for j := k+1 to 10 do

if b[j] > b[jmax] then jmax := j

end;

 

begin

randomize;

for i :=1 to 10 do

a[i]:= random(100);

writeln ('Исходный массив');

for i :=1 to 10 do

 

writeln ('a[', i, ']=', a[i]);

for i := 1 to 9 do

begin

max (a, i, imax);

 

x := a[i];

 

a[i] := a[imax];

a[imax] := x

end;

 

writeln ('Отсортированный по убыванию массив'); for i :=1 to 10 do

 

writeln ('a[', i, ']=', a[i]);

 

end.

 

№ 7.

program n_7_229;

var i, n, s: integer;

function f (m : integer) : integer;

begin

 

if m=1 then f:=1

else f:=f(m-1)*m

end;

begin

writeln ('n=');

readln (n);

s:=0;

 

for i:=1 to n do

s:=s+f(i);

writeln ('s=', s)

end.

 

   8. Здесь нет явных ограничений на x и n. В связи с этим может возникнуть потребность в типе longint.

 

program n_8_229; var x, n : integer;

s: longint;

 

function st (a, b: integer): longint;

var i: integer; rez: longint;

begin

rez := 1;

 

for i:=1 to b do rez:=rez*a;

st:=rez

end;

begin

write ('x=');

readln (x);

 

write ('n=');

readln (n);

s:=st(x, 3)+st(x,5)+st(x,n);

writeln ('s=', s)

 

end.

 

№ 9.

program n_9_229;

var

xa, ya, xb, yb, xc, yc: real; //  Исходные данные

p : real;   // Результат

function d (x1, y1, x2, y2: real): real;

 

var rez: real;

begin

rez := sqrt (sqr(x1-x2)+sqr(y1-y2));

d:=rez

end;

begin

 

write ('xa=');

readln (xa);

write ('ya=');

readln (ya);

write ('xb=');

readln (xb);

write ('yb=');

 

readln (yb);

write('xc=');

readln(xc);

write('yc=');

readln(yc);

 

p:=d(xa, ya, xb, yb)+ d(xa, ya, xc, yc)+ d(xc, yc, xb, yb); writeln ('P = ', p:6:2);

 

end.

 

   10.

var

xa, ya, xb, yb, xc, yc, xd, yd: integer; //  Исходные данные

ab, ac, bc,  p: real;  // Промежуточные величины

s4: real;  // Результат

 

function s3 (x1, y1, x2, y2, x3, y3: integer): real; var d1, d2, d3, p, rez: real;

 

begin

d1 := sqrt (sqr(x1-x2)+sqr(y1-y2));

d2 := sqrt (sqr(x3-x2)+sqr(y3-y2));

 

d3 := sqrt (sqr(x1-x3)+sqr(y1-y3)); p:=(d1+d2+d3)/2; rez:=sqrt(p*(p-d1)*(p-d2)*(p-d3)); s3:=rez

 

end;

 

begin

 

writeln ('xa и ya');

readln (xa, ya);

writeln ('xb и yb');

readln (xb, yb);

writeln ('xc и yc');

readln (xc, yc);

 

writeln ('xd и yd');

readln(xd, yd);

 

s4:=s3(xa, ya, xb, yb, xc, yc) + s3(xa, ya, xd, yd, xc, yc); writeln ('S = ', s4:6: