Gazmarket59.ru

Газ Маркет 59
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Синтаксис оператора цикла со счетчиком

Цикл со счетчиком

Проблемы никогда нельзя разрешить
с тем же образом мыслей, который их породил.

Хотелось бы отнести приведенный урок к Методике развития критического мышления. По моему скромному мнению весь процесс изучения предмета «Информатика» должен быть построен на принципе «конструирования собственных знаний в рамках своей собственной поисковой деятельности». И главный акцент я ставлю на построение (создание) алгоритмов. Аспект этот сложный, но весьма заманчивый, с точки зрения развития логического мышления и воображения. Хотя в последнее время наблюдается «суровая алгоритмизация» всех школьных предметов. Дабы облегчить процедуру восприятия учителя прибегают к самым различным способам и методам. Главное при этом, на мой взгляд, чувство меры – играя, не «заигрывать». В приведенном примере все эмоции опущены, и я постаралась изложить его максимально «сухо».

Почему цикл? Согласно практике (моей) – анализ циклов вызывает затруднения и наибольшее число ошибок, поэтому делается акцент на цикл. Почему со счётчиком? А если с ним разобраться сразу и основательно, остальные даются «легко и непринуждённо».

Зададим структуру урока.

Предположим, урок содержит три основных этапа (таких родных и близких).

  1. Актуализация знаний.
  2. Изучение нового материала.
  3. Применение приобретенных знаний и отработка навыков.

1. Актуализация.

Пытаемся пробудить (вызвать из памяти), систематизировать и конкретизировать то, что ученики уже знают. Контекстом (направлением) является тема урока. На обилие (или отсутствие) высказываний делаем свои уточнения, дополнения, ставим акценты, привлекаем внимание к содержательной линии урока всеми доступными средствами.

2. Новая информация.

Выдаём по иерархическому принципу, то есть «потомок может иметь только одного родителя, а родитель может иметь множество потомков». Здесь, пожалуйста, и кластеры, и домены, и суффиксы, и префиксы. А в терминах ООП (объектно-ориентированного программирования) – классы, образцы класса, наследуемые признаки, и т.д. и т.п. Ещё иногда называют «маяковый» метод – «в темную большую комнату кидают факелы, а затем разглядывают, что вокруг них». Главное – каждый сам для себя фиксирует нужную информацию, и разные записи конспектов приветствуются, как и разные формулировки.

3. Закрепление.

Главное, на мой взгляд, дать почувствовать каждому ученику уверенность в совершаемых действиях. Решающим являются навыки самоконтроля и самопроверки – всегда есть множественность выбора (хотя бы два). Если выбора нет, это должно вызвать подозрение на ошибочность рассуждений. Хорошо, если один высказывается, а другой ищет слабые места или нечто аналогичное. Возможен похожий диалог с компьютером. И даже интерактив здесь будет уместен.

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

Первый вопрос зададим в лоб: — Какие образы, впечатления, ассоциации у вас вызывает слово «цикл»? (Высказывания учеников).

— Попробуйте сформулировать определение цикла на основе того, что мы только что услышали. (Высказывания учеников).

— Цикл, дословно с греческого – круг. Какие действия можно назвать циклом? (Высказывания учеников).

— Итак, цикл – повторяющееся действие. А может действие повторяться бесконечно? Что бы нам ещё хотелось? (Высказывания учеников).

— Итак, цикл – повторяющееся действие + условие.

Читайте так же:
Схемы подключения счетчика через два трансформатора напряжения

Можно вспомнить сказки – дед тянул репку, позвал бабку, позвал внучку, позвал Жучку и т.д. Какое действие? Тянул. Какое условие? Пока не вытянул. Другие примеры циклов.

— А теперь вспомните «семь раз отмерь – один раз отрежь». Какое условие? (Высказывания учеников).

— Да, здесь считаем. Для счёта надо задать начало и конец – от .. и до .. (Высказывания учеников).

— Начинать можно с «0», с «1», да и вообще с чего угодно! Как Робинзон Крузо считал дни? (Ставил зарубки).

