Thon Условные



бет31/38
Дата23.02.2020
өлшемі2,05 Mb.
#58878
1   ...   27   28   29   30   31   32   33   34   ...   38
Байланысты:
8-3 python


A = list( range(N) )

Для заполнения массива квадратами этих чисел можно ис-пользовать такой генератор:

A = [ i*i for i in range(N) ]

В конце записи генератора можно добавить условие отбора. В этом случае в массив включаются лишь те из элементов, пе-ребираемых в цикле, которые удовлетворяют этому условию. Например следующий генератор составляет массив из всех чи-сел в диапазоне от 0 до 99, которые делятся на 7:

A = [i for i in range(100)

if i % 7 == 0]

Обратите внимание, что длина этого массива будет меньше 100, и цикл

for i in range(100):

print( A[i] )

приведёт к ошибке выходу за границы массива.



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

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

print( A )

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

A = [1, 2, 3, 4, 5]

print( A ) # [1, 2, 3, 4, 5]

Можно вывести элементы массива на экран по одному, ис-пользуя цикл:

for i in range(len(A)):

print( A[i], end=" " )
81 http://kpolyakov.spb.ru

05.04.2019 Информатика, 8 класс К.Ю. Поляков, Е.А. Еремин

Параметр end определяет, что после вывода каждого элемента

добавляется пробел, а не символ перехода на новую строку.

Удобно записывать такой цикл несколько иначе:

for x in A:

print( x, end=" " )

Здесь не используются переменная-индекс i и функция len, а



просто перебираются все элементы массива. На каждой итера-ции цикла в переменную x заносится значение очередного эле-мента массива порядке возрастания индексов). Такой цикл перебора очень удобен, если не нужно изменять значения эле-ментов массива.

В языке Python существует ещё один замечательный способ вывода всех элементов массива через пробел (без скобок):

print( *A )

Знак * перед именем массива означает, что нужно преобразо-вать массив в набор отдельных значений, то есть для массива

A = [1, 2, 3, 4, 5]

эта команда сработает так же, как и

print( 1, 2, 3, 4, 5 )

Ввод массива с клавиатуры

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

for i in range(N):

A[i] = int( input() )

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



Вместо цикла можно использовать генератор, который сразу создаёт массив и заполняет его введёнными числами:

A = [ int(input()) for i in range(N) ]

Здесь при каждом повторении цикла строка, введённая пользо-

вателем, преобразуется в целое число с помощью функции int,

и это число добавляется к массиву.


82 http://kpolyakov.spb.ru

05.04.2019 Информатика, 8 класс К.Ю. Поляков, Е.А. Еремин

При этом пользователь вводит данные «вслепую», то есть программа не подсказывает ему, значение какого элемента вво-дится в данный момент.

Значительно удобнее, если перед вводом появляется сооб-щение с подсказкой:

for i in range(N):

print( "A[{}]=".format(i), end="" ) A[i] = int( input() )

В этом примере перед вводом очередного элемента массива на экран выводится подсказка. Например, при вводе элемента с индексом 3 будет выведено «A[3]=» и курсор (приглашение к вводу) будет мигать справа от знака =.



Заполнение массива случайными числами

Иногда нужно заполнить массив случайными числами (на-пример, определить случайные координаты клеток с призами или препятствиями в игре).

Для работы со случайными (точнее, псевдослучайными)

числами нужно подключить (импортировать) функцию randint из модуля random.

from random import randint

Эта функция генерирует случайное целое число в заданном диапазоне.



Если массив уже создан, для его заполнения случайными числами применим цикл по переменной:

for i in range(N):

A[i] = randint( 20, 100 )

То же самое можно сделать с помощью генератора:



A = [ randint(20,100) for i in range(N)]

Генератор создаёт массив из N элементов и заполняет его слу-чайными целыми числами на отрезке [20; 100].



Запишите фрагмент программы, который заполняет массив из 100 элементов случайными числами

а) на отрезке [100;150]; б) на отрезке [–10;10].
83 http://kpolyakov.spb.ru

05.04.2019 Информатика, 8 класс К.Ю. Поляков, Е.А. Еремин



Массивы в других языках программирования

Заполнение массива первыми N натуральными числами на языках Паскаль и C++ выглядит так:

const N = 10; const int N = 10; var A: array[1..N] of int A[N], i;

integer; for( i = 0; i < N; i++ ) for i:=1 to N do A[i] = i + 1;

A[i] := i;

Массивы (как и переменные) в этих языках нужно объяв-лять, сразу выделяя для них место в памяти. Объявление пе-ременных в Паскале начинается со слова var это сокращение от английского слова variable.



Размер массива часто вводится через константу (постоян-ную величину) с помощью служебного слова const.

Найдите в дополнительных источниках перевод слов variable, integer, array на русский язык.

В языке Паскаль нумерацию элементов массива можно начать с любого значения, например с 0 или с 1. Чаще всего ис-пользуют привычную для человека нумерацию с единицы.



