для тех же исходных данных что рассматриваются в параграфе
Расчет среднего значения элементов массива
Теперь сформулируем задачу обработки массива температур, которую будем решать дальше. Вычислим среднегодовую температуру. Для этого нужно сложить все 12 значений таблицы и разделить сумму на 12. Полученную величину выведем в качестве результата.
Эту задачу легко решить с помощью электронных таблиц. На рис. 3.13 показана такая таблица. В ячейки В2:В13 заносятся значения температур. В ячейку В14 помещается формула: =СРЗНАЧ(В2:В13). Результат вы видите в ячейке В14.
A | B |
Месяц | Температура |
-21 | |
-18 | |
-7,5 | |
5,6 | |
22,2 | |
5,4 | |
-7 | |
-18 | |
Среднее: | 2,56 |
Рис. 3.13. Таблица температур
Запишем алгоритм в полном виде (с вводом, вычислениями и выводом), используя в нем для организации циклов структуру цикла с параметром.
алг Средняя температура
вещ таб Т[1:12]
цел I, вещ Tsred
нач
<Цикл ввода>
для I от 1 до 12 шаг 1 повторять
нц
вывод «Т[I», I, «]=»
ввод Т[I]
кц
<Цикл суммирования>
Tsred:=0
для I от 1 до 12 шаг 1 повторять
нц
Tsred:=Tsred+T[I]
кц
<Вычисление среднего>
Tsred:=Tsred/12
вывод(«Среднегодовая температура=», Tsred
кон
Обратим внимание на следующие особенности алгоритма. Появилась новая переменная Tsred, в которой вычисляется среднее значение:
Переменная Tsred имеет вещественный тип. Перед циклом суммирования этой переменной присваивается нулевое значение. Так всегда следует поступать с переменной, в которой накапливается сумма какой-то последовательности слагаемых. При каждом повторении цикла к значению переменной Tsred добавляется очередное слагаемое. После окончания цикла полученная сумма делится на 12. Это искомый результат, который выводится на экран.
Вопросы и задания
1. Что такое массив?
2. Самостоятельно придумайте примеры данных, которые можно организовать в виде массива. В каждом примере отметьте: каким именем можно обозначить массив, как пронумеровать его элементы, какой тип будет иметь массив? Опишите массивы по правилам Алгоритмического языка.
3. Для тех же исходных данных, что рассматриваются в параграфе, составьте алгоритм, в котором вычисляются четыре величины: средние температуры зимних месяцев, весенних месяцев, летних месяцев, осенних месяцев.
4. Вы посетили магазин и купили 10 видов товара. В таблицу Т[1:10] вы записали количество купленного товара каждого вида. В таблицу С[1:10] записали цены единиц каждого вида товара соответственно. Составьте алгоритм вычисления общей стоимости всех покупок.
Массивы в Паскале
А теперь посмотрим, как можно на Паскале запрограммировать алгоритм вычисления среднегодовой температуры.
Для этого сначала познакомимся с правилами описания массивов. Заметим, что в данном разделе учебника мы ограничиваемся только работой с одномерными массивами (линейными таблицами).
Описание и обработка массива на Паскале
Общая форма описания одномерного массива на Паскале такая:
var : array [ ] of
Слово «array» буквально переводится как «массив». Границы индекса могут быть любыми целыми числами. Важно, чтобы нижняя граница была меньше верхней границы. Описание массива температур будет следующим:
var T: array [1..12] of real;
Цикл с параметром на Паскале
Рассмотрим полный текст программы на Паскале.
Program Temperature;
var T: array[1..12] of real;
I: integer; Tsred: real;
begin
<Цикл ввода>
for I:=l to 12 do
begin
write ( ‘T[ ‘,1:2, ‘] = ‘) ;
readln(T[I])
end;
<Цикл суммирования>
Tsred:=0;
for I:=l to 12 do
Tsred:=Tsred+T[I] ;
<Вычисление среднего>
Tsred:=Tsred/12;
writeln( ‘Среднегодовая температура = ‘, Tsred:6:2, ‘ градусов’)
end.
В этой программе дважды использован оператор цикла с параметром. Он имеет следующий формат:
for := to do ;
Форматы вывода
В программе присутствует еще один новый для вас элемент Паскаля: формат вывода. Это числа с двоеточиями, стоящие после переменных в операторе вывода write:
В этой записи I:2 обозначает, что значение переменной I выводится как целое число в две символьные позиции на экране. Для однозначного числа в первой позиции будет помещен пробел, например: _5.
Результат выполнения программы Temperature будет выведен на экран в следующем виде:
Среднегодовая температура =2.56 градусов
Программа с двумя массивами
А теперь расширим условие задачи. Требуется для каждого месяца определить отклонение его средней температуры от среднегодовой величины.
Вернемся к электронной таблице на рис. 3.13. Добавим к ней еще один столбец С, в котором будут вычисляться искомые отклонения. В ячейку С2 занесем формулу =В2-$В$14. По этой формуле вычислится отклонение январской температуры от среднегодовой. Скопировав эту формулу в ячейки СЗ:С13, получим все остальные величины. Смысл «замораживания» адреса В14 вам должен быть понятен. Результаты приведены в таблице на рис. 3.14.
A | B | |
Месяц | Температура | Отклонения |
-21 | -23,56 | |
-18 | -20,56 | |
-7,5 | -10,06 | |
5,6 | 3,04 | |
7,44 | ||
15,44 | ||
22,2 | 19,64 | |
21,44 | ||
14,44 | ||
5,4 | 2,84 | |
-7 | -9,56 | |
-18 | -20,56 | |
Среднее: | 2,56 |
Рис. 3.14. Температуры и отклонения от среднего
К предыдущей программе надо добавить описание массива Dt в следующем виде:
var Dt: array[1..12] of real;
Запишем на Паскале фрагмент, который надо вставить в конец предыдущей программы, чтобы решить поставленную задачу.
Как и следовало ожидать, это те же самые числа, что получены в электронной таблице.
Вопросы и задания
1. Как можно описать на Паскале массив, в котором будут храниться значения численности населения Москвы к концу каждого года XX века?
2. Вы приобрели котенка. Каждый вечер вы определяете его вес с помощью весов. Как можно описать на Паскале массив, в котором будут храниться значения веса котенка в течение месяца (например, мая)?
3. Напишите фрагмент программы на Паскале ввода исходных данных для массивов, определенных в заданиях 1 и 2.
4. Введите в компьютер программу Temperature, добавив к ней обработку массива Dt. Выполните программу, получите результаты. Сравните их с приведенными в параграфе.
5. Составьте программы на Паскале по алгоритмам из заданий 3, 4 предыдущего параграфа. Выполните эти программы на компьютере.
ГДЗ Информатика 9 класс Семакин — Массивы в Паскале
ОТВЕТЫ Решебник — ГД З Инфо рматика — §18.Массивы в Паскале , Сем акин 9 класс
Вопросы и задания
1. Как можно описать на Паскале массив, в котором будут храниться значения численности населения Москвы к концу каждого года XX века?
2. Вы приобрели котенка. Каждый вечер вы определяете его вес с помощью весов. Как можно описать на Паскале массив, в котором будут храниться значения веса котенка в течение месяца (например, мая)?
3. Напишите фрагмент программы на Паскале ввода исходных данных для массивов, определенных в заданиях 1 и 2.
4. Введите в компьютер программу Temperature, добавив к ней обработку массива Dt. Выполните программу, получите результаты. Сравните их с приведенными в параграфе.
5. Составьте программы на Паскале по алгоритмам из заданий 3, 4 предыдущего параграфа. Выполните эти программы на компьютере.
Ответы на вопросы параграф 18 из учебника Семакина 9 класс
1. Как можно описать на Паскале массив, в котором будут храниться значения численности населения Москвы к концу каждого года XX века?
program zz1;
var i:integer;
m:array[1900..1999] of integer; // описываем массив целого типа, каждый элемент которого будет являться каждым годом XX века
begin
for i:=1900 to 1999 do
begin
write(‘ введите численности населения Москвы к концу ‘,i,’-го года ‘);
read(m[i]);
end;
end.
2. Вы приобрели котенка. Каждый вечер вы определяете его вес с помощью весов. Как можно описать на Паскале массив, в котором будут храниться значения веса котенка в течение месяца (например, мая)?
program zz1;
var i:integer;
m:array[1..31] of integer; // описываем массив целого типа, каждый элемент которого будет являться весом котёнка в течение месяца
begin
for i:=1 to 31 do
begin
write(‘ введите вес котенка ‘,i,’-го мая ‘);
read(m[i]);
end;
end.
3. Напишите фрагмент программы на Паскале ввода исходных данных для массивов, определенных в заданиях 1 и 2.
USES crt;
var A: array[1..5] of real;
q: integer;
BEGIN
clrscr;
for q:=q to 12 do
begin
write ( ‘A ‘,1:2, ‘] = ‘) ;
readln(A[q])
end;
4. Введите в компьютер программу Temperature, добавив к ней обработку массива Dt. Выполните программу, получите результаты. Сравните их с приведенными в параграфе.
В задании требуется ввести код программы, описанной на странице 228 учебника и надо изменить программу так, чтобы она считала отклонения средней температуры каждого месяца от среднегодовой величины, должно получиться так:
Ну а результаты получите, когда запустите программу.
5. Составьте программы на Паскале по алгоритмам из заданий 3, 4 предыдущего параграфа. Выполните эти программы на компьютере.
3). Для тех же исходных данных, что рассматриваются в параграфе, составьте алгоритм, в котором вычисляются четыре величины: средние температуры зимних, весенних, летних, осенних месяцев.
Program asd;
USES crt;
var t: array [1..12] of real;
i: integer;
BEGIN
Clrscr;
Writeln(‘vvedite temperatyry 12-x mesyazev: ‘);
for i:=1 to 12 do
readln(t[i]);
writeln(‘Sima: ‘,((t[12]+t[1]+t[2])/3):0:2);
writeln(‘Vesna: ‘,((t[3]+t[4]+t[5])/3):0:2);
writeln(‘Leto: ‘,((t[6]+t[7]+t[8])/3):0:2);
writeln(‘Osen: ‘,((t[9]+t[10]+t[11])/3):0:2);
END.
4). Вы посетили магазин и купили 10 видов товара, В таблицу Т[1:10] вы записали количество купленного товара каждого вида. В таблицу С[1:10] записали цены единиц каждого вида товара соответственно. Составьте алгоритм вычисления общей стоимости всех покупок.
Литература: Учебник:Информатика, 9 класс. ФГОС Автор: И. Г. Семакин, Л. А. Залогова, С. В. Русаков, Л. В. Шестакова.
§41. Таблицы и массивы. вопрос для тех же исходных данных,что рассматриваются в параграфе,составьтеалгоритм,в котором вычесляются четыре величины:средние
температуры зимних месяцев,весенних месяцев.ЛЕТНИХ МЕСЯЦЕВ,осенних месяцев.
type mas=array[1..93] of real;
var i,w:byte;season:mas;t:real;
function temp(ses:mas;d:byte):real;
var i:byte;s:real;
begin
s:=0;
for i:=1 to d do s:=s+ses[i];
temp:=s;
end;
repeat
writeln(‘Год високосный?1-да 0-нет’);
read(w);
if (w<>1) and (w<>0) then w:=2;
until w<>2;
writeln(‘Введите зимние температуры за каждый день:’);
for i:=1 to 90+w do readln(season[i]);
t:=temp(season,90+w);
writeln(‘Среднее арифметическое зимних температур: ‘,t/(90+w):5:3);
writeln(‘Введите весенние температуры за каждый день:’);
for i:=1 to 92 do readln(season[i]);
t:=temp(season,92);
writeln(‘Среднее арифметическое весенних температур: ‘,t/92:5:3);
writeln(‘Введите летние температуры за каждый день:’);
for i:=1 to 92 do readln(season[i]);
t:=temp(season,92);
writeln(‘Среднее арифметическое летних температур: ‘,t/92:5:3);
writeln(‘Введите осенние температуры за каждый день:’);
for i:=1 to 92 do readln(season[i]);
t:=temp(season,91);
writeln(‘Среднее арифметическое осенних температур:’,t/91:5:3);
end.