Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Лекция 3. Массивы и матрицы. Итерационные циклы.

Лекция 3. Массивы и матрицы. Итерационные циклы. (Воробьева И.А. - Информатика. Язык Паскаль)

PDF-файл Лекция+3.+Массивы+и+матрицы.+Итерационные+циклы. (Воробьева И.А. - Информатика. Язык Паскаль) Информатика (112489): Книга - 2 семестрЛекция+3.+Массивы+и+матрицы.+Итерационные+циклы. (Воробьева И.А. - Информатика. Язык Паскаль) - PDF (112489) - СтудИзба2021-10-04СтудИзба

Описание файла

Файл "Лекция+3.+Массивы+и+матрицы.+Итерационные+циклы." внутри архива находится в папке "Воробьева И.А. - Информатика. Язык Паскаль". PDF-файл из архива "Воробьева И.А. - Информатика. Язык Паскаль", который расположен в категории "". Всё это находится в предмете "информатика" из 2 семестр, которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст из PDF

1Воробьева И.А. «Информатика. Язык Паскаль»4. МАССИВЫ И ИТЕРАЦИОННЫЕ ЦИКЛЫ В ПАСКАЛЕ4.1. Итерационные циклы в ПаскалеИтерационный цикл – это цикл, в котором заранее не известночисло повторений тела цикла. Выход из итерационного циклаосуществляется при выполнении заданного условия. Выделяют два видаитерационных циклов – цикл с предусловием и цикл с постусловием.Цикл с предусловием проверяет условие ДО выполнения тела цикла.В Паскале это «условие выполнения цикла»:1) проверка условия → 2) тело цикла.Цикл с постусловием проверяет условие ПОСЛЕ выполнения цикла.В Паскале это «условие завершения цикла»:1) шаг цикла → 2)проверка условия.ЦИКЛ С ПРЕДУСЛОВИЕМЦИКЛ С ПОСТУСЛОВИЕМТЕЛО ЦИКЛАПРОВЕРКАУСЛОВИЯНетДаПРОВЕРКАУСЛОВИЯДаТЕЛО ЦИКЛАНетМожет ни разу не выполниться Один раз выполнится всегдаУсловие = TRUE → выполнитьУсловие = TRUE → завершить12Воробьева И.А. «Информатика. Язык Паскаль»Замечание 4.1.

Цикл с постусловием в других языках, например в языкеСи, проверяет не условие завершения цикла, а условие продолженияцикла. Все зависит от реализации конструкции, принятой в конкретномязыке. Поэтому, основным отличием итерационных циклов является: ДОили ПОСЛЕ выполнения тела цикла проверяется условие.Конструкции итерационных циклов в Паскале.ЦИКЛ С ПРЕДУСЛОВИЕМWHILE условие DO<операция >;i:=6;While i <=5 Dowrite(‘Не выполнится’);i:=5;While i <=5 Dowrite(‘выполняетсябесконечно’);WHILE условие DObegin<операция 1>;<операция 2>;…<операция N>;end;ЦИКЛ С ПОСТУСЛОВИЕМREPEAT<операция >;UNTIL условиеi:=6;Repeatwrite(‘выполняетсябесконечно’);Until i <=5i:=5;Repeatwrite(‘Один раз выполнится’);Until i <=5REPEAT<операция 1>;<операция 2>;…<операция N>;UNTIL условиеВАЖНО! Циклу Repeat..Until ненужны операторные скобкиBegin..End.23Воробьева И.А.

«Информатика. Язык Паскаль»4.2. Связь между параметрическим и итерационным цикламиПараметрический цикл можно реализовать с помощью конструкции«цикла с предусловием» — While..Do и «цикла с постусловием» —Repeat..Until. Нет никакого смысла в простом переписываниипараметрического цикла с помощью итерационного, так как конструкцияFOR была создана как раз для облегчения синтаксического чтения кода1программы в определенных видах циклов.

Однако знать о взаимосвязиполезно. Например, в языке Паскаль замена FOR на WHILE или REPEATвозникает в следующих случаях: если нужно изменить шаг параметрического цикла, который жесткорегламентирован в FOR, как «±1»; если нужно обеспечить досрочный выход из параметрического циклапри определенных условиях; если нужно взять под собственный контроль счетчик цикла, бытьуверенным в его значении после цикла, иметь возможность изменятьего содержимое не только на стандартный шаг приращения, а покакой-то более сложной логике.Замечание 4.2. По последнему пункту напомним, что в языке Паскальзначения счетчика конструкции FOR хоть и не зпрещено напрямуюизменять самостоятельно в теле цикла, однако поведение программногокода после этого никак не регламентировано.

Тоже самое касается изначения счетчика после завершения цикла FOR, например в кодеi:= -10;For i:=1 to 5 dowrite (‘Счетчик i используем, но не меняем. i= ‘, i:4);Z:= i;// не определено – Z будет равно: -10, 5 или 6.Замечание 4.3. Конечно, досрочный выход можно обеспечить и явнымGoto или скрытыми, что уже не так зазорно, операторами Goto, такими какBreak, Continue. Некоторые же, не зная, как правильно «готовить кошек»,умудряются использовать даже Exit и Halt «на ровном месте». Однако в1Так называемое понятие «компьютерный сахар».34Воробьева И.А. «Информатика.

