Урок 4.

Тема урока: Практическая работа  «Создание  и реализация  программ, которые содержат обращения к подпрограммам».

 

Цели урока:

 

Ход урока.

I.                       Орг. Момент. Сообщение целей урока.

II.                     Проверка домашнего задания.

На доске записана программа из домашнего задания с ошибками.  Задание: Найти ошибки.  (3 человека набирают программы на своих компьютерах).

(Без ошибок)

Program  max_tabl;

       const n=5;

var  a:array[1..n] of real;  i:integer;max2:real;

procedure max(x1,x2 : real;var max:real);

begin

if x1>x2 then

max:=x1

else max:=x2;

end;

begin

writeln ('Massiv');

for i:=1 to n do

readln(a[i]);

begin

max(a[i],a[i+1], max2);

write (max2:8:2);

end;end.

 

Задача: Составить программу с использованием процедуры, определяющей наибольший элемент одномерного массива.

(с ошибками)

Program max_tabl;

const n=5;

  a:array[1..n] of real;  i:integer;

   max:real;

procedure max(x1,x2 : real;var max:real);

begin

     if x1>x2 then

     max:=x1

     else max:=x2;

end;

begin

     writeln ('Massiv');

     for i:=1 to n do

readln(a[i]);

     begin

          max(a[i],a[i], max2);

          write (max2:8:2);

     end;end.

 

 

 

III.                 Актуализация опорных знаний

·        Какие типы подпрограмм в  ПАСКАЛЬ?

·        Отличие процедур от функций

·        Как описываются процедуры и функции?

·        Отличие объявления процедуры от объявления функции

·        Как в основной программе вызываются функция и процедура?

 

IV.                  Практическая работа.

 

 

1.  Задача 1. Составить программу с использованием процедуры, определяющей наименьший  элемент прямоугольного массива случайных чисел

Program max_tabl;

var a:array[1..3,1..2] of real; i,j:integer;  min2:real;

 procedure min(x1,x2 : real;var min:real);

begin

     if x1<x2 then

     min:=x1  else min:=x2;

end;

begin

      writeln ('Massiv');

     randomize;

     for i:=1 to 3 do

           begin

      for j:=1 to 2 do

     begin

          a[i,j]:=random(100);

          writeln (a[i,j]:3:2);

           end;  end;

 

            for i:=1 to 3 do

      for j:=1 to 2 do

     begin

          min(a[i,j],a[i+1,j+1],min2);

           end;

          writeln ('min=',min2:8:2);

end.

 

(Примечание: Следующие задачи 2 и 3 предназначены для сильных учеников. Предлагаются на карточках).

Задача 2.Составить программу сортировки по убыванию одномерного массива, используя процедуру нахождения большего элемента из двух.

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

 

Program sort_tabl;

Uses Crt;

const n=10;

var a:array[1..n] of real;

   i,k,m:integer;

   p:real;

   {нахождение номера макс. элемента}

Procedure makcel(n1:integer;var k1:integer);

var max:real;

    j:integer;

begin

     max:=a[n1];

     k1:=n1;

     for j:=n1+1 to n do

          if a[j]>max then

          begin

               max:=a[j];

               k1:=j;

          end;

end;

{ обмен значениями двух переменных}

procedure sw(var x,y:real);

var z: real;

begin

     z:=x; x:=y; y:=z;

end;

procedure Tabl;

begin

     writeln ('Massiv');

     for i:=1 to n do

     begin

          a[i]:=random(100);

          write (a[i]:8:2);

     end;

     writeln;

end;

begin

clrscr;

randomize;

tabl;

     for i:=1 to n do

     begin

     makcel(i,k);

     sw(a[k],a[i]);

     end;

Writeln('Otsortirovany massiv:');

for i:=1 to n do

write(a[i]:8:2);

readln;

end.

end.

 

3. Составить программу, которая в двумерном массиве определяет максимальный элемент в каждом столбце и записывает его в одномерный массив. Для определения максимального элемента в столбце использовать функцию, а для ввода и вывода массивов – процедуру.

Файл MAX.PAS

 

 

Program PR1;

uses Crt;

Const n=10;

Type mas1=array [1..n] of integer;

     mas2=array [1..n,1..n] of integer;

var a,c:mas1;

    b:mas2;

    max,i,j:integer;

Procedure INPUT;

begin

     Writeln('ishodny masiv:');

     for i:=1 to n do

     begin

          for j:=1 to n do

          begin

               b[i,j]:=random(100);

               write(b[i,j]:6);

          end;

     writeln;

end;

end;

Procedure OUTPUT;

begin

     Writeln('gotovy masiv:');

     for i:=1 to n do

         write(a[i]:6);

     writeln;

end;

Function M(x:mas1):integer;

var mm:integer;

begin

mm:=x[1];

for i:=2 to n do

    if mm<x[i] then mm:=x[i];

m:=mm;

end;

begin

randomize; clrscr;

Input;

for j:=1 to n do

begin

     for i:=1 to n do

     begin

          c[i]:=b[i,j];

     end;

     a[j]:=m(c);

end;

output;

readln;

end.

 

 

 

2.  Задачи для самостоятельного выполнения.

A.     В программе 1 процедуру нахождения  наименьшего  элемента заменить на функцию.

B.     Составить программу, определяющую количество положительных элементов в двумерном массиве А. Создание и вывод на экран массива оформить в виде процедуры, а определение количества элементов – в виде функции.

V.                Домашнее задание.

 подготовиться к ТА

Задачи:

·                    Написать процедуру SUM(X,Y,Z), которая каждому элементу массива Z присваивает значение суммы соответствующих элементов массивов X Y. Использовать дополнительные процедуры создания массива случайных чисел, вывода массива на экран ПК.

·              Дано два одномерных  массива А и В. Заменить местами максимальные элементы массивов А и В. Использовать процедуру нахождения максимального элемента массива. Задание на 12 баллов: преобразовать эту программу для двумерного массива.

 

VI. Выставление оценок за урок. Итоги урока

 

 

Hosted by uCoz