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

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

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

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

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

Уроки 44–47. Программирование одномерных массивов целых чисел

 

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

 предметные представления о понятиях «одномерный массив», «значение элемента массива», «индекс элемента массива»; умение исполнять готовые и записывать на языке программирования простые циклические алгоритмы обработки одномерного массива чисел (суммирование всех элементов массива; суммирование элементов массива с определѐнными индексами; суммирование элементов массива, с заданными свойствами; определение количества элементов массива с заданными свойствами; поиск наибольшего/ наименьшего элементов массива и др.);

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

 

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

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

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

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

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

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

 

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

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

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

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

 

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

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

 

2)    рассмотреть правила описания одномерных целочисленных массивов в среде программирования Паскаль;

 

3)    рассмотреть несколько способов заполнения массивов;

4)    рассмотреть возможности вывода массивов;

 

5)    рассмотреть примеры и получить опыт решения типовых задач по обработке массивов (суммирование, поиск, наименьшего / наибольшего значения, подсчет количества элементов с некоторым свойством);

 

6)    познакомиться с сущностью процесса сортировки массива.

 

7)    сформировать умение записывать на языке программирования короткие алгоритмы обработки одномерных массивов.

 

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

массив;

 

описание массива;

 


заполнение массива;

 

вывод массива;

 

обработка массива;

 

последовательный поиск;

 

сортировка.

 

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

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

 

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

 

ПК учащихся.

 

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

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

 

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

 

Все четыре урока – уроки-практикумы. Они обеспечены большим количеством задач в учебнике и в рабочей тетради. Выбор тех или иных задач для выполнения на уроке и дома остаѐтся за учителем.

 

На последнем уроке можно провести небольшую проверочную работу (на 15 мин). Работа может быть построена на основании задач 7, 8, 9 (стр. 223). Задание 9 имеет повышенный уровень сложности.

 

Задание № 10 имеет высокий уровень сложности. Оно может быть предложено для выполнения дома наиболее сильным ученикам.

 

Ответы и решения к заданиям в РТ.

   201.

a)

i

 

1

2

3

4

5

6

7

a[i]

 

1

1

1

1

1

1

1

 

б)

 

 

 

 

 

 

i

 

1

2

3

4

5

6

7

a[i]

 

1

2

3

4

5

6

7

 

в)

 

 

 

 

 

 

i

 

1

2

3

4

5

6

7

a[i]

 

-3

0

5

12

21

32

45

 

г)

 

 

 

 

 

 

i

 

1

2

3

4

5

6

7

a[i]

 

3

4

-1

5

0

10

-12

 

д)

 

 

 

 

 

 

i

 

1

2

3

4

5

6

7

a[i]

 

0

1

0

2

0

3

0

 


   202. В номере опечатка. Нужно очистить ячейки второй строки, или добавить ниже еще одну строку.

 

a)

i

 

1

2

3

4

5

6

7

8

a[i]

 

2

-1

0

8

-5

10

4

-3

b[i]

 

7

4

5

13

0

15

9

2

 

б)

 

 

 

 

 

 

 

i

 

1

2

3

4

5

6

7

8

a[i]

 

2

-1

0

8

-5

10

4

-3

b[i]

 

4

-2

0

16

-10

20

8

-6

   203.

 

a)

i

1

 

2

 

 

3

 

 

 

4

 

 

5

 

 

6

 

a[i]

1

 

7

 

 

3

 

 

 

6

 

 

0

 

 

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s

 

i

 

 

 

sr

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

-

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

1

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

 

 

2

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

 

 

3

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

17

 

 

4

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

17

 

 

5

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

27

 

 

6

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

б) Опечатки. Вместо s:=s+1 и writeln (‘s=’, s) надо

k:=k+1 и writeln

(‘k=’, k)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

1

 

2

 

 

3

 

4

 

 

5

 

6

 

7

 

a[i]

 

3

 

6

 

 

9

 

12

 

 

15

 

18

 

21

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

в) Опечатки. Второй раз вместо n:=0

надо

 

k:=0. После последнего

ветвления надо end;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

1

 

2

 

 

3

 

4

 

 

5

 

6

 

7

 

a[i]

 

-1

 

7

 

 

-3

 

-6

 

 

0

 

1

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


i

m

 

 

 

n

 

k

 

 

 

-

 

0

 

 

0

0

 

 

 

1

 

 

 

 

1

 

 

 

 

 

2

 

1

 

 

 

 

 

 

 

 

 

3

 

 

 

 

2

 

 

 

 

 

4

 

 

 

 

3

 

 

 

 

 

5

 

 

 

 

 

 

1

 

 

 

6

 

2

 

 

 

 

 

 

 

 

 

г)

 

 

 

 

 

 

 

 

 

 

