18.02.2022

Зачем нужны массивы (язык Паскаль)

Зачем нужны массивы (язык Паскаль)

На уроках информатики при изучении темы «Массив», ученики нередко задают вопрос: «Зачем? Неужели нельзя вводить данные с клавиатуры и обрабатывать их по пути?»

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

Массив – это упорядоченный и хранимый в памяти набор данных одного типа.

Ключевые слова в этом определении: упорядоченный, хранимый, набор, одного типа.

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

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

к массиву данных можно обратиться многократно, а это значит, не только в момент ввода этих данных.

Приведем в качестве примера формулировки задач, где следует применить массив.

Примеры задач

1) Вам предстоит совершить закупку товаров для праздника. Какой процент составляют товары, приобретённые вами по стоимости, ниже средней по всему чеку?

2) Ваш класс получил протокол с результатами ЕГЭ по информатике. Верно ли, что 2 % учеников класса получили наибольший балл в классе (это не обязательно 100)?

3) Во время выполнения проекта по географии вы наблюдали за изменением температуры воздуха в течение недели. Верно ли, что были дни, когда температура отличалась от среднего показателя за неделю более, чем на 2 оС?

Приведем решение задачи 1 на языке программирования Паскаль

Исходные данные:

n – количество товаров (целое число),

a – массив стоимостей товаров (массив вещественных чисел)

Выходные данные: d – процент товаров с ценой, ниже средней (вещественное число)

Промежуточные данные:

s – суммарная стоимость товаров (вещественное число),

sr – средняя стоимость товаров (вещественное число),

p – количество товаров со стоимостью, ниже средней по чеку (целое число).

Программа на языке Паскаль

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

    s,sr,d:real;

    k,n,p:integer;

begin

  writeln('Введите количество товаров');

  readln(n);

  s:=0;

  for k:=1 to n do

  begin

    writeln('введите стоимость ',k,' товара');

    readln(a[k]);

    s:=s+a[k];

  end;

  sr:=s/n;

  p:=0;

  for k:=1 to n do

  begin

    if a[k]<sr then p:=p+1;

  end;

  d:=p/n*100;

  writeln('По цене, ниже средней, были куплены ',p,' товар(а/ов)');

  writeln('Это составляет ',d:2:2, '% от общего количества товаров');

end.

Решите задачи 2 и 3 самостоятельно

4 комментария:

  1. №3
    var a:array[1..100] of real; S,R:real; J,k:integer;
    begin
    S:=0;
    J:=0;
    writeln ('Введите температуру за каждый день недели.');
    for k:=1 to 7 do
    begin
    readln (a[k]);
    S:=S+a[k];
    end;
    R:=S/7;
    for k:=1 to 6 do
    begin
    if (a[k]>=(R+2)) or(a[k]<=(R-2)) then J:=J+1;
    end;
    if J>0 then writeln ('Да') else writeln ('Нет');
    end.
    Не понял что значит наивысший бал. Это число большее среднеарифметического числа?

    ОтветитьУдалить
    Ответы
    1. Решение 3 задачи верно. Счетчик цикла в последнем for должен быть от 1 до 7, потерялся последний день ;)
      Про наивысший балл. Это наибольший балл среди тех тех, кто сдавал экзамен.

      Удалить
  2. №2
    var a:array[1..300] of integer; N,max,J,k:integer; T:real;
    begin
    max:=0;
    J:=0;
    writeln ('Введите количество учеников.');
    readln (N);
    for k:=1 to N do
    begin
    readln (a[k]);
    if a[k]>max then max:=a[k];
    end;
    for k:=1 to N do
    begin
    if a[k]=max then J:=J+1;
    end;
    T:=J/N*100;
    if T=2 then writeln ('Верно') else writeln ('Не верно');
    end.

    ОтветитьУдалить