Лекция 6. Массивы. Параметрический цикл (Воробьева И.А. «Информатика. Язык Питон» (2016))
Описание файла
Файл "Лекция 6. Массивы. Параметрический цикл" внутри архива находится в папке "Воробьева И.А. «Информатика. Язык Питон» (2016)". PDF-файл из архива "Воробьева И.А. «Информатика. Язык Питон» (2016)", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст из PDF
1Воробьева И.А. «Информатика. Язык Питон»МассивыОдномерные массивы и матрицы. Простейшие алгоритмы в массивах: поиск,экстремумы, накопление сумм и произведений. Просмотр массива: полностью,по частям, с досрочным выходом.5. МАССИВЫ И ПАРАМЕТРИЧЕСКИЕ ЦИКЛЫ5.1.
Параметрический циклНапоминание.Цикл – повторение выполнения однотипных действий (тела цикла) спроверкой условия необходимости повторения этих действий.Параметрический цикл – цикл, в котором заранее известно, сколькоповторений выполнения тела необходимо совершить.Этот цикл управляется параметром-счетчиком, который при повторении выполнениятела цикла изменяется от заданного начального значения до заданного конечного значения сфиксированным шагом (шаг ≥ ±1).Блок-схема параметрического циклаРисунок 5.
1.2Воробьева И.А. «Информатика. Язык Питон»Если в языке программирования реализована синтаксическаяконструкция параметрического цикла, то это вовсе не означает, что онабудет полностью идентична в разных языках.Синтаксис параметрического цикла for..in в Python предписываетосуществлять итерации по последовательности объектов, то естьосуществляет проход по всем элементам последовательности,заданной в команде.Здесь важно то, что последовательность объектов в Python необязательно состоит только из чисел, например можно предложитьпоследовательность из строк [‘мама’, ‘папа’, ‘брат’, ’сестра’] и сделатьчетыре итерации по этой последовательности, что бывает оченьудобно. Однако именно числовые последовательности дают большегибкости в параметрическом цикле, и мы это увидим в примерах ниже.for <cчетчик> in <последовательность> :<операция > # тело цикла – это единственная инструкцияЗдесь <cчетчик> будет принимать последовательно все значения,которые заданы в <последовательности>, например:for i in [3]:print (‘Это сообщение выведется ‘, i-2, ‘ раз’)на экране увидим:Это сообщение выведется 1 разтак как последовательность состоит из единственного числа ‘3’ ипеременная примет его значение ()for <cчетчик> in <последовательность> :<операция 1><операция 2># тело цикла – несколько инструкций…<операция N>else: # как и в конструкции while не обязательный, но удобный# блок, который выполнится один раз по окончании цикла<одна операция или несколько операций>3Воробьева И.А.
«Информатика. Язык Питон»Пример 5.1.for a in [2, 1, 0, 2, -7] :print (a)else:print(‘Цикл завершен’)на экране увидим, что примет последовательно все заданныезначения, после чего отработает блок else:2102-7Цикл завершенПример 5.2.for a in [‘мама’, ‘папа’, ‘брат’, ’сестра’] :print (a)else:print(‘- это вся моя семья.’)на экране увидим, что примет последовательно все заданныезначения, после чего отработает блок else:мамапапабратсестра- это вся моя семья.4Воробьева И.А. «Информатика.
Язык Питон» ВАЖНО! Запрещено 1 изменять значения параметра-счетчикавнутри цикла for. Эта переменная программистом не управляется (вотличие от конструкции цикла while). При этом, конечно же, узнавать и использовать значение счетчика внутри цикла можно. Как правило, в большинстве языков, значение такой переменнойсчетчика после завершения цикла не считается определенным,например, в приведенном выше коде примера 5.1., вы не можетебыть абсолютно уверены, что после завершения цикла for в переменной a будет значение «-7».
Просто привыкните использоватьпеременную-счетчик в конструкциях for исключительно, как внутреннюю переменную самого цикла.Функция range()А если мы хотим создать цикл, который отработает миллион итераций? Мыже не можем вручную набивать такую последовательность! Для формированияпоследовательности чисел в Python есть функция range().командарезультатСамая короткая форма записи функцииформирует арифметическуюпрогрессию из указанного числаэлементов, начиная с «нуля» и с шагом«+1».range(10)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]n=5range (n)[0, 1, 2, 3, 4]range (-7)1[] – пустая последовательность, таккак «-7» левее нуля и диапазон от0 до -7 с шагом +1 некорректенПрямого запрета нет, но в результате предсказуемое поведение программы на разных системах не гарантируется.5Воробьева И.А. «Информатика.
Язык Питон»Если указать два параметра функции, тоони будут указывать на диапазонзначенийc шагом «+1».Важно! Правая граница никогда непопадает в последовательность.range(5, 10)[ 5, 6, 7, 8, 9]range(-10, -5)[ -10, -9, -8, -7, -6]range(-5, -10)[] – некорректная командаПолная форма записи функции имееттри параметра (диапазони шаг) –она дает самые широкие возможностиза счет изменения размера шага и егознака.range(1, 10, 2)[1, 3, 5, 7, 9]range(1, 10, 3)[1, 4, 7]range(-5, -10, -1)[- 5, -6, -7, -8, -9]Функция range() и цикл for..inкомандаfor a in range(4) :print (a)результат0123for a in range(-5, -10, -2):print (a)-5-7-9for a in range (-7)print (a)for a in range(5, 5, 1):print (a)цикл не выполнится ни одногоразацикл не выполнится ни одногораза6Воробьева И.А.
«Информатика. Язык Питон»Так как алгоритм работы параметрического цикла единообразен и даже,можно сказать, – детерминирован (строго определен), нет необходимостииспользовать в блок-схемах такую тяжелую конструкцию, как на рисунке 5.1.Гораздо компактней и, что немаловажно, наглядней использовать следующееизображение параметрического цикла.зациклиливыход из циклаCЧ=НЗ; КЗ; ±ШАГТЕЛО ЦИКЛАЭто изображение в блок-схемах сразу отличимо от итерационных циклов.5.2. Массивы и параметрический циклМассив – структура данных в виде набора однотипных элементов,как правило, расположенных в памяти непосредственно друг задругом, пригодная для осуществления произвольного доступа к еёэлементам по номерам (индексам).Доступ к отдельным элементам массива осуществляется с помощьюИМЯ[индекс] – это ссылка на массив (на его адрес в памяти) суказанием номера нужного элемента.
Посмотрите на рисунок ниже:Рисунок 5. 2. Структура одномерного массива7Воробьева И.А. «Информатика. Язык Питон»Массивы с одним индексом называются – одномерными (аналог вектора вматематике). Массивы с двумя индексами называются – двумерными (аналогматрицы в математике). Формально индексов может быть больше (многомерныемассивы), но на практике такой подход в программировании встречается крайнередко.Статический массив – это массив, для которого заранее определено числоэлементов.В нашем курсе мы будем работать только со статическими структурами: статический одномерный массив; статический двумерный массив (матрица).Объявление массивов в Python (типы list, tuple)В языках, где существует собственный тип «статический массив», память подтакие массивы выделяется один раз; размер выделенной памяти фиксирован(число элементов, помноженное на число байт, занимаемых «элементом»2) и неизменяется за все время существования массива в программе.
В Python такоготипа нет, но есть два более гибких типа, которые нам подойдут для реализациимассивов.С помощью двух встроенных типов языка Python мы можем реализоватьдва вида массивов: изменяемый статический массив (с помощью типа список - list); статический массив – константа (с помощью типа кортеж - tuple).Отличия этих двух типов заключаются в том, что в первом (список) мыможем изменять первоначально заданные элементы в процессе работыпрограммы, а во втором (кортеж) – нет.Основные формы задания одномерных массивов:1. Имя массива = [тип-значение всех элементов ] * число элементов2.
Имя массива = [элемент0, элемент1,.. , элементN-1 ] – N элементов3. Имя массива = (элемент0, элемент1,.. , элементN-1 ) – N элементовКвадратные скобки означают изменяемый массив, а круглые –массив-константу.2Выделение памяти происходит чуть сложнее, но принципиально от указанного правила не отличается.8Воробьева И.А. «Информатика. Язык Питон»Если массив состоит из n-элементов, то говорят массив размерности n.Замечание 5.1. Хороший стиль программирования предполагаетиспользование именованных констант при определении массивов.Впрочем, именованная константа почти всегда предпочтительнейобычной в тех случаях, где константа имеет смысловую нагрузку.Например, в массивах ее смысловая нагрузка – размерность.Объясняется все очень просто.
Если в вашем коде число «10»встречается пятнадцать раз, причем в пяти случаях, как размерностьмассива, а в остальных десяти, как «просто число», то принеобходимости изменить «размерность массива» вам не придетсясканировать весь код в поисках «нужной десятки», если дляразмерности вы вовремя догадались сделать константу NMAX=10.Примеры объявлений массивов# РАЗДЕЛ КОНСТАНТNMAX=10LEN=9# РАЗДЕЛ ПЕРЕМЕННЫХgrad = [0.0] * 15 # изменяемый массив из 15-ти вещественных чисел. Послесоздания все элементы равны нулюNumber = [10]*LEN # изменяемый массив из 9-ти целых чисел.
Послесоздания все элементы равны «10»Kod = [‘’]*NMAX # изменяемый массив из 10-ти строковых переменных.После создания все элементы равны «пустой строке»KodA = [‘A’]*NMAX # изменяемый массив из 10-ти строковых переменных.После создания все элементы содержат букву «A»Kr= (0, 10, 5, -5, 2) # массив-константа (кортеж) из 5-ти целых чиселName = (‘Николай’, ‘Мария’, ‘Иосиф’) # массив-константа из трех строкFamily = [‘мама’, ‘папа’, ‘брат’, ’сестра’] #изменяемый массив из 4-х строкDat = [2.5, -7.0, 0.45] #изменяемый массив из 3-х вещественных чисел9Воробьева И.А.