i

 

1

2

 

3

 

4

 

5

6

a[i]

 

1

-7

 

3

 

6

 

0

-10

 

 

 

 

 

 

 

 

 

 

i

d

 

 

m

 

 

 

 

 

 

 

1

 

 

1

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

3

 

3

 

 

3

 

 

 

 

 

4

 

4

 

 

6

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

     204. Опечатка в блок-схеме: z :=0. Уточнения в шапке таблицы переменных.

 

program n_204; var i, y, z: integer;

 

const a: array [1..10] of integer = (-5, 3, 1, -4, -3, 2, 5, -1, -7, 4); begin

 

y :=0; z :=0;

for i :=1 to 10 do

 

if a[i] > 0 then z := z + a [i] else y := y+ a[i]; writeln ('y =', y,' ', 'z =', z)

 

end.

 

i

 

1

 

2

3

4

5

 

6

7

8

9

10

a[i]

 

-5

 

3

1

-4

-3

 

2

5

-1

-7

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

z

 

 

y

 

 

a[i]>0

 

 

 

 

 

 

 

 

 

0

 

 

0

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

-5

 

 

 

нет

 

 

 

 

 

 

2

 

 

3

 

 

 

 

 

 

да

 

 

 

 

 

 

3

 

 

4

 

 

 

 

 

 

да

 

 

 

 

 

 

4

 

 

 

 

 

-9

 

 

 

нет

 

 

 

 

 

 

5

 

 

 

 

 

-12

 

 

 

нет

 

 

 

 

 

 

6

 

 

6

 

 

 

 

 

 

да

 

 

 

 

 

 

7

11

 

да

8

 

-13

нет

9

 

-20

нет

10

15

 

да

 

 

 

 

 

 

 

 

 

   205. program n_205;

 

var i, k, n, s1, s2, s3: integer;

 

m:  array [1..30] of integer; begin

 

s1:=0; s2:=0; s3:=0; for i :=1 to 10 do begin

 

readln (m[i]); s1:= s1+m[i]; end;

 

for i :=11 to 20 do begin

 

readln (m[i]); s2:= s2+m[i];

end;

 

for i :=21 to 30 do begin

 

readln (m[i]); s3:= s3+m[i];

end;

 

k:= s1; n:=1; if k < s2 then begin

 

k := s2; n:=2; end;

 

if k < s3 then begin

 

k := s3; n:=3; end;

 

writeln (‘Самый большой путь пройден в декаду:’, n) end.

 

 

Начало

 

Список данных

 


m (1:30), s1,s2, s3, k, n, i - цел

 


s1:=0; s2:=0; s3:=0

 

i = 1, 10

 

m[i]

 

s1:=s1+ m[i]

 

 

 

i = 11, 20

 

m[i]

 

s1:=s1+ m[i]

 

 

 

i = 21, 30

 

m[i]

 

s1:=s1+ m[i]

 

 

 

 

 

 

 

 

 

 

 

k:= s1; n:= 1

 

 

 

 

 

 

 

 

 

 

 

k < s2

Да

 

 

 

 

 

Нет

 

 

 

 

 

 

k :=s2; n :=2

 

 

 

 

 

 

 

 

k < s3

Да

 

 

 

 

 

 

 

 

 

 

Нет

 

 

k :=s3; n :=2

 

 

 

 

 

 

 

 

 

 

 

n

 

Конец

 

 

  206. Ответ: 90.

  207. Ответ:  3 – количество дней с температурой выше 14 градусов.

 

     208. Исходим из того, что ограничения, введѐнные на исходные данные, не требуют проверок. В противном случае в постановке задачи должно быть указано, что делать в случае ввода «недозволенных» данных – повторять ввод, прерывать программу и т.п.

 

program n_208; var

 

x:   integer; // Исходные данные

 

k:   integer; // Результат begin

 

k := 0;

 

writeln ('Введите целое x>>'); readln (x);

 

while x>0 do

 

if (a mod 3 =0) and (a mod 2 =0) then k:=k+1; writeln ('Количество чѐтных чисел, кратных 3 =', k)

end.

Задания в тексе параграфа.

 

1.       Программа, в которой осуществляется: заполнение случайным образом целочисленного массива a, состоящего из 10 элементов, значения которых изменяются в диапазоне от 0 до 99; вывод массива а на экран (стр. 216).

 

program n_1_216;

var

i: integer;

 

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

 

randomize;

 

for i :=1 to 10 do a[i]:= random(100);

 

for i :=1 to 10 do writeln (‘a[’, i, ‘]=’, a[i] )

 

end.

 

2. Программа формирования массива дополнена блоком обработки (вычисления суммы) элементов массива и выводом результатов суммирования на экран (с. 217).