Язык Паскаль»первой лекции мы уже обсудили почему не будем пока использоватьтакой подход в простейших программах.Замечание 4.4. Обратите внимание, что в инструкции While..Do требуютсяоператорные скобки begin-end для выполнения нескольких операторов втеле цикла, а в инструкции Repeat..Until этого не требуется, так как словаRepeat и Until одновременно сами являются операторными скобками.Рассмотрим реализацию всех трех конструкций циклов на примерезадачи суммирования элементов c четными индексами в одномерноммассиве A(n).ПАРАМЕТРИЧЕСКИЙ ЦИКЛЦИКЛ С ПРЕДУСЛОВИЕМA(n)A(n)Sum = 0i=1Sum=0i=1; +1; ni≤nНЕТНЕТДАi mod 2 =0НЕТДАSum = Sum + A[i]i mod 2 =0ДАSum = Sum + A[i]Suminc( i )Sumконецконец… // ввод n и массива ASum:= 0;for i:=1 to n doif i mod 2 = 0 thenSum:=Sum+A[i];write(‘Sum=’, Sum:6);……// ввод n и массива ASum:= 0;i:=1;while i <= n dobeginif i mod 2 = 0 thenSum:=Sum+A[i];inc(i):end;45Воробьева И.А.

«Информатика. Язык Паскаль»write(‘Sum=’, Sum:6);…Как видим, простое переписывание параметрического цикла витерационный цикл не дет ничего, кроме усложнения кода, однакоценность итерационного цикла в большей гибкости. Перепишем решениезадачи, чуть хитрее.ЦИКЛ С ПРЕДУСЛОВИЕМЦИКЛ С ПОСТУСЛОВИЕМA(n)ДАA(n)ДАn<2 НЕТSum = 0i=2i≤nn<2 НЕТSum = 0i=2НЕТSum = Sum + A[i]i=i+2ДАSum = Sum + A[i]i>ni=i+2‘Err_N’Sum‘Err_N’mНЕТДАSumконецконец… // ввод n и массива Aif n < 2 thenwrite(‘Ошибка размерности ’, n)else beginSum:= 0;i:= 2;while i <= n do beginSum:=Sum+A[i];i:= i+2;end;write(‘Sum=’, Sum:6);…// ввод n и массива Aif n < 2 thenwrite(‘Ошибка размерности ’, n)else beginSum:= 0;i:= 2;repeatSum:=Sum+A[i];i:= i+2;until i > n;write(‘Sum=’, Sum:6);56Воробьева И.А.

«Информатика. Язык Паскаль»end;…end;…Число строк кода стало даже больше, так как нам пришлосьпроверять, что размерность n не меньше двух. Но сам код сталэффективней с точки зрения, так называемой сложности алгоритма –оценки объема вычислений, зависящих от размера входных данных.В нашем случае размер входных данных – это длина массива. Новыйалгоритм делает в два раза меньше шагов, чем предыдущие, так какпросматривает не все, а только четные элементы. На самом деле, в науке,называемой теорией сложности алгоритмов, уменьшение числа шаговвдвое – практически неразличимо, но при построении алгоритма решениязадачи принято всегда придерживаться оптимального способа, если этоне влияет на какие-то иные характеристики в сторону ухудшения.Замечание 4.5.

Как правило, «иной характеристикой» является объемпамяти (особенно оперативной памяти компьютера), который потребуеталгоритм для своей работы. Вся оптимизация решений задач крутитсявокруг двух основных характеристик: скорости выполнения и объематребуемой памяти.Мы рассмотрели использование итерационного цикла дляизменения шага в диапазоне изменения счетчиков, сокращаябесполезный перебор и лишние проверки в массиве.

При необходимости,мы могли бы изменять шаг непосредственно в процессе просмотрамассива, например в задаче: «если в массиве встретится равный нулюэлемент с четным индексом, подсчитать суммы всех элементовмассива, стоящих после него». Приведем упрощенный фрагмент кодарешения этой задачи, без альтернативного решения. Вопрос: каким ономожет быть?VARn, i, step: byte;Sum: real;// размерность, индекс, шаг индекса// значение суммы элементов67Воробьева И.А.

«Информатика. Язык Паскаль»A: array[1..10] of real;BEGIN…// массив// ввод n (от 1 до 10) и массива A из вещественных чиселif n < 2 thenwrite(‘Ошибка размерности ’, n)else beginSum:= 0;// начальное значение суммыi:= 2;// начальное значение индексаstep:=2;// начальное значение шага индексаwhile i <= n do beginif step = 1 thenSum:= Sum+A[i]elseif A[i] = 0 thenstep:= 1;i:= i + step;end;write(‘Sum=’, Sum:6);end;…END.4.3. Досрочный выход из итерационного цикла.

Метод флажка«Условие» в инструкциях While..Do и Repeat..Until может быть какпростым, так и сложным – это переменные, константы или выражениялогического типа boolean.При решении задач с досрочным выходом из циклов используютсложное условие контроля счетчика и флага. Флаг – это, как правило,логическая переменная, которая свидетельствует о наличии илиотсутствии искомого признака.78Воробьева И.А. «Информатика. Язык Паскаль»Типичные задачиформулировкам:поискапризнакасводятсякдвумосновнымЗадача 1. найти хотя бы один элемент, удовлетворяющийусловию (вариации: первый, последний элемент);Задача 2.

проверить, что все элементы удовлетворяют условию.Этиформулировкивзаимозаменяемыивзаимообратны.Действительно, «проверить, что есть хотя бы один отрицательный(<0) элемент» обратно по смыслу «проверить, что все элементынеотрицательны (≥ 0)».Часто формулировки явно не выделены именно такими фразами, новсе равно решение сводится либо к поиску решения задачи 1, либо задачи2.Пример 4.1. «Проверить, что массив упорядочен по возрастанию» – это,по сути, или найти первую неупорядоченную пару (задача 1) илипроверить, что все элементы упорядочены (задача 2).Какой вопрос по уточнению задачи должен возникнуть2?Пример 4.2.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5160
Авторов
на СтудИзбе
439
Средний доход
с одного платного файла
Обучение Подробнее