— А начал он с какого числа? (С того, когда попал на остров).

— Другие ставят палочки на листке бумаги, иногда одну за несколько единиц. Кто покупал куриные яйца? Как их вам считали? (Парами).

— Это называется шагом. Можно считать десятками, сотнями, любым удобным шагом.

— Итак, действие, выполняемое определенное количество раз – это цикл со счётчиком. Здесь нужен помощник, который следит от какого до какого и через сколько. Вот этот помощник и есть счётчик. Вы сдаёте норматив по подтягиванию на перекладине, а кто-то стоит рядом и считает. Изобразим:

— Для записи на языке программирования нам понадобится переменная счётчика, а что ещё? (Начальное её значение, конечное значение и шаг).

— А какой минимум служебных слов? (Высказывания учеников).

— Минимум 4 служебных слова: «для» For, «до» To, «шаг» Step, «следующий» Next.

Читаем: для икс от 1 до 10 с шагом 2 делаем следующий икс.

Если шаг равен единице (что бывает очень часто), то Step не пишется (говорят «по умолчанию — default — шаг равен единице»). Теперь рассмотрим пример:

For x=3 To 10 Step 5
y= x*x
Next x

— Проанализируем, сколько шагов сделает цикл? Какое значение икс получит по завершении цикла? (Ответ: 2 шага, x=13).

— А какое значение будет у игрек? (Ответ: y=64).

— Переменная цикла может изменяться в цикле. Сами считаем:

For x=2 To 6 Step 2
x= x+x
Next x

(Ответ: 2 шага, x=14).

— Подробно (кто-нибудь, кто быстро въехал):

x=2 (присвоили переменной цикла начальное значение).

x=2+2 (теперь x=4).

x=4+2 (Next к x прибавляется шаг, теперь x=6).

6>6 (сравниваем переменную цикла с конечным значением) – нет – возврат.

x=6+6 (новое значение x=12).

x=12+2 (Next к x прибавляем шаг, теперь x=14).

14>6 (сравниваем x с конечным значением) – да – стоп, выход из цикла.

Теперь сами пыхтим над заданиями. Разбиваемся на группы (например, по два человека).

— Я вам даю ответ примера с отрицательным шагом, а вы сами определите (догадайтесь здесь нехорошее слово – нужна уверенность), что здесь меняется и выполните упражнения.

For x=9 To 2 Step -5
x= x+1
Next x

— Цикл совершит 2 шага, а переменная цикла на выходе будет =1.

Делают упражнения по карточкам.

— Следующий раз разберём выход из цикла по условию и рассмотрим циклы с пост- и предусловием.

Читайте так же:
Оплата жкх по нормативам при наличии счетчика

Подводим итоги. Награждаем хвалебными словами. Высказываем замечания. Задаём и, при необходимости, поясняем домашнее задание.

Один из вариантов самостоятельной работы

    Определите, какое количество раз выполняются операторы цикла?

FOR X = 10 TO 12 STEP 2
Y = X*X
NEXT X

FOR X = 3 TO 5
X = X+1
NEXT X

FOR X = 1 TO 12 STEP 5
X = 2*X
NEXT X

FOR X = -2 TO 1
X = -X
NEXT X

FOR X = 3 TO 1 STEP –2
X = X-2
NEXT X

FOR X = 14 TO 19 STEP 6
X = 6*X
NEXT X