Почему в программе на языке Паскаль в элемент с A[i] записывается значение i, а в C++ значение i+1?

Измените программы на языках Паскаль и C++ так, чтобы массив заполнялся теми же числами в обратном порядке.

Выводы:

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


84 http://kpolyakov.spb.ru

05.04.2019 Информатика, 8 класс К.Ю. Поляков, Е.А. Еремин

Индекс элемента массива это значение, которое указывает на конкретный элемент массива.

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

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

Интеллект-карта


тип имя

размер


A[5]

A[i]

A[2*i-1]
заполнение ввод
индекс

вывод обработка

Рис. 3.8.

Практическая работа №20. Заполнение массивов

Практическая работа №21. Перебор элементов массивов

Вопросы и задания

1. Как вы думаете, почему элементы массива размещают в па-мяти рядом?

2. Объясните разницу между терминами «индекс элемента мас-сива» и «значение элемента массива».

3. Некоторые языки программирования разрешают обращаться к элементам за пределами массива (при этом программа не


85 http://kpolyakov.spb.ru
тип значение

массив

элемент массива

обращение к элементу

перебор элементов

05.04.2019 Информатика, 8 класс К.Ю. Поляков, Е.А. Еремин

завершается аварийно). Обсудите достоинства и недостатки такого решения.

4. Массив из 22 элементов требуется заполнить случайными числами на отрезке [10; 30]. Будут ли в массиве одинаковые элементы? Почему?



Задачи

1. Заполните все элементы массива значением X, введённым с клавиатуры.

2. Заполните массив натуральными числами, начиная со зна-чения X, введённого с клавиатуры.

3. Заполните массив натуральными числами в обратном по-рядке, начиная со значения X, введённого с клавиатуры. По-следний элемент должен быть равен X, предпоследний X–1 и т.д.

4. Заполните массив степенями числа 2 т 21 до 2N).

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

6. клавиатуры вводится целое число X. Заполните массив, состоящий из нечётного числа элементов, целыми числами, так чтобы средний элемент массива был равен X, слева от не-го элементы стояли по возрастанию, а справа по убыванию. Соседние элементы отличаются на единицу. Например, при X = 3 массив из 5 элементов заполняется так: 1 2 3 2 1.
7. Заполните массив случайными числами на отрезке [20; 100]. Запустите программу несколько раз, объясните полученные результаты.

8. С клавиатуры вводятся целые значения X и Y (X < Y). Запол-ните массив случайными числами на отрезке [X; Y].

9. Массив введён следующим образом:

A = [1, 2, 3, 4, 5]

При каких значениях x программа завершится аварийно?


86 http://kpolyakov.spb.ru

05.04.2019 Информатика, 8 класс К.Ю. Поляков, Е.А. Еремин



print( A[x+3] ) for i in range(3):
а)

б)
в)


г)
д)
е)


A[i+x] = A[i]

for i in range(x-2):

A[i] = 2*(x-i) for i in range(4):

A[i+1] = A[i] + x

for i in range(x+1,x+6):

A[i] = x*x

for i in range(5):

A[i+2] = x + i

10. Чему будут равны элементы массива



A = [1, 2, 3, 4, 5]

после выполнения цикла? Здесь N = 5 длина массива.

for i in range(N):
а)

б)
в)


г)
д)
е)


A[i] = A[i]*A[i] for i in range(N-1):

A[i] = A[i+1]

for i in range(N-1):

A[i+1] = A[i]

for i in range(N-1,0,-1):

A[i] = A[i-1]

for i in range(1,N):

A[i] = A[i-1] + 1 for i in range(1,N):

A[i] = A[i-1]*2

11. *Дан фрагмент программы:

j = 1

for i in range(N):

if A[i] == A[j]:

j = i

При каком условии после выполнения этого фрагмента по-лучится j = 0? j = 3? j = N 1?

12. Введите с клавиатуры значения элементов массива, уве-личьте каждый элемент в 2 раза и выведите полученный массив на экран.

87 http://kpolyakov.spb.ru

05.04.2019 Информатика, 8 класс К.Ю. Поляков, Е.А. Еремин

13. Введите с клавиатуры значения элементов массива и уве-личьте на 5 значения всех элементов массива, кроме перво-го и последнего.

14. В массиве чётное число элементов. Введите с клавиатуры значения элементов массива и выполните две операции:

а) увеличьте на единицу значения всех элементов в первой

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

б) увеличьте в 2 раза значения всех элементов во второй

половине массива.

15. *Введите с клавиатуры значения элементов массива и най-дите их среднее арифметическое.

88 http://kpolyakov.spb.ru



05.04.2019 Информатика, 8 класс К.Ю. Поляков, Е.А. Еремин



Достарыңызбен бөлісу:
1   ...   27   28   29   30   31   32   33   34   ...   38




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет