Teres-1t.ru

Инженерные решения
5 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Программные блоки циклов и алгоритмических структур

Программные блоки циклов и алгоритмических структур

В оранжевой закладке палитры редактора Lego EV3 находятся блоки «Управление операторами». Это алгоритмические структуры, без которых невозможно создавать программы. С их помощью происходит запуск кода, переключение, прерывание, зацикливание и прочее. Еще их называют блоками последовательности действий. В верхней части пиктограмм расположена узкая оранжевая горизонтальная полоса.

управление операторами Lego Education EV3

блоки управления операторами Lego Education EV3

Всего во вкладке «Управление операторами» находится пять иконок слева направо:

  1. Начало
  2. Ожидание
  3. Цикл
  4. Переключатель
  5. Прерывание

План урока

Цикл for применяется если тело цикла необходимо выполнить определенное число раз. Цикл выполняется в следующем порядке:

  1. инициализация счетчика;
  2. проверка условия — если результат развен false — цикл завершается;
  3. тело цикла;
  4. изменение счетчика;
  5. проверка условия — если результат развен false — цикл завершается;
  6. тело цикла;
  7. изменение счетчика;
  8. … (и так далее пока при проверке условия не будет получен false ).

Как и в других подобных случаях, фигурные скобки не обязательны если внутри цикла всего один оператор.

Допустим, нам необходимо посчитать сумму чисел от 1 до 50:

Сопоставьте ход выполнения этой программы с описанным выше порядком — это полезное упражнение. Попробуйте изменить начальное и конечное значение счетчика цикла, оператор <= на какой-нибудь другой.

Табулирование функции на отрезке с заданным шагом

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

Алгоритм:
Для решения задачи в области определения функции вводится сетка – совокупность точек:

Тогда задача сводится к вычислению функции f в точках xi, то есть нужно вычислить:

var x, a, b, f, h: real; begin writeln(‘отрезок от . и до . ‘); readln(a, b); writeln(‘шаг’); readln(h); x := a; while x <= b do begin f := sqr(x) + ln(abs(x)); writeln(‘x= ‘, x, ‘ f= ‘, f); x := x + h; end end.

begin writeln(‘отрезок от . и до . ‘); var (a, b):=readReal2; var h:=readReal(‘шаг’); var x := a; while x <= b do begin var f := sqr(x) + ln(abs(x)); writeln(‘x= ‘, x, ‘ f= ‘, f); x := x + h; end end.

где начальное значение а=0.14х, шаг Δа=0.22

Результаты для x = 2:

var x, a, y, h: real; i:integer; begin writeln(‘ведите x’); readln(x); h:=0.22; a := 0.14*x; for i:=1 to 7 do begin y := (0.15*x + a)/(sqr(a)+sqr(x)); writeln(‘a =’, a, ‘ y = ‘, y); a := a + h; end end.

Читайте так же:
Счетчик населения земли как работает

var xn, xk, yn, yk, f, hx, hy,x,y: real; begin writeln(‘отрезок для x от . и до . ‘); readln(xn, xk); writeln(‘отрезок для y от . и до . ‘); readln(yn, yk); writeln(‘шаг для x’); readln(hx); writeln(‘шаг для y’); readln(hy); x := xn; y := yn; while x <= xk do begin while y <= yk do begin f := sqr(x) + ln(abs(y)); writeln(‘x= ‘, x, ‘ y= ‘, y, ‘ f= ‘, f); y := y + hy; end; x := x + hx; y:=yn; end end.

при всех х, изменяющихся на интервале [-1, 1] с шагом Δх = 0.2, и у, изменяющихся на интервале [0, 1] с шагом Δу = 0.1.
Результат:

Дополните код в местах, где стоят троеточия:

var x, y, z: real; // описание переменных begin writeln(‘x y z(x,y)’); x := -1.0; y := . ; // начальное значение while (x <= 1) do begin while (. ) do //запуск внутреннего цикла begin z := sin(x) + cos(y); write(‘ x=’, x:3:2, ‘ y=’, y:3:2, ‘ z=’, z:3:2 ); y := y + . ; writeln(); end; writeln(); x := . ; // изменение параметра х на шаг y:= 0; end end.

[Название файла: L3task11.pas ]

Exit и Halt

Процедура Pascal Exit служит для завершения работы того программного блока, в котором она используется (условный оператор, цикл, процедура…). Если Exit вызывается внутри процедуры или функции, то завершается работа данной процедуры/функции. Если процедура Exit находится в основном блоке программы, то это приводит к ее завершению.

Процедура halt в pascal завершает работу программы.

Потренируйтесь в решении задач по теме, щелкнув по пиктограмме:

Содержание урока

§4.1.1. Алгоритм и его свойства

§4.1.2. Алгоритмические структуры «ветвление» и «цикл»

§4.1.3. Подпрограммы. Рекурсивные алгоритмы

§4.1.4. Приёмы отладки программ. Трассировка программ

§4.1.5. Типовые алгоритмы

Алгоритмические структуры «ветвление» и «цикл»

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

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

Алгоритмическая структура ветвление может быть зафиксирована графически с помощью блок-схемы (рис. 4.1). В блок-схеме на рис. 4.1 альтернативные последовательности команд обозначены словами Серия 1 и Серия 2.

Читайте так же:
Корректор счетчика сг эквз

Рис. 4.1

Рис. 4.1

На языках объектно-ориентированного программирования, которые мы будем рассматривать в этой главе, алгоритмическая структура ветвление кодируется с использованием оператора If. После первого ключевого слова If должно быть записано условие. После ключевого слова Then (в языке Visual C# оно отсутствует) идёт последовательность команд (Серия 1), которая должна выполняться, если условие принимает значение «истина». После ключевого слова Else размещается последовательность команд (Серия 2), которая должна выполняться, если условие принимает значение «ложь».

В сокращённой форме оператора ключевое слово Else отсутствует. Тогда, если условие ложно, выполнение оператора условного перехода заканчивается и выполняется следующая строка программы.

Для реализации ветвления со многими вариантами серий команд используется алгоритмическая конструкция выбор. Конструкция «выбор» может быть зафиксирована графически с помощью блок-схемы (рис. 4.2).

Рис. 4.2

Рис. 4.2

В структуру выбора входят несколько условий, проверка которых осуществляется по порядку их записи в структуре выбора. При истинности одного из условий (Условие 1, Условие 2 и т. д.) выполняется соответствующая последовательность команд (Серия 1, Серия 2 и т. д.). Если ни одно из условий не является истиным, то будет выполнена последовательность команд Серия.

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

На языках объектно-ориентированного программирования конструкция выбор кодируется с использованием оператора выбора. На языке программирования Visual Basic .NET оператор выбора начинается с ключевых слов Select Case, на языке Visual C# — с ключевого слова switch, а на языке Lazarus — с ключевого слова Case.

После ключевого слова записывается выражение (переменная или арифметическое выражение). Заданное выражение сравнивается с определёнными значениями. При истинности одного из условий начинает выполняться соответствующая серия команд. Если ни одно из условий не истинно, то выполняется серия команд после ключевого слова Else (в языках Visual Basic .NET и Lazarus) или ключевого слова default (в языке Visual С#).

В сокращённой форме оператора ключевое слово Else (default) отсутствует. Тогда, если все условия ложны, выполнение оператора выбора заканчивается и выполняется следующая строка программы.

Алгоритмическая структура цикл. В алгоритмическую структуру цикл входит серия команд, выполняемая многократно. Такая последовательность команд называется телом цикла.

Читайте так же:
Счетчик кругов для бега механический

В алгоритмической структуре цикл серия команд (тело цикла) выполняется многократно.

Циклические алгоритмические структуры бывают двух типов:

• циклы со счётчиком, в которых тело цикла выполняется определённое количество раз;

• циклы по условию, в которых тело цикла выполняется, пока истинно (или ложно) заданное условие.

Алгоритмическая структура цикл может быть описана графически с помощью блок-схемы (рис. 4.3).

Рис. 4.3

Рис. 4.3

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

Цикл со счётчиком реализуется при помощи оператора For. В заголовке цикла устанавливается начальное значение переменной Счётчик, определяется величина её конечного значения и величина изменения значения за один шаг. Затем располагаются многократно выполняемые операторы тела цикла.

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

Цикл называется циклом с предусловием, если условие выхода из цикла стоит в начале, перед телом цикла. В случае ложности условия цикл с предусловием не выполнится ни разу.

В языках объектно-ориентированного программирования цикл с предусловием реализуется с помощью оператора While (в языке Visual Basic .NET — Do While). Проверка условия выхода из цикла проводится до начала цикла с помощью ключевого слова While, которое обеспечивает выполнение цикла, пока условие истинно. Как только условие примет значение «ложь», выполнение цикла закончится.

Цикл называется циклом с постусловием, если условие выхода из цикла стоит в конце, после тела цикла. Цикл с постусловием выполняется обязательно, как минимум один раз, независимо от того, истинно условие или нет.

Цикл с постусловием реализуется с помощью оператора Do (в языке Lazarus — Repeat). Проверка условия выхода из цикла производится после цикла с помощью ключевого слова Until. Как только условие примет значение «истина», выполнение цикла закончится. В языке Visual Basic .NET используется также ключевое слово While. Оно обеспечивает выполнение цикла до тех пор, пока условие не станет ложным, т. е. пока условие имеет значение «истина». Как только условие примет значение «ложь», выполнение цикла закончится.

Пример

Данный пример демонстрирует использование алгоритмических структур.

Рассмотрим алгоритм перевода целых десятичных чисел в двоичную систему счисления на естественном языке:

Читайте так же:
Устройства для считывания данных с счетчиков

1) Ввести десятичное целое число.

2) В цикле с предусловием, пока исходное целое десятичное число или целое частное больше 0, выполнить вычисления:

2.1) Вычислить остаток от деления исходного целого десятичного числа или целого частного на основание новой системы (на 2).

2.2) Выполнить целочисленное деление целого десятичного числа или целого частного на основание новой системы (на 2).

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

3) Вывести двоичное целое число.

На рисунке 4.4 изображена блок-схема этого алгоритма. Команды в блоках записаны на языке Visual Basic .NET.

Рис. 4.4

Рис. 4.4

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

1. Какие типы алгоритмических конструкций использованы в приведённом в параграфе алгоритме перевода десятичных чисел в двоичное представление?

2. Опишите алгоритм перевода чисел из двоичной системы счисления в десятичную. Оформите ответ в форме блок-схемы для числа 1011.

3. Как работает автомат для покупки газет и журналов? Объясните его работу с использованием алгоритмической конструкции проверки условия при выборе издания и выдаче сдачи автоматом. Оформите ответ с помощью блок-схемы.

4. Приведите примеры использования алгоритмической конструкции проверки условия в различных приборах. Какой алгоритм управляет датчиком включения и отключения света в подъезде дома («умный свет») или автоматическими дверями в магазине? Оформите свой пример с помощью блок-схемы.

5. В различных социальных сетях и журналах часто используются опросы или тесты. Опишите с помощью блок-схемы алгоритм автоматического тестирования при условии, что в тесте предлагается пять вопросов и на каждый вопрос — три возможных ответа. Тестируемый может выбрать только один из предложенных вариантов ответа. Каждый ответ имеет свой балл, который учитывается в суммарном балле тестируемого. По итогам прохождения теста набранный балл сравнивается со шкалой результатов, и для тестируемого на экран выводится сообщение в соответствии с тем диапазоном баллов, в который попал суммарный результат.

Используйте описание алгоритма на естественном языке, предложенное ниже, для построения блок-схемы «Тестирование».

i — счётчик цикла обработки пяти вопросов (i меняется от 1 до 5).

n — номер ответа (n меняется от 1 до 3).

1) Начало цикла: Для i от 1 до 5:

1.1) Вывести на экран вопрос i и три возможных ответа, перенумерованных как 1, 2, 3 и баллы для ответов (B1, В2, ВЗ).

Читайте так же:
Заполнение квитанций водоканала с счетчиками

1.2) Ввести с клавиатуры номер ответа n.

1.3) В ячейку суммы S добавить балл, соответствующий выбранному ответу (S = S + Вn).

2) Конец цикла по i

3) Если S < XI, то вывести сообщение 1, если S >= XI AND S < Х2, то вывести сообщение 2, если S >= Х2, то вывести сообщение 3.

Следующая страница §4.1.3. Подпрограммы. Рекурсивные алгоритмы

Задания

  1. Составьте программу для нахождения суммы всех целых чисел от a до b включительно (a<b). Числа a и b вводятся с клавиатуры.
  2. Составьте программу решения линейного уравнения ax + b = 0. Числа a и b вводятся с клавиатуры
  3. С клавиатуры вводится целое число в диапазоне от 1 до 99.
    Напишите программу, которая:
    а) определяет количество знаков в числе (число: однозначное, двузначное);
    б) определяет четность число (число: четное или нечетное);
    в) выводит описание числа, например, «Нечетное однозначное число», «Четное двухзначное число» и т. д.

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

Предположим, у нас есть список городов, и нужно найти все города, начинающиеся с заданного символа.

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

Управление циклом. Команды break и countinue

Для управления циклом в языке C# используются два оператора: break и continue.

Оператор break используется для прерывания выполнения цикла. Пусть, нам нужно найти некоторый элемент в массиве. Так, используя цикл, мы можем выйти из цикла, как только найдем искомый элемент.

Так мы находим индекс искомого слова в массиве, при этом не выполняем лишних операций после того, как найдем искомый элемент.

Оператор continue используется для перехода к следующей итерации цикла. Рассмотрим задачу: необходимо вычислить сумму пяти частных вида:

Как вы видите, при i = a будет получена ошибка «Деление на ноль». В данном случае мы можем пропускать значение счетчика, которое приводит к ошибке.

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