FOR X = 4 TO 12 STEP 5
X = 2*X
IF X>7 THEN EXIT FOR
NEXT X

  • Какое значение выдаст программа на экране монитора?
  • FOR X = 1 TO 17 STEP 9
    IF X>12 THEN EXIT FOR
    X = 2*X
    NEXT X

    Оператор цикла do while

    Последний оператор цикла, который мы рассмотрим – это цикл do while. Он имеет следующий синтаксис:

    Отличие этого цикла от двух предыдущих в том, что он сначала выполняет тело цикла, и только потом проверяет условие цикла. Когда используется такая реализация? Например, мы вводим с клавиатуры некий код и будем продолжать выполнение программы только после того, как пользователь введет верный код. Своего рода проверка пароля. Запишем эту программу.

    Здесь вначале задается константа в виде целочисленной переменной со значением 13. Это тот код, который и должен ввести пользователь. Затем, выполняется тело цикла, в котором пользователю предлагается ввести код. Если введенный код не будет равен заданному, то условие цикла do while будет истинным и он продолжится, то есть, пользователю будет предложено снова ввести код. Это будет продолжаться до тех пор, пока пользователь не введет число 13. Тогда условие цикла окажется ложным и программа перейдет к следующему оператору. Вот так работает этот цикл.

    Оператор цикла с последующим условием Repeat

    Формат оператора:

    Repeat
    операторы циклической
    части программы
    Until логическое выражение

    Здесь Repeat (повторять), Until (до тех пор) – зарезервированные слова языка.

    Блок-схема оператора цикла с последующим условием:

    Оператор цикла с последующим условием Repeat работает следующим образом.

    Операторы циклической части повторяются, по крайней мере, один раз до тех пор, пока значение логического выражения ложно (False) . Условием прекращения циклических вычислений является истинное (True) значение логического выражения.

    Итак, сначала выполняется циклическая часть, а затем проверяется условие. При этом нижняя граница операторов циклической части обозначена словом Until , поэтому нет необходимости заключать операторы циклической части в операторные скобки Begin. End .

    ЗАДАЧА 3. Вычислить сумму нечетных целых чисел от 0 до 99 (см. Задачу 2).

    Результаты работы программы:

    Сумма нечетных чисел равна: 2401

    ЗАДАЧА 4 . Написать программу, которая выводит таблицу квадратов первых пяти целых положительных нечетных чисел

    Результаты работы программы:

    Таблица квадратов
    ==================
    Число квадрат
    ——————
    1 1
    3 9
    5 25
    7 49
    9 81
    ——————

    # Функция range()

    Теперь пришло время познакомиться с встроенной в Python функцией range() . «Range» переводится как «диапазон». Она может принимать один, два или три аргумента. Их назначение такое же как у функции randrange() из модуля random. Если задан только один, то генерируются числа от 0 до указанного числа, не включая его. Если заданы два, то числа генерируются от первого до второго, не включая его. Если заданы три, то третье число – это шаг.

    Читайте так же:
    Как изменить коэффициент пересчета счетчика

    Однако, в отличие от randrange() , функция range() генерирует не одно случайное число в указанном диапазоне. Она вообще не генерирует случайные числа. Она генерирует последовательность чисел в указанном диапазоне. Так, range(5, 11) сгенерирует последовательность 5, 6, 7, 8, 9, 10 . Однако это будет не структура данных типа «список». Функция range() производит объекты своего класса – диапазоны:

    Обращение к элементам списка:

    Хотя изменять их нельзя, так как, в отличие от списков, объекты range() относятся к группе неизменяемых:

    Результатом выполнения будет ошибка:

    Оператор break моментально прерывает дальнейшее выполнение кода внутри цикла:

    Использование операторы break, как и в случае с continue, допускаются только внутри циклов.

    Оператор break также доступен внутри циклов for:

    Обратите внимание, что 3 и 4 не выводятся после окончания цикла.

    Если цикл имеет условие else, оно не выполняется, когда цикл завершается с помощью оператора break.

    Синтаксис оператора цикла со счетчиком

    Следующий «слой» конструкций языка программирования – операторы. Они создают то, что в обыденном сознании ассоциируется с понятием алгоритм – описание последовательности действий, выполняемых программой, или логика ее работы. Это, в свою очередь, ассоциируется с понятием «блок-схема», что, в целом, довольно близко к истине. На этом уровне языки программирования проявляют завидное единообразие, поскольку количество видов управляющей логики программы ограничено. В Си/Си++ реализован общий для большинства языков программирования «джентльменский набор» управляющих конструкций:

    · линейная последовательность действий ;

    · условная конструкция (если-то-иначе);

    · конструкция повторения (цикл) ;

    · переход (и его разновидности).

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

    · элементы блок-схемы соответствуют основным компонентам системы команд компьютера с размещением программы в линейной памяти (см. 1.2) – командам обработки данных, проверки условий и безусловных (условных) переходов;

    · блок-схемы являются естественным инструментом технологии «исторического» программирования, базирующейся на развертке процесса выполнения проектируемой программы во времени (см. 3.2).

    Блок-схема содержит элементы трех видов:

    Принцип вложенности и структурированные блок-схемы

    Рис.15.1. Структурированные конструкции и блок-схема

    Операторы линейной последовательности действий

    for (i=0; i // Обычный цикл

    for (i=0; A[i]!=0 && i // Цикл с пустым оператором

    Управляющая конструкция — линейная последовательность действий является основной в языках программирования, но в синтаксисе она, как правило, задается неявно. Банальность, о которой даже неудобно говорить, звучит так: последовательно записанные действия одного уровня выполняются последовательно.


    Рис.15.2. Линейная последовательность операторов

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

    В связи с этим для любой последовательности действий в языке программирования важно только обозначить ее начало и конец. Во многих языках программирования для этой цели используются ключевые слова-ограничители, которые содержатся в конструкции верхнего уровня, куда заключена последовательность. Например, а Бейсике тело цикла представляет собой конструкцию do -последовательность операторов – loop .

    Читайте так же:
    Таймер счетчик по переполнению

    В Си используется другой принцип: если составной частью управляющей конструкции является единственный оператор, то он никак синтаксически не выделяется. Если же составной частью является последовательность операторов, то она заключается в фигурные скобки ( <>) и образует блок.

    Условные операторы

    Единственный условный оператор имеет две разновидности: с else и без него.

    В качестве условия выступает выражение, которое может иметь любой целый результат и интерпретируется в соответствии с принятыми в Си соглашениями о логических значениях: 0 –«ложь», не 0 – «истина». Круглые скобки являются частью синтаксиса (потому что отсутствует другой ограничитель выражения, например ключевое слово then). Действует он как и во всех языках программирования: если значение выражения есть «истина», то выполняется первый оператор, если «ложь» — второй (после else). Конструкция является структурированной, обе ветви – прямая и альтернативная – «сливаются» в одну

    Операторы цикла

    for (i=0; i тело цикла для i…

    Операторы перехода

    Простая последовательность, условный оператор и цикл составляют «прожиточный минимум» операторов, при помощи которых можно написать любую программу. Они соблюдают строгую иерархию синтаксической и логической вложенности операторов одного в другой. Но существует оператор, нарушающий этот установленный порядок, который позволяет из любой точки программы переместиться в другую, разумеется, в пределах одной функции. Это действие называется «переходом» («передачей управления»), а сам оператор — оператором перехода (goto). Для указания оператора, к которому производится переход из данной точки программы, используется метка. Метка — это идентификатор, ограниченный двоеточием и поставленный перед оператором, который в таком случае называется помеченным:

    · оператор генерации исключения throw используется в Си++ как средство обработки ошибок, выполняя, в том числе, и действия, эквивалентные оператору return (см. 12.2)

    for (i=0; i m1: i++) // иллюстрация выполнения continue, break, return

    if (A[i]==0) continue; // goto m1;

    if (A[i]==-1) return; // goto m2;

    if (A[i] break; // goto m3;

    Оператор switch

    case 1: n=n+2; break; // m1: n=n+2; goto mend;

    case 2: n=0; break; // m2: n=0; goto mend;

    case 4: n++; break; // m4: n++; goto mend;

    default: n=-1; // mdef: n=-1;

    case ‘ ‘: . break; // if (c==’ ‘)

    case ‘+’: . break; // if (c==’+’)

    case ‘-‘: . break; // if (c==’-‘)

    sign=0; // Ветвь для значения c, равного ‘+’,

    case ‘-‘: sign=1; // для значения ‘-‘

    Еще один «джентльменский набор»

    Набор управляющих конструкций алгоритма может быть различным и избыточным. Но минимально необходимой является триада: для архитектурно-ориентированной логики – это действие, условие, переход. Структурированные конструкции – последовательность, выбор (ветвление), повторение (цикл) – также обладают необходимой полнотой. Но на практике встречается еще одна, довольно экзотическая триада: последовательность, ветвление и рекурсия. Являясь технологическим приемом программирования (см. 7.1), она способна, как минимум, заменить конструкцию повторения (цикл). Существуют языки программирования (ПРОЛОГ), а также математические формализмы (формальные грамматики, частично-рекурсивные функции), опирающиеся на эту триаду.

    «Историческое» программирование, программирование на уровне архитектуры (системы команд) — Ассемблер

    Читайте так же:
    Счетчик всхн расшифровка всхн

    Технология структурного программирования

    Функциональное программирование (ПРОЛОГ), представление синтаксиса в формальных грамматиках (трансляторы), частично-рекурсивные функции (теория алгоритмов)

    Подводные камни

    Особенность синтаксиса Си состоит в том, что последовательности управляющих конструкций, отличающиеся буквально на один символ, могут быть синтаксически правильными, но давать различные последовательности выполнения действий в программе. Это касается, прежде всего, тела цикла, где обнаруживается максимальное количество ошибок программирования (но то же самое можно отнести и к составным частям условного оператора). Итак, тело цикла может иметь четыре различных варианта реализации :

    · простой (первичный) оператор – выражение, ограниченное символом «;»;

    · единственный оператор, имеющий произвольную внутреннюю структуру своего тела – условный, цикл, переключатель;

    · составной оператор – блок, содержащий последовательность операторов, объединенную скобками « <>».

    Отсюда следует, что символ «точка с запятой» нельзя расставлять «для надежности», он может выступить в качестве пустого оператора, отрезав заголовок цикла от его настоящего тела. Аналогично, при усложнении тела цикла в процессе модификации программы (вместо одного оператора – последовательность из нескольких) не нужно забывать объединять получающиеся последовательности в блоки. Иначе к телу цикла будет отнесен только первый из них.

    for (int s=0,i=0; i // Сорок раз по разу

    for ( int s =0, i =0; i i ++) ; // Ни разу сорок раз

    s = s + A [ i ]; // Один раз – после (со значением A [40] вне массива)

    // «Гильотина» — тело цикла отдельно от «головы»

    Дополнительные операторы, используемые в циклах на Питоне

    Однако на практике бывает очень много ситуаций в которых нужно игнорировать часть блока операторов или наоборот, принудительно выйти из цикла, если все необходимые данные уже в нём подсчитаны. Их одинаково хорошо можно использовать в циклах for и while. Посмотрим как они работают.

    Оператор следующего прохода continue

    С помощью этого оператора начинается следующий проход цикла, минуя оставшиеся после него операторы в теле цикла.

    Этот пример делает цикл по строке и по условию проверяет каждый символ на соответствие с числом 3. Если находит его, то увеличивает счётчик a, а в самом конце выводит общее число троек в строке.

    Оператор прерывания цикла break

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

    Результат выполнения программы

    Инструкция проверки прерывания else

    Для завершения цикла более естественным образом, применяется, как вы знаете в условном операторе if. В цикле эта команда будет определять было ли произведено прерывание инструкцией break. Если это имеет место, то выполняется блок операторов, стоящих за этой инструкцией.

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

    Здесь главное не промахнуться с расстановкой отступов, у else их нет, так как она выше проверки условия if. если сделаете правильно — код заработает правильно.

    Вот так может быть выполнен этот код, если семёрка встречается

    а вот так, если её нет в строке

    На этом я попрощаюсь с вами. Разбирайте примеры по этой теме.

    голоса
    Рейтинг статьи
    Ссылка на основную публикацию
    Adblock
    detector