program n_2_217;

var

i, s: integer;

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

 

begin randomize;

 

for i :=1 to 10 do a[i]:= random(100);

 

for  i :=1 to 10 do

 

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

s := 0;

for  i :=1 to 10 do

s := s + a[i];

writeln ('s=', s)

end.

 

3.     Программа формирования массива дополнена блоком обработки) элементов массива (поиском элемента массива, имеющего наибольшее значение) и выводом этого элемента на экран (с. 218).

 

program n_3_218; var

 

i, imax: integer;

 

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

 

begin randomize;

 

for i :=1 to 10 do a[i]:= random(100);

 

for i :=1 to 10 do writeln ('a[', i, ']=', a[i]);

 

imax := 1;

for  i := 2 to 10 do

if a[i] > a[imax] then imax := i;

 

writeln ('Наибольшее значение элементов массива', a[imax]) end.

 

Если в массиве несколько элементов, имеющих наибольшее значение,

 

то в представленной выше программе определяется номер первого из таких элементов. Если нужно найти номер последнего из таких элементов, то условный оператор следует записать так:

 

if a[i] >= a[imax] then imax := i

 

4. Программа поиска минимального значения элементов массива. program n_4_218;

 

var

 

i, imin: integer;

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

 

begin randomize;

 

for i :=1 to 10 do a[i]:= random(100);

 

for i :=1 to 10 do writeln ('a[', i, ']=', a[i]);

 

imin := 1;

for  i := 2 to 10 do

 


if a[i] < a[imin] then imin := i;

 

writeln ('Наименьшее значение элементов массива‘, a[imin])

end.

 

5. Программа проверки наличия в массиве элемента с заданным значением.

 

program n_5_218;

var

 

i, n, x: integer;

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

 

begin randomize;

 

for i :=1 to 10 do a[i]:= random(100);

 

for i :=1 to 10 do writeln ('a[', i, ']=', a[i]);

 

writeln ('x='); readln (x); n := 0;

 

for  i := 1 to 10 do

 

if a[i] = x then n := i; if n = 0

 

then  writeln  ('Элемента  со  значением,  равным  заданному,  в

массиве нет’)

else writeln ('Индекс элемента, равного заданному, ’, n)

end.

 

6. Просмотр массива прекращается после нахождения первого из элементов с заданным свойством.

 

program n_6_219;

var   i: integer;

 

const a: array [1..10] of integer = (1, 55, 50, 120, 50, 17, 4, -50, 80, 50); begin

 

i := 0;

repeat

 

i := i + 1;

until (a[i]=50) or (i=10);

if a[i] = 50

then writeln ('Индекс первого элемента, равного заданному, ', i)

else writeln ('Элемента со значением, равным заданному, в массиве

нет')

 

end.

7.    Количество элементов, больших 50. В массиве из программы 6 –

это 3.

program n_7_218;

 

var   i, k: integer;

 

const a: array [1..10] of integer = (1, 55, 50, 120, 50, 17, 4, -50, 80, 50); begin

 

k := 0;

for i := 1 to 10 do

if a[i]>50 then k := k+1;

writeln ('k=', k)

 

end.

 

8.      Сумма элементов, больших 50, но меньших 60. В массиве из программы 6 – это 55.

 

program n_8_218; var  i, s: integer;

 

const a: array [1..10] of integer = (1, 55, 50, 120, 50, 17, 4, -50, 80, 50); begin

 

s := 0;

for i := 1 to 10 do

 

if (a[i]>50) and (a[i]<60) then s := s+a[i]; writeln ('s=', s)

 

end.

 

8.            Программа сортировки массива из десяти случайных целых чисел. program n_9_221;

 

var

i, j, imax, x: integer;

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

 

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 imax := i;

 

for j := i+1 to 10 do

 

if a[j]>a[imax] then imax := j; x := a[i];

 

a[i] := a[imax]; a[imax] := x

 

end;

 

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

 

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

 

end.

 

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

   1. Нет.

 

     3. а) массив а, состоящих из 10 элементов, значениями которых являются произвольные целые числа, принадлежащие отрезку [-50; 50];

 

б) массив а, состоящих из 20 элементов, значениями которых являются целые числа, совпадающие с индексами элементов;

 

в) массив а, состоящих из 5 целочисленных элементов, значения которых вычисляются по заданной формуле.

 

   4.

program n_4_222;

var

a:   array [1..30] of integer; // Исходные данные

 

i:   integer;   // Промежуточная величина

s:    integer;  // Результат

begin

randomize;

for  i :=1 to 30 do

a[i]:= random(151)+50;

for  i :=1 to 30 do

 

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

s := 0;

for i := 1 to 30 do

s := s + a[i];

writeln ('s=', s);

