В предыдущих уроках мы рассмотрели наиболее простой, линейный тип алгоритмов. Напомню, что всего существует три типа: линейные, разветвляющиеся и циклические (алгоритмы с повторениями). В этом уроке я расскажу вам о втором типе алгоритмов — об алгоритмах с ветвлениями.
Ветвления
Ветвление – это команда алгоритма, в которой делается выбор, выполнять или не выполнять какую-нибудь группу команд в зависимости от условий.
Ветвление используется в двух случаях:
- Когда требуется пропустить определенную команду или группу команд.
- Когда нужно записать выбор тех или иных действий в зависимости от условия.
В блок-схеме условие ветвления изображается в ромбе, из которого обязательно выходят ДВЕ стрелки – первая (стрелка «Да») указывает на команды, которые будут выполняться в случае, если условие соблюдено; вторая (стрелка «Нет») – на команды, которые будут выполнены, если условие не соблюдено. Даже если команда, на которую указывает одна из стрелок (Чаще всего «Нет») отсутствует, стрелка все равно имеет место быть.
В словесной формулировке запись ветвления выглядит так:
ЕСЛИ <условие выбора > ТО <команды, выполняемые при соблюдении условия> ИНАЧЕ <команды, выполняемые при несоблюдении условия>
Реализация ветвления в Паскаль.
Как же реализовать ветвление в Паскаль? Проще, чем вы думаете:
if <условие выбора > then <команды, выполняемые при соблюдении условия> else <команды, выполняемые при несоблюдении условия>
Запомните! Перед else никогда не ставят точку с запятой!
Давайте поговорим об условии выбора. Понятно, что этологическое выражение. Если оно является правдой, то выполняется главная ветвь, если ложь, то боковая ветвь.
Рассмотрим несколько задач из сборника М.Э.Абрамяна «1000 задач по программированию».
If1. Дано целое число. Если оно является положительным, то прибавить к нему 1; в противном случае не изменять его. Вывести полученное число.
В данной программе даже не надо реализовывать боковую ветвь.
program if1; var a: integer; begin read(a); if a > 0 then Inc(a); write(a); end.
If2. Дано целое число. Если оно является положительным, то прибавить к нему 1; в противном случае вычесть из него 2. Вывести полученное число.
program if2; var a: integer; begin read(a); if a > 0 then Inc(a) else a -= 2; write(a); end.
If3. Дано целое число. Если оно является положительным, то прибавить к нему 1; если отрицательным, то вычесть из него 2; если нулевым, то заменить его на 10. Вывести полученное число.
Для того чтобы решить эту задачу мы должны использовать вложенный if.
program if3; var a: integer; begin read(a); if a >= 0 then if a = 0 then a := 10 else Inc(a) {перед else нет точки с запятой.} else a -= 2; write(a); end.
If5. Даны три целых числа. Найти количество положительных и количество отрицательных чисел в исходном наборе.
program if5; var a, b, c, plus, minus: integer; begin write('Введите три целых числа: '); read(a, b, c); plus := 0; minus := 0; if a > 0 then Inc(plus) else Inc(minus); if b > 0 then Inc(plus) else Inc(minus); if c > 0 then Inc(plus) else Inc(minus); writeln('Количество положительных чисел - ', plus); writeln('Количество отрицательных чисел - ', minus); end.
If30. Дано целое число, лежащее в диапазоне 1–999. Вывести его строку-описание вида «четное двузначное число», «нечетное трехзначное число» и т. д.
program if30; var a: integer; begin write('Введите число: '); read(a); if Odd(a) then write('Нечетное ') else write('Четное '); if a >= 100 then write('трехзначное число') else if a < 10 then write('однозначное число') else write('двухзначное число'); end.
Вот и все! Не забывайте кликать по кнопочкам и добавлять наш сайт в закладки!
Время выполнения6 часов Цель работыУсвоить понятия: алгоритм как фундаментальное понятие информатики, способы описания, основные типы алгоритмов, освоить принципы решения задач с использованием основных алгоритмических конструкций. Задачи лабораторной работыПосле выполнения работы студент должен знать и уметь:
Перечень обеспечивающих средствДля обеспечения выполнения работы необходимо иметь методические указания по выполнению работы. Общие теоретические сведенияРешение любой задачи на ЭВМ можно разбить на следующие этапы: разработка алгоритма решения задачи, составление программы решения задачи на алгоритмическом языке, ввод программы в ЭВМ, отладка программы (исправление ошибок), выполнение программы на ПК, анализ полученных результатов. Первый этап решения задачи состоит в разработке алгоритма. Алгоритм – это точная конечная система правил, определяющая содержание и порядок действий исполнителя над некоторыми объектами (исходными и промежуточными данными) для получения после конечного числа шагов искомого результата. Алгоритм может быть описан одним из трех способов:
Блок-схема – распространенный тип схем, описывающий алгоритмы или процессы, изображая шаги в виде блоков различной формы, соединенных между собой стрелками.
Циклом называют повторение одних и тех же действий (шагов). Последовательность действий, которые повторяются в цикле, называют телом цикла. Циклические алгоритмы подразделяют на алгоритмы с предусловием, постусловием и алгоритмы с конечным числом повторов. В алгоритмах с предусловием сначала выполняется проверка условия окончания цикла и затем, в зависимости от результата проверки, выполняется (или не выполняется) так называемое тело цикла. Задание 1. Определить площадь трапеции по введенным значениям оснований (a и b) и высоты (h). Запись решения задачи на алгоритмическом языке: нач s:=((a+b)/2)*h кон Запись алгоритма в виде блок-схемы (рис. 1): Рисунок 1. Блок-схема линейного алгоритма Задание 2. Определить среднее арифметическое двух чисел, если a положительное и частное (a/b) в противном случае. Запись решения задачи на алгоритмическом языке: нач кон Запись алгоритма в виде блок-схемы (рис. 2): Рисунок 2. Блок-схема алгоритма с ветвлением Задание 3. Составить алгоритм нахождения суммы целых чисел в диапазоне от 1 до 10. Запись решения задачи на алгоритмическом языке: нач S:=0; A:=1; S:=S+a; A:=a+1; кон Запись алгоритма в виде блок-схемы (рис. 3): Рисунок 3. Циклический алгоритм с предусловием В алгоритме с постусловием сначала выполняется тело цикла, а затем проверяется условие окончания цикла. Решение задачи нахождения суммы первых десяти целых чисел в данном случае будет выглядеть следующим образом: нач S:=0; A:=1; S:=S+a; A:=a+1; кон Запись алгоритма в виде блок-схемы (рис. 4): Рисунок 4. Циклический алгоритм с постусловием Варианты заданияТехнология выполнения работы В рамках выполнения работы необходимо составить алгоритм решения задачи в виде блок-схемы и с помощью языка псевдокода. Содержание отчета
Вопросы для защиты работы
|
Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
Xlektronnyj_uchebnik_po_jazyku_Pascal.doc
Скачиваний:
0
Добавлен:
09.07.2019
Размер:
642.05 Кб
Скачать
Блок — схемы алгоритмов
При обучении
программированию используется графическое
описание алгоритма решения задачи в
виде блок — схемы. Такое представление
алгоритма достаточно удобно и наглядно
показывает последовательность выполнения
операторов программы. Приведем основные
обозначения, применяемые в блок — схемах.
Используя данные
обозначения можно составить блок — схемы
основных операторов программирования
на алгоритмическом языке Паскаль.
В соответствии с
используемыми в программе операторами
различают следующие типы алгоритмов:
линейный, ветвящийся, циклический,
комбинированный.
Приведем пример
блок — схемы комбинированного алгоритма
для расчета суммы положительных S1 и
отрицательных S2 чисел из N случайных
чисел от -100 до 100.
Соответствующие
алгоритму операторы имеют вид:
Begin
Randomize;
Writeln(‘Введите
количество случайных чисел’);
Readln(N);
S1:=0;
S2:=0;
For
i:=1 to N do
begin
x:=Random(201)-100;
if
x < 0 Then S2:=S2+x else S1:=S1+x;
end;
Writeln(‘S1=
‘, S1, ‘ S2= ‘, S2);
Readln
End.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Блок-схемы используются для визуального представления алгоритмов.
Определение:
Алгоритм — это последовательность шагов, ведущая к решению задачи
Определение:
Блок-схема — это схематическое изображение, иллюстрирующее последовательность операторов, которые необходимо выполнить для достижения результата
Инструкции изображаются, используя специальные символы. Символы связываются между собой стрелками, для указания порядка выполнения.
Блок-схемы широко используются при написании программ, так как они:
- Гораздо проще для понимания, чем запись в виде команд.
- Упрощают процесс отладки.
- Позволяют составить эффективную программную документацию.
- Облегчают процесс демонстрации и обсуждения программы.
Блоки, из которых составляются блок-схемы, представлены на Рисунке 1.
Рис. 1
Рассмотрим работу с блок-схемами на примере. Для этого нарисуем блок-схему программы нахождения суммы двух чисел:
Блок-схема, показанная на Рисунке 2, иллюстрирует линейную логику. Здесь нет повторений и ветвления.
Рис. 2
ВЕТВЛЕНИЕ
Способность сравнивать значения и исполнять, в зависимости от полученного результата, различные участки программы превращает компьютер из большого калькулятора в мощное средство решения различных практических задач. Операторы выбора применяются для:
- Сравнения данных
- Выбора одного из альтернативных путей решения задачи.
Например, при снятии денег с банковского счета производится сравнение снимаемой суммы с суммой на счете. Если снимаемая сумма меньше, то заказ выполняется. В противном случае происходит отказ от обслуживания.
Определение:
Ветвление — это процесс выбора из двух, или более альтернативных путей вычисления. Рассмотрим ветвление на следующих примерах:
Пример 1. Посмотрим на то, как будет выглядеть блок-схема алгоритма проверки чисел на четность:
Рис. 3
- Ветвление используется в том случае, когда необходимо разделить поток вычислений на два и более альтернативных варианта. Основанием для выбора маршрута является результат проверки истинности условия ветвления.
Пример 2. Рассмотрим блок-схему алгоритма, определяющего максимальное из 3-х чисел (см. рис. 4):
Рис. 4
Как мы видим, ветвление производится, когда нам необходимо выбрать дальнейший маршрут в зависимости от истинности некоего условия, называемого также условием ветвления.
Основные типы блок-схем, использующих ветвление, представлены на Рисунке 5:
Рис. 5
На Рисунке 5(а) представлена неполная конструкция условного ветвления. Здесь, в зависимости от выбранного маршрута движения, выполняется один или несколько вычислительных шагов, или происходит дальнейшее движение без вычислений, до момента слияния маршрутов.
На Рисунке 5(b) представлен полный вариант условного ветвления. Здесь, в зависимости от выбранного маршрута движения, выполняется одна или другая последовательность вычислений, после чего маршруты вновь сливаются.
ЦИКЛЫ
Определение:
Цикл — это многократно выполняемый участок алгоритма.
Тело цикла-это последовательность выполняемых в цикле операторов.
Итерация — однократное выполнение тела цикла.
Циклы бывают двух типов:
- С фиксированным числом итераций
- С переменным числом итераций
Рассмотрим различия между этими двумя типами на следующих примерах:
Пример 3. Пусть есть данные о расходах за каждый месяц года. Блок-схема алгоритма подсчитывающего расходы за год будет иметь вид:
Рис. 6
Рисунок 6 иллюстрирует цикл с фиксированным числом итераций — число месяцев в году известно и последовательность вычислений не может быть повторена более 12 раз.
Мы читаем расходы за один месяц и добавляем их к общему результату. После этого номер месяца сравнивается с 12.
Если номер месяца равен 12, то цикл завершается, и выводятся данные о расходах за год. В противном случае цикл повторяется для следующего месяца.
Пример 4. Пусть есть информация о каждом жителе города (имя, возраст, пол и т.д.). Необходимо составить список жителей старше 50 лет. Блок-схема соответствующего алгоритма будет иметь вид:
Рис. 7
Рисунок 7 иллюстрирует цикл с переменным числом итераций — нам заранее неизвестно число жителей города старше 50 лет. Этот цикл выполняется до тех пор, пока есть еще неучтенные люди. Цикл представляется в виде следующей элементарной блок-схемы:
Рис. 8
- В цикле с фиксированным числом итераций количество итераций известно заранее. Вычисления, производящиеся внутри цикла, не оказывают никакого влияния на число итераций.
- Цикл с переменным числом итераций выполняется до тех пор, пока не будет выполнено некоторое условие. Количество итераций в таком цикле может варьироваться.
- Циклы обычно выполняются до тех пор, пока какое-либо условие не примет значение true или false.
РАЗДЕЛЕНИЕ БЛОК-СХЕМ НА ЧАСТИ
При работе с блок-схемами мы часто сталкиваемся со следующими проблемами:
- Блок-схема может не поместиться на одной странице.
- Может оказаться сложным связать все элементы блок-схемы друг с другом непосредственно.
Для решения этих проблем блок-схемы обычно разбивают на отдельные части, для состыковки которых используются элементы- соединители.
Соединительный элемент имеет свой собственный, уникальный номер и состоит из двух частей. Эти части изображаются в местах разрыва соединительных линий. Для определения принадлежности частей соединительному элементу, номер элемента записывается на каждой из частей.
Например, разбив на 2 части блок-схему, изображенную на Рисунке 2 мы получим:
Рис. 9
- Соединители вставляются в местах разрыва блок-схемы. Расположение каждого объединения указывается с помощью уникального номера.
- В блок-схеме может быть только одна вершина Начало и только одна вершина Конец.
- Используйте машинно-независимые элементы.
- Не обязательно представлять в блок-схеме каждый шаг программы. Можно ограничиться наиболее важными блоками.
- Желательно использовать наглядные названия переменных и блоков.
- Помните, программа должна быть написана так, чтобы любой другой программист смог бы легко понять ее.
МЕТОД ПРОГОНКИ
Метод прогонки используется для проверки правильности работы программы без использования компьютера. Для этого составляется специальная таблица, в которую записываются значения переменных по шагам. Этот метод позволяет эффективно находить и устранять логические ошибки. Проиллюстрируем этот метод следующим примером:
Пример 5
Step 1. Start
Step 2. Х=10
Step 3. Y=5
Step 4. М=0
Step 5. M=X+Y+(X*Y)
Step 6. Y=Y+4
Step 7. M=M+Y
Step 8. Display X,Y,M
Step 9. End
ТАБЛИЦА ПОШАГОВОГО ПРОГОНА
X | Y | М | |||
Начальные значения | 10 | 5 | 0 | ||
после шага 5 | 10 | 5 | 65 | ||
после шага 6 | 10 | 9 | 65 | ||
после шага 7 | 10 | 9 | 74 | ||
Таким образом, на 8-м шаге на экран будет выведено: 10, 9 и 74.
Задания для самопроверки
Практическая работа № 6.
Тема: Программная реализация циклического алгоритма.
Цель: Научиться программировать циклические алгоритмы.
Оборудование: ПК, система программирования Qbasic.
Ход работы
1. Изучить основные сведения по теме.
Основные сведения
При решении некоторых задач требуется выполнять одни и те же действия несколько раз. Такая последовательность команд называется циклом.
Организация цикла в программе:
FOR I=L TO K STEP H
тело цикла
NEXT I
I – счетчик цикла,
L – начальное значение счетчика,
К – конечное значение счетчика,
H – шаг (величина, прибавляемая к значению счетчика). Если шаг не указан, он считается равным 1.
Тело цикла – набор операторов, предназначенных для повторения.
2. Запишите в тетрадь примеры решения задач. Запустите программу qbasic2. Введите программы из примеров. Запустите на выполнение (RUN-Start или F5), запишите в тетрадь ответы. Сохраните программы на диске Х: под именем lr4pr1.bas, lr4pr2.bas и т.д.
Пример 1. Найти значения функции y=2x2-3x на отрезке [-5;5] с шагом 0,5
Блок схема: |
Программа: 10 REM znachenie funkcii 20 CLS 30 FOR x= -5 TO 5 STEP 0.5 40 LET y=2*x^2-3*x 50 PRINT “y(”; x; “)=”; y 60 NEXT x 70 END |
Пример 2. Найти сумму целых чисел от 1до 10.
Блок схема: |
Программа: 10 REM Summa ot 1 do 10 20 CLS 30 LET S=0 40 FOR x=1 TO 10 50 LET S=S+x 60 NEXT x 70 PRINT “Summa S=”; S 80 END |
3. Составить блок-схему и программу для решения задач по теме. Ввести программу в компьютер, отладить ее, получить результат.
ЗАДАЧИ
1.Найти сумму натуральных чисел до n.
Блок-схема: |
10 REM summa naturalnyh chisel 20 CLS 30 INPUT “vvedite N” ; N 40 LET S=0 50 FOR x=1 TO N STEP 1 60 LET S=S+x 70 NEXT x 80 PRINT “summa naturalnyh chisel S=” ; S 90 END Ответ: 1)N=9 summa naturalnyh chisel S=45 2)N= summa naturalnyh chisel S= 3)N= summa naturalnyh chisel S= |
2.Найти произведение натуральных чисел до n.
Блок-схема: |
10 REM proizvedenie naturalnyh chisel 20 CLS 30 INPUT “vvedite N” ; N 40 LET P=1 50 FOR x=1 TO N STEP 1 60 LET P=P*x 70 NEXT x 80 PRINT “proizvedenie naturalnyh chisel P=” ; P 90 END Ответ: 1)N= proizvedenie naturalnyh chisel P = 2)N= proizvedenie naturalnyh chisel P = 3)N= proizvedenie naturalnyh chisel P = |
3.Найти значение функции y=x3+3cosx в интервале от 0 до 5 с шагом 1.
4.Напечатать квадраты чисел от 1 до 10.
5.Посчитать произведение целых чисел от 3 до к.
6.Посчитать сумму чисел от 0 до р с шагом 0,5
7.Посчитать сумму чисел от 0 до n с шагом h.
8.Посчитать сумму 1+1/2+1/3+…+1/n.
9.Посчитать произведение 1*1/2*1/3*…*1/k.
10.Найти 2n, d – целое положительное число.
11.Дано натуральное число. Найти все его натуральные делители.
12. Запросить число, вывести таблицу умножения для него.
5.Работа над контрольными вопросами.
Контрольные вопросы
- Что такое цикл в программе?
- Перечислите операторы, используемые при написании циклических программ?
- Как на языке Qbasic организовать цикл?
- Каково назначение переменных I, L, K, H?
- Можно ли не указывать шаг цикла?
- Для чего предназначен оператор NEXT? Можно ли его не писать?
Презентация к уроку «Программная реализация циклического алгоритма.»
Расширения для Joomla