СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Практическая работа " Программирование обработки одномерных массивов"

Категория: Информатика

Нажмите, чтобы узнать подробности

Просмотр содержимого документа
«Практическая работа " Программирование обработки одномерных массивов"»

Урок № Класс 9 предмет информатика дата

Тема: Практическая работа № 13 « Программирование обработки одномерных массивов»

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



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

-Предметные- создать условия для усвоения темы «одномерные массивы»

-Метапредметные УУД:

Регулятивные закрепить у учащихся  представления способах ввода массивов,; путём выполнения практической работы сформировать навыки решать задачи с помощью языка программирования, по отладке и тестированию программы.

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

Коммуникативные создать условия для формирования логического и алгоритмического  мышления, 

-Личностные создать условия для формирования логического и алгоритмического  мышления, безопасные условия работы в информационной среде.

Ход урока.

-Организация начала урока

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

Фронтальный опрос по теории предыдущего урока:

Что такое массив?

Как объявляется массив?

Какие способы формирования массивов вы знаете?

Выполнение практической работы.

Дано описание массива: 

constb:array[1..2]ofinteger=(2,11,8,64,101);

 

Верно ли описан массив? 

неверно

верно




Определи способ заполнения массива.

 fori:=1to13doread(a[i]); 

с помощью оператора присваивания (случайными числами)

ввод каждого значения с клавиатуры

с помощью оператора присваивания (по формуле)



Определи способ вывода массива.

   

элементы массива выводятся в строку

вывод массива с комментариями



Выбери верный ответ.

Под _______________________ (упорядочением) массива понимают перераспределение значений его элементов в некотором определенном порядке. 

помощь

обыкновенный

сортировка

запуск программы

Дана программа:

 

 Запиши данную программу на языке программирования Паскаль. Запусти программу и запиши верный ответ.

 Ответ: s=

Запиши программу на языке программирования Паскаль.

 Дано 5 целых чисел. Напиши программу нахождения наибольшего среди них.



Во время субботника учащиеся школы вышли на посадку деревьев. Директором были собраны сведения о количестве деревьев, посаженных каждым классом. Определить наилучший результат и количество классов, добившихся его.

program derevo;

var d:array[1..25] of integer;

max,i,k:integer;

begin

randomize;

for i:=1 to 25 do

begin

d[i]:=random(25)+5;

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

end;

max:=d[1];

for i:=2 to 25 do

if d[i]max then max:=d[i];

writeln ('max=',max);

for i:=1 to 25 do

if d[i]=max then k:=k+1;

writeln('k=',k);

readln;

end.

Учитель даёт пояснения по заданиям практической работы:

-Подведение итогов урока, выставление оценок

-Домашнее задание

§ ( повторить)


Общие сведения

Скалярный тип – простой тип данных. Скалярное данное неделимо. Массив – это структурированный тип данных. Массив состоит из нескольких элементов. Ко всему массиву можно обращаться по его имени. Можно обращаться к его элементу, но для этого надо задать индекс (индексы). Массивы бывают одномерные и многомерные. Для объявления массива необходимо задать типы его индексов и компонент: 

ARRAY [Тип индексов] OF ;

Тип компонент массива – это просто тип данных, ассоциированный с каждой компонентой массива. Тип компонент может быть любым REAL, INTEGER, CHAR, BOOLEAN, перечислимым, интервальным. В качестве компоненты массива может быть взят и тип массив.

Тип индекса должен быть одним из упорядоченных типов, т.е. любым скалярным типом, кроме REAL: INTEGER, CHAR, интервальный, перечислимый. Тип индекса определяет границы изменения индекса. Если сделана попытка использовать несуществующую компоненту, то возникает ошибка (ошибка неверного индекса).

Одномерные массивы

Одномерный массив можно задать (объявить) двумя способами:

1.       C помощью служебного слова TYPE описывается тип массива, а затем с помощью VAR вводится переменная этого типа.

 Общая форма записи

TYPE = ARRAY [тип индекса] OF ;

VAR : ; 

2.       С помощью слова VAR сразу описывается  переменная типа массив.

Общая форма записи

 VAR : ARRAY [тип индекса] OF ;

Например, объявление массива из 100 элементов типа REAL можно осуществить двумя способами:

1.       type R100 = array [1..100] of real;

var A: R100;

2.       var A: array [1..100] of real.

Здесь задан массив с именем А, и его элементы имеют имена: А[1],…,A[100]. Чаще всего для типа индекса используют интервальный тип на основе типов INTEGER и CHAR. Однако можно в качестве индексов брать перечислимый тип.

П р и м е р  1.  Подсчет числа вхождений букв в текст определенной длины.

program COUNTER;

var COUNT: array ['a'..'z'] of integer;

CH: char; N: integer;

begin

for CH := 'a' to 'z' do

COUNT [CH] := 0; N := 0;

repeat

read (CH); N := N + 1;