end.

 

№ 5.

program n_5_222;

var

a: array [1..50] of integer; // Исходные данные

i: integer;    // Счетчик цикла

k:   integer;  // Результат

 

begin randomize;

 

for i :=1 to 50 do a[i]:= random(51)+150;

 

for i :=1 to 50 do writeln ('a[', i, ']=', a[i]);

k := 0;

 

for i := 1 to 50 do

 

if a[i]>=170 then k := k + 1; writeln ('k=', k)

 

end.

 

№ 6.

 

program n_6_222;

var

a: array [1..7] of integer; // Исходные данные

i, s: integer;    // Промежуточные величины

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

const  b:  array  [1..7]  of  string  =  ('Понедельник',  'Вторник',  'Среда',

 

'Четверг', 'Пятница', 'Суббота', 'Воскресенье'); begin

 

writeln ('Введите температуру');

for  i :=1 to 7 do

begin

writeln (b[i],'>>');

 

readln (a[i])

end;

s := 0;

for  i :=1 to 7 do

s := s+a[i];

st := s/7;

writeln ('Средняя температура за неделю:  ', st:4:2)

 

end.

 

   7. Задача решается в 2 шага: 1) определяется наибольшее значение элементов массива; 2) подсчитывается количество элементов массива, равных максимальному.

 

program n_7_223; var

 

a:   array [1..10] of integer; // Исходные данные i, max: integer; // Промежуточные величины

 

k:   integer; // Результат

begin

randomize;

for  i :=1 to 10 do

a[i]:= random(5);

 

for  i :=1 to 10 do

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

max := a[1];

for  i := 2 to 10 do

if a[i] > max then max := a[i];

writeln ('max=', max);

 

k := 0;

for  i := 1 to 10 do

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

writeln ('k=', k);

 

end.

 

№ 8.

program n_8_223;

var

a:   array [1..20] of integer; // Исходные данные

 

i:   integer; // Промежуточные величины k2, k3, k4, k5: integer; // Результат

 

begin

randomize;

for  i :=1 to 20 do

a[i]:= random(4)+2;

for  i :=1 to 20 do

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

 

k2:=0; k3:=0; k4:=0;

for  i := 1 to 20 do

begin

if a[i] = 2 then  k2:= k2+1;

if a[i] = 3 then  k3:= k3+1;

if a[i] = 4 then  k4:= k4+1;

end;

 

k5 := 20-(k2+k3+k4);

writeln ('k2=', k2);

writeln ('k3=', k3);

writeln ('k4=', k4);

writeln ('k5=', k5);

end.

 

№ 9.

program n_9_223;

var

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

s:    array [1..10] of real;

i:   integer; max: real;

begin

 

randomize;

for  i :=1 to 10 do

begin

a[i]:= random(10)+1;

b[i]:= random(10)+1;

s[i]:=a[i]*b[i]/2;

 

writeln ('a[', i, ']=', a[i]:6, ' b[', i, ']=', b[i]:6, ' s[', i, ']=', s[i]:6:2); end;

 

max := s[1];

for  i := 2 to 10 do

 

if s[i] > max then  max := s[i];

 

for  i := 1 to 10 do

 

if s[i] = max then writeln ('i=', i, ' a=', a[i], ' b=', b[i], ' s=', s[i]); end.

   10. Площадь приведена в тыс. км2, население в тыс. чел. program n_10_223;

 

var

 

p:   array [1..10] of real;

 

n:   array [1..10] of string; i, j, imin: integer;

 

x:   real;

r:   string;

const

 

k:    array [1..10] of real = (58100, 81200, 10300, 5190, 39100, 57200, 38500, 9800, 5060, 57800);

s:    array [1..10] of real = (244.1, 357, 132,43.1,504.8,301.2,312.7, 92.0,

 

337, 551); begin

 

n[1]:= 'Великобритания'; n[2]:= 'Германия'; n[3]:= 'Греция'; n[4]:= 'Дания'; n[5]:= ' Испания ';

 

n[6]:= ' Италия '; n[7]:= ' Польша '; n[8]:= ' Португалия'; n[9]:= 'Финляндия'; n[10]:= 'Франция';

 

for i :=1 to 10 do p[i] := k[i]/s[i]; for i := 1 to 9 do begin

 

imin := i;

for j := i+1 to 10 do

 

if p[j]<p[imin] then imin := j; x := p[i];

 

p[i] := p[imin]; p[imin] := x;

 

r := n[i]; n[i]:= n[imin]; n[imin] := r;

end;

 

writeln ('Отсортированная информация'); for i :=1 to 10 do

 

writeln (n[i], ' - ', p[i]); end.

 

Домашнее задание. §4.7; задания – по усмотрению учителя.