if (CH = 'a') and (CH

COUNT [CH] := COUNT [CH] + 1;

until CH = '.';

for CH := 'a' to 'z' do

writeln (CH, COUNT [CH]:5);

end.

Пояснение. В этом примере тип индекса есть интервальный тип на базе типа CHAR, а тип компонент есть целое число. Таким образом, элементы массива – числа, а их индексы – буквы, т.е. число элементов массива равно 26 (по числу букв латинского алфавита).

Рассмотрим теперь случай, когда тип индекса задан перечислимым типом, а компоненты массива представлены компонентами интервального типа на базе типа INTEGER.

П р и м е р 2.  Присваивание переменной с именем месяца числа дней этого месяца.

program NUMBRDAY;

type MONAT = (JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG,

SEP, OKT, NOV, DEC);

var DAY : array [MONAT] of 28..31; T : MONAT;

begin

for T := JAN to DEC do

case T of

JAN, MAR, MAY, JUL, AUG, OKT, DEC: DAY [T] := 31;

APR, JUN, SEP, NOV: DAY [T] := 30;

FEB : DAY [T] := 28;

end;

end.

 Пример 2. В двумерном массиве, состоящем из целочисленных элементов, в каждом столбце поменять местами наибольший по модулю и последний не принадлежащий интервалу (a, b) элементы массива.

Решение. Преобразования необходимо провести в каждом столбце массива, поэтому параметр внешнего цикла в процедуре обработки - номер столбца j, а вложенного – номер строки i.

Для перестановки двух элементов в столбце массива необходимо найти номера их строк n1 и n2, а затем поменять местами значения элементов с использованием промежуточной переменной p.

Чтобы найти наибольший по модулю элемент столбца, введем дополнительную переменную max, которая будет хранить максимальное по модулю значение в текущем столбце массива на данный момент. (Можно решить задачу без использования переменной max. Подумайте, как это сделать.)

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

const n=10; m=7;

type mas=array [1..n,1..m] of Integer;

 procedure Vvodmas(var D:mas);

  var i,j:Integer;

begin

for i:=1  to n do

  for j:=1  to m do

    D[i,j]:=-50+Random(101);

end;

 procedure Vivodmas(D:mas);

  var i,j:Integer;

begin

  for i:=1 to n do

    begin

      for j:=1  to m do Write(D[i,j]:4);

      Writeln;

    end;

end;

 procedure Obmen(a,b: real; var D:mas);

  var i,j,p,n1,n2,max: Integer;

begin

  for j:=1  to m do

    begin

      n1:=1; max:=abs(D[1,j]);{считаем первый элемент столбца наибольшим по модулю}

      for i:=2 to n do

        if abs(D[i,j])max then  {обнаружен больший элемент}

          begin n1:=i; max:=abs(D[i,j]) end;

       i:=n; {перебираем элементы столбца, начиная с последнего}

      while (i=1)and (D[i,j]a)and(D[i,j]

      n2:=i;

      if n20 then {если элемент, не принадлежащий интервалу (a,b), был найден}

        begin

          p:=D[n1,j]; D[n1,j]:=D[n2,j]; D[n2,j]:=p; {обмен значений}

        end;

    end;

end;

 

var D: mas; a,b:Real;

begin

  Randomize; Vvodmas(D);

  Writeln('Исходный массив:'); Vivodmas(D);

  Write('Введите через пробел концы интервала (a,b): '); Readln(a,b);

  Obmen(a,b,D);

  Writeln('Ответ:'); Vivodmas(D);

  Readln

end. 

Варианты заданий

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

a)     сумму модулей отрицательных элементов массива;

b)    количество элементов массива, не принадлежащих интервалу (a, b);

c)     наименьший из элементов массива, принадлежащих отрезку [ab];

d)    количество элементов массива, равных первому элементу;

Задание 2. В двумерном массиве, состоящем из целочисленных элементов, поменять местами:

a)     в каждом столбце наибольший по модулю и последний положительный элементы;

b)    в каждом столбце первый и последний отрицательные элементы;

c)     в каждой строке наибольший и наименьший элементы;

d)    в каждом столбце первый принадлежащий отрезку [ab] и первый отрицательный элементы;

Дополнительные задания

1.  Определить в одномерном массиве число соседств из двух чисел разного знака.

2.  Дан двумерный массив целых чисел. Поменять местами строку, содержащую максимум массива, со строкой, содержащей его минимум.

 

Контрольные вопросы

1.       Как описываются в языке Паскаль одномерный и двумерные массивы?

2.       Может ли массив содержать разнотипные данные?

3.       В каком порядке указываются индексы при обращении к элементам двумерного массива?

4.       Привести пример массива, описание которого выглядит следующим образом:  var A: array [1..3, 20..24] of real.

5.       Можно ли при обработке двумерных массивов использовать однократные циклы? Если да, то приведите примеры. 

6.       Если в одномерном массиве проверяется «похожесть» его первой и второй части, то в каких границах надо писать оператор for для «прохождения» по этому массиву?

7.       Каким образом надо находить первый и последний элементы одномерного массива, обладающие некоторым свойством (отрицательный, наибольший, входящий в интервал и пр.)?



Скачать

Рекомендуем курсы ПК и ППК для учителей

Вебинар для учителей

Свидетельство об участии БЕСПЛАТНО!