Занятие 2. Программная реализация разветвляющегося алгоритма
При рассмотрении разветвляющегося алгоритма будет разобран набор задач и примеров, которые являются усложненными версиями уже разобранных выше задач.
Будут приведены примеры вычисления функций, заданных на разных промежутках кусочно. Также приведены принцип и примеры расчетов для кусочных функций, заданных на двух промежутках и на трех промежутках.
Пример 5. Даны числа . Вычислить сумму и разность чисел и . Сравнить полученные значения и и указать большее из них.
Блок-схема представлена на рис. 4.5.
Рис.
4.5.
Блок-схема для примера 5
Код программы (Visual Studio):
// proga14.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> using namespace std; int main() { double a, b, S, R; a=2; b=7; S=a+b; R=a-b; cout<<"S="<<S<<" R="<<R<<endl; if(S>R) cout<<"Max S"<<endl; else cout<<"Max R"<<endl; return 0; }
Результат выполнения программы (Visual Studio):
Код программы (Borland C++):
#include <iostream.h> int main(){ double a, b, S, R; a=2; b=7; S=a+b; R=a-b; cout<<"S="<<S<<" R="<<R<<endl; if(S>R) cout<<"Max S"<<endl; else cout<<"Max R"<<endl; return 0; }
Результат выполнения программы:
Пример 6. Составить блок-схему и программу для вычисления значений функций и при различных значениях аргумента. Учесть область определения функций.
Решение. Рассмотрим области определения функций и . Синус имеет неограниченную область определения, т.е. считается при любом действительном . Поэтому на расчет функции y не будет никаких условий. Логарифм же существует при положительном значении аргумента, т.е. считается при . Поэтому, прежде чем считать функцию , необходимо проверить условие ««. Если условие верно, то можно считать . Если ложно, то считать нельзя, и в этом случае мы напишем в ответ, что не существует фразой ««.
Блок-схема представлена на рис. 4.6.
Рис.
4.6.
Блок-схема для примера 6
Код программы (Visual Studio):
// proga15.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> #include <math.h> using namespace std; int main() { double x, y, z; cout<<"vvedi x="; cin>>x; y=sin(x); cout<<"y="<<y; if(x>0){ z=log(x); cout<<" z="<<z<<endl; } else cout<<" z net"<<endl; return 0; }
Результат выполнения программы:
Код программы (Borland C++):
#include <iostream.h> #include <math.h> int main(){ double x, y, z; cout<<"vvedi x="; cin>>x; y=sin(x); cout<<"y="<<y; if(x>0){ z=log(x); cout<<" z="<<z<<endl; } else cout<<" z net"<<endl; return 0; }
Результат выполнения программы:
Пример 7. Вычислить значение функции при различных значениях аргумента (аргумент считать с клавиатуры).
Решение: Функция задана как кусочная функция, т.е. при разных значениях она считается по-разному. Следует отметить, что при одном значении аргумента функция будет иметь лишь одно значение, т.е. функция однозначная. График функции представлен на рис. 4.7.
Рис.
4.7.
График кусочной функции
Посчитаем значение функции при . Прежде всего необходимо проверить, какое условие верно: «» или ««. Условие для первой ветки функции верно, значит считаем .
Посчитаем значение функции при . Прежде всего необходимо проверить, какое условие верно: «» или ««. Условие для второй ветки функции верно, значит считаем .
При расчете кусочной функции так или иначе сначала проводится проверка условия, поэтому вычисление таких функций реализуется через разветвляющийся алгоритм. В данном примере будет один блок разветвления (соответственно один оператор if в программе). Условием будет служить проверка ««. Если условие верно, то функция считается по первой ветке, если ложно, то по второй ветке. Второе условие «» будет лишним, т.к. оно соответствует стрелке «нет» от первого условия ««.
Примечание. Функция – это функция, которая имеет один аргумент. Не следует путать запись кусочной функции с системой уравнений или системой неравенств, уравнения или неравенства которых также объединены фигурной скобкой. При расчете кусочной функции не решается никакая система уравнений, система неравенств, а просто подставляется конкретное значение аргумента и вычисляется значение функции.
Примечание. При расчете функции не следует сразу рассчитывать обе ветки функции, т.к. в ответ нам нужен только один результат. Корректно составленный алгоритм не должен быть избыточен. Не следует повторять одно и то же по сути условие.
Блок-схема для примера 7 представлена на рис. 4.8.
Рис.
4.8.
Блок-схема для примера 7
Код программы (Visual Studio):
// proga16.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> using namespace std; int main(){ double x, Z; cout<<"x="; cin>>x; if(x<1){ Z=x+3; } else { Z=4*x; } cout<<"Z="<<Z<<endl; return 0; }
Результат выполнения программы:
Код программы (Borland C++):
#include <iostream.h> int main(){ double x, Z; cout<<"x="; cin>>x; if(x<1){ Z=x+3; } else { Z=4*x; } cout<<"Z="<<Z<<endl; return 0; }
Результат выполнения программы:
Пример 8. Вычислить значение функции при различных значениях аргумента (аргумент считать с клавиатуры).
Решение: Функция задана как кусочная функция, определенная на трех промежутках. График функции представлен на рис. 4.9.
Рис.
4.9.
График кусочной функции
В данной задаче будем использовать два условия для определения нужной ветви функции. Первое условие «» определяет, следует ли рассчитывать по первой ветви функции. Второе условие «» определяет, следует ли рассчитывать по второй ветви. Если и первое, и второе условия оказались ложными (не выполнились), то следует рассчитывать по третьей ветви. Следовательно, в блок-схеме будем использовать два блока разветвления, а в программе два оператора условия if.
Например, нужно вычислить при . Первое условие «» выполняется верно, т.к. . Следовательно, считать следует по первой ветви, а именно: .
Например, нужно вычислить при . Первое условие «» выполняется неверно, т.к. 2,5>0. Проверяем второе условие ««: 2,5≤5 – верно. Следовательно, считать следует по второй ветви, а именно: .
Например, нужно вычислить при . Первое условие «» выполняется неверно, т.к. 10>0. Проверяем второе условие ««: 10≤5 – неверно. Следовательно, ни первое, ни второе условия не выполнились, и считать следует по третьей ветви, а именно: .
Блок-схема представлена на рис. 4.10.
Рис.
4.10.
Блок-схема для примера 8
Код программы (Visual Studio):
// proga17.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> #include <math.h> using namespace std; int main(){ double x,Z; cout<<"x="; cin>>x; if(x<0){ Z=pow(x, 2.0); } else {if(x<=5){ Z=fabs(x);} else { Z=5.0;} } cout<<"Z="<<Z<<endl; return 0; }
Результат выполнения программы (Visual Studio):
Код программы (Borland C++):
#include <iostream.h> #include <math.h> int main(){ double x, Z; cout<<"x="; cin>>x; if(x<0){ Z=pow(x, 2.0); } else { if(x<=5){ Z=fabs(x); } else { Z=5.0; } } cout<<"Z="<<Z<<endl; return 0; }
Результат выполнения программы (Borland C++):
Примечание. В качестве второго условия можно, конечно, взять ««. Но при проверке первого условия мы уже знаем, будет ли . Поэтому можно пропустить повторную проверку на положительность переменной . Также в качестве второго условия можно взять условие ««. Если оно выполнится верно, то считать следует по третьей ветви, если неверно – то по второй.
Пример 9. Вычислить значение функции при различных значениях аргументов и (аргументы и считать с клавиатуры).
Решение: Данный Пример аналогичен Примеру 7. Отличие состоит в том, что сейчас функция зависит от двух переменных и . Для реализации алгоритма разницы нет, поэтому за основу возьмем блок-схему и программу из Примера 7.
Блок-схема представлена на рис. 4.11.
Рис.
4.11.
Блок-схема для примера 9
Код программы (Visual Studio):
// proga18.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> using namespace std; int main(){ double x, y, Z; cout<<"x="; cin>>x; cout<<"y="; cin>>y; if(x*y<1){ Z=x+y; } else {Z=x-y; } cout<<"Z="<<Z<<endl; return 0;}
Результат выполнения программы (Visual Studio):
Код программы (Borland C++):
#include <iostream.h> int main(){ double x, y, Z; cout<<"x="; cin>>x; cout<<"y="; cin>>y; if(x*y<1){ Z=x+y; } else { Z=x-y; } cout<<"Z="<<Z<<endl; return 0; }
Результат выполнения программы (Borland C++):
Ручной счет.
при х=-3; у=0,5 ху=-3·0,5=-1,5 <1 Z=x+y=-3+0,5=-2,5. при x=0,8; y=2 xy=0,8·2=1,6≥1 Z=x-y=0,8-2=-1,2.
Пример 10. Вычислить значение функции при различных значениях аргументов и (аргументы и считать с клавиатуры).
Решение. В данном примере функция определена на трех промежутках, как в Примере 8. Отличие состоит в том, что зависит от двух переменных и . Для реализации алгоритма разницы нет, поэтому за основу возьмем блок-схему и программу из Примера 8.
Блок-схема представлена на рис. 4.12.
Рис.
4.12.
Блок-схема для примера 10
Код программы (Visual Studio):
// proga19.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> using namespace std; int main(){ double x, y, Z; cout<<"x="; cin>>x; cout<<"y="; cin>>y; if(x*y<0){ Z=x+y;} else { if(x*y<=5){ Z=x-y; } else { Z=y; } } cout<<"Z="<<Z<<endl; return 0; }
Результат выполнения программы (Visual Studio):
Код программы (Borland C++):
#include <iostream.h> int main(){ double x, y, Z; cout<<"x="; cin>>x; cout<<"y="; cin>>y; if(x*y<0){ Z=x+y; } else { if(x*y<=5){ Z=x-y; } else { Z=y; } } cout<<"Z="<<Z<<endl; return 0; }
Результат выполнения программы (Borland C++):
Ручной счет:
при х=-1,5; у=2 ху=-1,5·2=-3 <0 Z={по первой ветви}=x+y=-1,5+2=0,5. при x=1,2; y=2 xy=1,2·2=2,4≤5 Z={по второй ветви}=x-y=1,2-2=-0,8. при x=3; y=7 xy=3·7=21 >5 Z={по третьей ветви}=y=7.
Пример 11. Найти наибольшее (максимальное) из трех чисел.
Решение. Обозначим три числа буквами . Числа будем считывать с клавиатуры. Для нахождения наибольшего из трех чисел введем еще одну переменную , которая будет хранить наибольшее значение. Принцип нахождения наибольшего значения заключается в следующем. Сначала принимаем как первое число . Потом поочередно сравниваем с оставшимися числами и . Если окажется, что больше уже запомненного , то следует перезаписать , изменив его значение на значение . Если же , то изменять не нужно, поэтому ветвь «нет» будет пустой. Аналогично сравниваем и . После двух сравнений в переменной будет лежать наибольшее из трех чисел.
Примечание. Если чисел будет больше трех, например, пять чисел, то следует сделать четыре сравнения.
Примечание. Если нужно определить наименьшее из трех чисел, то вводят переменную , приравнивают к первому числу. Затем поочередно сравнивают оставшиеся числа: ««, ««.
Если нужно определить наименьшее из большего числа чисел, например, из пяти чисел, то следует сделать четыре сравнения.
Блок-схема представлена на рис. 4.13.
Рис.
4.13.
Блок-схема для примера 11
Выполнение блок-схемы (при вводимых значениях чисел 23,7; -0,4; 34,28)
Начало ввод данных a=23,7; b=-0,4; c=34,28
max=a=23,7 b>max -0,4>23,7 нет c>max 34,28>23,7 да max=c=34,28 вывод max
Экран |
a=23,7 b=-0,4 c=34,28 max=34,28 |
Код программы (Visual Studio):
// proga20.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> using namespace std; int main() { double a, b, c, max; cout<<"a="; cin>>a; cout<<"b="; cin>>b; cout<<"c="; cin>>c; max=a; if(b>max){ max=b; } if(c>max){ max=c; } cout<<"max="<<max<<endl; return 0; }
Результат выполнения программы (Visual Studio):
Код программы (Borland C++):
#include <iostream.h> int main(){ double a, b, c, max; cout<<"a="; cin>>a; cout<<"b="; cin>>b; cout<<"c="; cin>>c; max=a; if(b>max){ max=b; } if(c>max){ max=c; } cout<<"max="<<max<<endl; return 0; }
Результат выполнения программы (Borland C++):
Пример 12. Найти значение функции при различных значениях аргумента (аргумент считать с клавиатуры).
Решение. Функция считается как наибольшее из трех выражений. Задача схожа с Примером 11. Введем обозначения: . Тогда наша задача максимально будет похожа на Пример 11.
Блок-схема представлена на рис. 4.14.
Рис.
4.14.
Блок-схема для примера 12
Выполнение блок-схемы (при вводимом x=1)
a=3x=3·1=3 b=10-x=10-1=9 c=|x|=|1|=1 Z=a=3 b>Z 9>3 да Z=b=9 c>Z 1>9 нет вывод Z
Код программы (Visual Studio):
// proga21.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> #include <math.h> using namespace std; int main(){ double x, a, b, c, Z; cout<<"x="; cin>>x; a=3.0*x; b=10.0-x; c=fabs(x); Z=a; if(b>Z){Z=b;} if(c>Z){Z=c;} cout<<"Z="<<Z<<endl; return 0; }
Результат выполнения программы (Visual Studio):
Код программы (Borland C++):
#include <iostream.h> #include <math.h> int main(){ double x, a, b, c, Z; cout<<"x="; cin>>x; a=3.0*x; b=10.0-x; c=fabs(x); Z=a; if(b>Z){ Z=b; } if(c>Z){ Z=c; } cout<<"Z="<<Z<<endl; return 0; }
Результат выполнения программы (Borland C++):
Пример 13. Найти значение функции, заданной по формуле при различных значениях аргументов и (аргументы и считать с клавиатуры).
Блок-схема представлена на рис. 4.15.
Рис.
4.15.
Блок-схема для примера 13
Код программы (Visual Studio):
// proga22.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> using namespace std; int main() { double x, y, a, b, c, Z; cout<<"x="; cin>>x; cout<<"y="; cin>>y; a=x+y; b=x-y; c=x*y; Z=a; if(b>Z){ Z=b; } if(c>Z){ Z=c; } cout<<"Z="<<Z<<endl; return 0; }
Результат выполнения программы (Visual Studio):
Код программы (Borland C++):
#include <iostream.h> int main(){ double x, y, a, b, c, Z; cout<<"x="; cin>>x; cout<<"y="; cin>>y; a=x+y; b=x-y; c=x*y; Z=a; if(b>Z){ Z=b; } if(c>Z){ Z=c; } cout<<"Z="<<Z<<endl; return 0; }
Результат выполнения программы (Borland C++):
Краткие итоги
Одна и та же блок-схема может быть использована при написании разных программ С++. Результат выполнения программы из-за этого не должен меняться.
Упражнения
- Составьте блок-схему и программу для вычисления значений функций при различных значениях аргументов и .
- Составьте блок-схему и программу по нахождению корней квадратного уравнения через дискриминант. Коэффициенты квадратного уравнения считывайте с клавиатуры.
- Составьте блок-схему и программу, которая спрашивает у пользователя возраст и в соответствии с возрастной группой («дошкольник», «школьник», «взрослый», «пожилой») выдает соответствующую фразу на экран.
- Составьте блок-схему и программу для вычисления значения функции при разных значениях аргументов и .
- Составьте блок-схему и программу для вычисления значений функции при разных значениях аргументов и .
Разветвляющимсяназывается алгоритм, в котором
предусмотрено прохождение различных
вариантов работы в зависимости от
выполнения или не выполнения некоторого
условия. В блок-схеме это условие
записывается в ромб-блок сравнения.
Общая
структура ветвления:
да
нет
Вар «да»
Вар.
«нет»
Достаточно
часто то или иное действие должно быть
выполнено в зависимости от значения
логического выражения, выступающего в
качестве условия. В таких случаях
используется развилка.
Пример
1. Вычислить
значение функции
1. Ввести x.
2.
3. 4. y := x–2 5. Вывести y 6. Конец |
При
тестировании алгоритмов с развилкой
необходимо подбирать такие исходные
данные, чтобы можно было проверить все
ветви. В приведенном выше примере должно
быть по крайней мере три тестовых набора.
Пример
2. Дано
натуральное число n.
Если число нечётное и его удвоение не
приведет к выходу за 32767 (двухбайтовое
целое число со знаком), удвоить его,
иначе — оставить без изменения.
Чтобы
удовлетворить условию удвоения, число
n
должно быть нечетным и меньше 16384.
1.
2.
3. 4. Конец |
Рассмотренный
пример иллюстрирует неполную развилку.
Также следует отметить, здесь логическое
выражение, являющееся условием, содержит
2 операнда.
1.5. Циклические алгоритмы (циклы)
Алгоритм циклической
структуры – алгоритм, в котором
предусмотрено выполнение одной и той
же последовательности действий.
Цикломназывается
участок алгоритма, реализующий многократно
повторяющееся при различных значениях
параметров однотипные вычисления
(например, расчеты по одной и той же
формуле), Алгоритм, содержащий цикл,
называется циклическим.
Циклический алгоритм
позволяет существенно сократить объем
программы.
Для организации цикла
необходимо предусмотреть:
— задание начального значения параметра
цикла – переменной, которая будет
изменяться при повторениях цикла;
— изменение значения этой переменной
перед каждым новым повторением цикла;
— проверку условия окончания повторений
по значению параметра и переход к началу
цикла, если повторения не закончены.
Пример
1.Вычислить сумму:S=12+22+32+…+n2=∑i2
,
где n–
заданное число.
Предлагается
следующий алгоритм решения задачи.
Шаг1.Ввестиn.
Шаг 2.
ПоложитьS=0 (обнуление
ячейки суммы).
Шаг 3.Положитьi= 1.
Шаг 4.Вычислитьi2и
прибавит к текущему значениюS:
обозначение: S=S+i2
.
Шаг 5.Увеличитьiна 1; обозначение:i=i+ 1.
Шаг 6.Сравнитьiсn;
еслиi<n,
вернуться к шагу 4, иначе перейти к шагу
7.
Шаг 7.Вывести S.
Шаг 8.Останов.
Основная повторяющаяся
операция: S=S+i2выполняется при различных значенияхi. Величинаiназываетсяпараметром цикла.В
рассмотренном примере параметр цикла
изменяется от начального значенияi= 1 до конечногоi=nс шагом 1.
Варианты:1)S=12+32+52+…
2) S=1*2*3*…*n
Задача. Задача
табулирование функции. Требуется
построить таблицу значений функцииy=f(x)на отрезке [a,b]
с шагомh, т.е. вычислить
значения функции в точкахx=a,a+h,a+2h,
… ,bвывести их на печать.
Задача.Составить
схему алгоритма вычисления 100 значений
функции y=sin(ax)/x при xi=1,2,3,…,100. Очевидно,
что для определения всех значений
функции y необходимо 100 раз вычислять
по этой формуле значения y и печатать
их, изменяя каждый раз аргумент x на
единицу. Цикл должен повторяться, пока
x<100. Если х станет больше 100, то будет
осуществлен выход из цикла, т.е. переход
к следующему по порядку действию. Если
какие-либо операторы необходимо выполнить
несколько раз, то их не переписывают
каждый раз заново, а организуют цикл.
Пример
2. Подсчитать
количество нечетных цифр в записи
натурального числа n.
Идея
решения. Из заданного числа выбирать
из младшего разряда цифру за цифрой до
тех пор, пока оно не исчерпается, т.е.
станет равным нулю. Каждую нечётную
цифру учитывать.
1. 2. K := 3. Если 4. 5. n:=ndiv10 6. 7. Вывод 8. Конец |
Задача
решена двумя способами. Слева решение
оформлено с использованием цикла с
предусловием, справа — с постусловием.
Пример
3. Дана
последовательность, общий член которой
определяется формулой
Вычислить
при n>2 сумму тех ее членов, которые
больше заданного числа.
При
решении задачи находится очередной
член последовательно и, если он больше
,
добавляется к сумме.
1. 2. S := 0 3. A := 1/4 4. n := 3
5. 6. S := S + A 7. A := (n-1)/(n*n) 8. n := n + 1
9. 10. Вывод S 11. Конец |
В
рассмотренных выше примерах количество
повторений заранее неизвестно. В первом
оно зависит от количества цифр в записи
натурального числа, во втором — от числа
.
В
тех же случая, когда количество шагов
известно из условия задачи, проще и
предпочтительней использовать цикл
с параметром.
Пример
4. Найти
произведение первых k
натуральных чисел, кратных трём.
При
составлении алгоритма учтем, что первое
натуральное число, кратное 3, есть тройка,
а все последующие больше предыдущего
на 3.
1. Ввод k
2. P := 1 {здесь
3. T := 0 {здесь 4. I := 1
5. Если I > k, 6. T := T + 3 7. P := P * T 8. I := I + 1
9. 10. Вывод P 11. Конец |
Пример
алгоритма.
Другие
примеры будут записаны уже на ЯПВУ. В
настоящем же разделе предпринята попытка
продемонстрировать, что изучение
программирования разумно начинать
собственно с разработки алгоритмов, не
акцентируя первоначально внимания на
записи алгоритма на том или ином языке
программирования. В то же время сторонники
структурного подхода к программированию
предлагают придерживаться этого подхода
и при программировании на уровне
блок-схем.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
ОГБПОУ «НОВГОРОДСКИЙ АГРОТЕХНИЧЕСКИЙ ТЕХНИКУМ»
ИНСТРУКЦИОННАЯ КАРТА НА ВЫПОЛНЕНИЕ
ПРАКТИЧЕСКОЙ РАБОТЫ № 8 ПО ДИСЦИПЛИНЕ
ИНФОРМАТИКА.
ТЕМА: «Разветвляющиеся алгоритмы».
НАИМЕНОВАНИЕ РАБОТЫ: « Программирование разветвляющихся алгоритмов».
Наименование объектов контроля и оценки |
Основные показатели оценки результата |
Владение навыками алгоритмического мышления и понимание методов формального описания алгоритмов, владение знанием основных алгоритмических конструкций, умение анализировать алгоритмы; Владение типовыми приемами написания программы на алгоритмическом языке для решения стандартной задачи с использованием основных конструкций языка программирования. |
Выполнение согласно инструкционным картам и методическим рекомендациям. |
НОРМА ВРЕМЕНИ: 6 часов.
ОСНАЩЕНИЕ РАБОЧЕГО МЕСТА: ПК, инструкционная карта, калькулятор, тетрадь для ПЗ.
ПРАВИЛА ПО ТЕХНИКЕ БЕЗОПАСНОСТИ согласно инструкции.
ЛИТЕРАТУРА:
-
Цветкова М.С., Хлобыстова И.Ю. Информатика. Учебник для СПО. М.: Академия. 2017 г. – 352с.
-
Поляков К.Ю. и др. Информатика в 2-х ч. 10 кл. Учебник. М.: БИНОМ. 2013 г. – 344с. (электронный ресурс) (формат PDF)
Теоретическая часть.
Разветвляющиеся алгоритмы. Программирование разветвляющихся алгоритмов.
Разветвляющаяся конструкция предполагает выбор шага для выполнения на основе проверки истинности какого-либо условия.
-
Условный оператор.
Условный оператор описывает часть программы, которая будет выполнена, если проверяемое этим оператором условие истинно.
IF (логическое выражение) THEN
Последовательность операторов, выполняемая, если логическое выражение ИСТИННО.
ELSE
Последовательность операторов, выполняемая, если логическое выражение ЛОЖНО
ENDIF
Пример 1. Задача 1Составить алгоритм вычисления значения функции . Написать программу.
CLS
PRINT “вычисление у”
INPUT «Введите х»; x
IF X – 5 = 0 THEN
PRINT «На ноль делить нельзя»
ELSE
Y = 2*X/(X – 5)
ENDIF
PRINT « Y= »; Y
END
Пример 2. Составить алгоритм вычисления значения функции. Написать программу.
СLS
PRINT «Вычисление Z»
INPUT «Введите х, у»; X, Y
IF X Y THEN
Z = X – Y
ELSE
Z = Y – X + 1
ENDIF
PRINT «Z = »; Z
END
Практическая часть.
Задание 1
.Составить Блок схему. На основании блок-схемы написать программу.
-
Составить алгоритм и программу вычисления У по формуле:
-
Составить алгоритм для вычисления значения функции
-
Составить алгоритм для вычисления значения функции
-
Составить алгоритм для вычисления значения функции
-
Составить алгоритм нахождения наименьшего из двух чисел а и в.
-
Составить алгоритм нахождения максимального из двух чисел х и у.
-
Составить алгоритм нахождения квадрата каждого неотрицательного числа.
-
Составить алгоритм вывода на экран: «Число отрицательное», если выбранное число меньше нуля (отрицательное), иначе «Число положительное», если число больше нуля (из двух чисел, числа вводить с клавиатуры).
-
Составить алгоритм нахождение максимального из трёх чисел (числа вводятся с клавиатуры).
-
Составить алгоритм нахождение корней квадратного уравнения: ax2+bx+c=0 (а=2, в=4, с=1)
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ:
-
Составить блок-схему по данной задаче;
-
Проверить правильность работы, используя набор контрольных данных;
-
Открыть Qbasic;
-
Написать программу на языке программирования;
-
Запустить программу на выполнение (F5);
-
Редактирование программы;
-
Анализ результата;
-
Сохранение программы в виде файла на диске;
-
Результат показать преподавателю.
Задания для самостоятельной работы:
Вариант № 1
-
Составить алгоритм и программу вычисления
-
Составить алгоритм и программу вывода на экран «Число положительное», если введённое число больше нуля, иначе напечатать «Число отрицательное или равно нулю».
-
Составить алгоритм и программу вычисления
Вариант № 2
-
Составить алгоритм и программу вычисления .
-
Составить алгоритм и программу нахождения наименьшего из двух чисел С и D и вывести на печать “Я молодец”, если наименьшим является С; вывести на печать “Я умница”, если наименьшим является D.
-
Составить алгоритм и программу вычисления
Вариант № 3
-
Составить алгоритм и программу вычисления
-
Составить алгоритм и программу нахождения квадрата наибольшего из двух чисел а, в.
-
Составить алгоритм и программу вычисления ,
Вариант № 4
-
Составить алгоритм и программу вычисления по формуле:
-
Составить алгоритм и программу нахождения наибольшего из двух чисел С, D и вывести на печать “МАХ С”, если наибольшим является С и вывести на печать “МАХ D”, если наибольшим является D.
-
Составить алгоритм и программу вычисления У по формуле:
Критерии оценки за самостоятельную работу
Каждое задание оценивается в один балл.
«отлично» — 3 балла;
«хорошо» 2 балла;
«удовлетворительно» — 1 балла;
«неудовлетворительно» — 0 балла и менее.
Практическая
раборта № 1
Построение
блок-схем алгоритмов(теория)
Предпочтительнее
до записи на алгоритмическом языке представить алгоритм в виде блок-схемы. Для
построения алгоритма в виде блок-схемы необходимо знать назначении каждого из
блоков. В таблице 1. приводятся типы блоков и их назначение.
Таблица 1
№ |
Блок |
Назначение |
1 |
|
Начало блок-схемы |
2 |
|
Ввод |
3 |
|
Процесс |
4 |
|
условие |
6 |
|
Цикл |
Основные
типы алгоритмов
Алгоритмизация выступает как набор
определенных практических приёмов, особых специфических навыков рационального
мышления в рамках заданных языковых средств. Алгоритмизация вычислений
предполагает решение задачи в виде последовательности действий, т.е. решение,
представленное в виде блок-схемы. Можно выделить типичные алгоритмы. К ним
относятся: линейные алгоритмы, разветвляющиеся алгоритмы, циклические
алгоритмы.
Линейные алгоритмы
Линейный алгоритм является наиболее
простым. В нём предполагается последовательное выполнение операций. В этом
алгоритме не предусмотрены проверки условий или повторений.
Пример: Вычислить функцию z=
(х-у)/x +y2.
Составить блок-схему вычисления функции по
линейному алгоритму. Значения переменных х, у могут быть
любые, кроме нуля, вводить их с клавиатуры.
Решение: Линейный алгоритм вычисления
функции задан в виде блок-схемы на рис.1. При выполнении линейного алгоритма
значения переменных вводятся с клавиатуры, подставляются в заданную функцию,
вычисляется результат, а затем выводится результат.
Рис.1. Линейный алгоритм
Назначение блоков в схеме на
рис.1:
·
Блок 1 в схеме служит в качестве
логического начала.
·
Блок 2 соответствует вводу данных.
·
Блок 3 представляет арифметическое
действие.
·
Блок 4 выводит результат.
·
Блок 5 в схеме служит в качестве
логического завершения схемы.
Алгоритмы ветвлений
Разветвляющийся алгоритм предполагает
проверку условий для выбора решения. Соответственно в алгоритме появятся две
ветви для каждого условия.
В
примере рассматривается разветвляющийся алгоритм, где в зависимости от условия
выбирается один из возможных вариантов решений. Алгоритм представляется в виде
блок-схемы.
Пример:
При выполнении условия x>0
вычисляется функция: z=
x+
y,
иначе, а именно, когда х=0 или x<0,
вычисляется функция: z=x2+y2.
Составить
блок-схему вычисления функции по алгоритму ветвления. Значения переменных х,
у могут быть любые, вводить их с клавиатуры.
Решение:
На рис.2 представлен разветвляющийся алгоритм, где в зависимости от условия
выполнится одна из веток. В блок-схеме появился новый блок 3, который проверяет
условие задачи. Остальные блоки знакомы из линейного алгоритма.
Рис.2. Алгоритм ветвления
Пример: Найти максимальное значение
из трёх различных целых чисел, введенных с клавиатуры. Составить блок-схему
решения задачи.
Решение: Данный алгоритм
предполагает проверку условия. Для этого выбирается любая из трёх переменных и
сравнивается с другими двумя. Если она больше, то поиск максимального числа
окончен. Если условие не выполняется, то сравниваются две оставшиеся
переменные. Одна из них будет максимальной. Блок-схема к этой задаче
представлена на рис 3.
Рис. 3. Блок-схема поиска максимума
Циклические алгоритмы
Циклический алгоритм предусматривает
повторение одной операции или нескольких операций в зависимости от условия
задачи.
Из
циклических алгоритмов выделяют два типа:
1)
с заданным количеством циклов или со
счётчиком циклов;
2)
количество циклов неизвестно.
Пример:
В цикле вычислить значение функции z=x*y при условии, что одна из
переменных x
меняется в каждом цикле на единицу, а другая переменная у не
меняется и может быть любым целым числом. В результате выполнения цикла при
начальном значении переменной х=1 можно получить таблицу умножения.
Количество циклов может быть любым. Составить блок-схему решения задачи.
Решение:
В примере количество циклов задаётся. Соответственно выбирается алгоритм
циклов первого типа. Алгоритм этой задачи приводится на рис. 4.
Во
втором блоке вводятся количество циклов n и любые целые числа х,
y.
В
блок-схеме появился новый блок 3, в котором переменная i считает
количество циклов, после каждого цикла увеличиваясь на единицу, пока счётчик не
будет равен i=n. При i=n будет выполнен последний
цикл.
В
третьем блоке указывается диапазон изменения счётчика цикла (от i =1 до i=n).
В
четвёртом блоке изменяются значения переменных: z, x.
В
пятом блоке выводится результат. Четвёртый и пятый блоки повторяются в каждом
цикле.
Рис.4 . Циклический алгоритм со счётчиком
циклов
Этот
тип циклических алгоритмов предпочтителен, если дано количеством циклов.
Если количество циклов неизвестно, то
блок-схемы циклических алгоритмов могут быть представлены в виде рисунков 5, 6.
Пример:
Вычислить у=у-x
пока y>x,
если y=30,
x=4.
Подсчитать количество выполненных циклов, конечное значение переменной у.
В цикле вывести значение переменной у, количество выполненных
циклов. Составить блок-схему решения задачи.
Решение:
В примере количество циклов неизвестно. Соответственно выбирается алгоритм
циклов второго типа. Алгоритм этой задачи приводится на рис. 5.
Условие
проверяется на входе в цикл. В теле цикла выполняется два блока:
1)
у=у-х; i=i+1;
2)
вывод значений переменных i,
y.
Цикл
выполняется до тех пор, пока выполняется условие y>x. При условии
равенства этих переменных у=х или y<x цикл заканчивается.
Алгоритм,
представленный на рис.5, называется циклический алгоритм с предусловием,
так как условие проверяется в начале цикла или на входе в цикл.
Рис.5. Блок-схема
циклического алгоритма с предусловием
Во втором блоке вводятся y=30,
x=4.
В
третьем блоке проверяется условие y>x
на входе в цикл. Если условие выполняется, то переход к блоку 4, иначе на блок
6.
В
четвёртом блоке вычисляется значение переменной у, подсчитывается
количество выполненных циклов i=i+1.
В
пятом блоке выводится результат:
·
значение переменной у,
·
количество выполненных циклов i.
Пример:
Составить блок-схему примера (рисунок 5), проверяя условие выхода из цикла.
В этом примере условие задачи не меняется, и результат выведется тот же, но
блок-схема будет другой.
Решение:
В этом случае проверяется условие на выход из цикла: y<=x. При
этом условии цикл не выполняется. Условие в блок-схеме следует перенести в
конец цикла, после вывода на печать. Цикл выполняется до тех пор, пока
выполняется условие y>x.
Алгоритм,
если условие перенести в конец цикла, называется алгоритмом цикла с
постусловием. Алгоритм этой задачи приводится на рис. 6.
Во
втором блоке вводятся y=30,
x=4.
В
третьем блоке вычисляется значение переменной у, подсчитывается
количество выполненных циклов i=i+1.
В
четвёртом блоке выводится результат:
·
значение переменной у,
·
количество выполненных циклов i.
В
пятом блоке проверяется условие y<=x
на выход из цикла. Если условие выполняется, то переход к блоку 6, иначе на
блок 3 и цикл повторяется.
Рис.6 . Алгоритм цикла с
постусловием
Индивидуальные задания к работе:
1.
Найти
результат работы алгоритма:
Входные данные по вариантам
№ |
A |
B |
C |
D |
1 |
0 |
-1 |
-2 |
-3 |
2 |
1 |
0 |
-1 |
-2 |
3 |
2 |
1 |
0 |
-1 |
4 |
3 |
2 |
1 |
0 |
5 |
4 |
3 |
2 |
1 |
6 |
5 |
4 |
3 |
2 |
7 |
6 |
5 |
4 |
3 |
8 |
7 |
6 |
5 |
4 |
9 |
-3 |
7 |
6 |
5 |
10 |
-4 |
-3 |
7 |
6 |
11 |
-5 |
-4 |
-3 |
7 |
12 |
-6 |
-5 |
-4 |
-3 |
13 |
-7 |
-6 |
-5 |
-4 |
14 |
9 |
-7 |
-6 |
-5 |
15 |
8 |
7 |
-7 |
-6 |
16 |
5 |
5 |
8 |
-7 |
17 |
5 |
2 |
4 |
5 |
2. При
заданном Х условие выполнется? Написать результат вычисления и ответ попадаем в
условие или нет.
Входные данные по вариантам
№ |
X1 |
X1 |
1 |
55 |
12 |
2 |
85 |
13 |
3 |
24 |
17 |
4 |
65 |
15 |
5 |
17 |
54 |
6 |
15 |
67 |
7 |
26 |
3 |
8 |
27 |
21 |
9 |
92 |
34 |
10 |
12 |
23 |
11 |
45 |
22 |
12 |
66 |
45 |
13 |
71 |
46 |
14 |
13 |
76 |
15 |
45 |
67 |
16 |
53 |
35 |
17 |
52 |
23 |
3. Написать
результат выполнения алгоритма с указанными входными данными
Входные данные по вариантам
№ |
S |
1 |
1,5 |
2 |
1,8 |
3 |
2,4 |
4 |
1,6 |
5 |
1,7 |
6 |
1,3 |
7 |
2,6 |
8 |
2,37 |
9 |
1,92 |
10 |
1,12 |
11 |
1,45 |
12 |
2,66 |
13 |
2,71 |
14 |
2,13 |
15 |
1,45 |
16 |
2,53 |
17 |
1,52 |
4. Написать
результат выполнения алгоритма с указанными входными данными
Входные данные по вариантам
№ |
X |
1 |
-1 |
2 |
0 |
3 |
1 |
4 |
2 |
5 |
3 |
6 |
4 |
7 |
5 |
8 |
6 |
9 |
7 |
10 |
-3 |
11 |
-4 |
12 |
-5 |
13 |
-6 |
14 |
-7 |
15 |
7 |
16 |
5 |
17 |
2 |
5. Построить
блок схему к задаче(по вариантам). Указать тип алгоритма, что дано и что нужно
найти.
№ |
Задача |
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
6. Построить
блок схему к задаче(по вариантам). Указать тип алгоритма, что дано и что нужно
найти.
№ |
Задача |
1 |
Дано двузначное число. |
2 |
Дано двузначное число. |
3 |
Дано двузначное число. |
4 |
Дано двузначное число. |
5 |
Дано двузначное число. |
6 |
Дано трехзначное число. |
7 |
Дано трехзначное число. |
8 |
Дано трехзначное число. |
9 |
Дано трехзначное число. |
10 |
Дано трехзначное число. |
11 |
Дано трехзначное число. |
12 |
Дано трехзначное число. |
13 |
Дано трехзначное число. |
14 |
Дано трехзначное число. |
15 |
Дано трехзначное число, |
16 |
Дано натуральное число |
17 |
Дано натуральное число |
7. Построить
блок схему к задаче(по вариантам). Указать тип алгоритма, что дано и что нужно
найти.
№ |
Задача |
1 |
Определить максимальное |
2 |
Известны два |
3 |
Известны две скорости: |
4 |
Даны радиус круга и |
5 |
Даны объемы и массы |
6 |
Известны сопротивления |
7 |
Даны вещественные числа |
8 |
Известны площади круга |
9 |
Известны площади круга |
10 |
Известны площади круга |
11 |
Известны площади круга |
12 |
Дано двузначное число. |
13 |
Дано двузначное число. |
14 |
Дано двузначное число. |
15 |
Дано двузначное число. Определить: |
16 |
Дано трехзначное число. |
17 |
Дано трехзначное число. |
8. Построить
блок схему к задаче(по вариантам). Указать тип алгоритма, что дано и что нужно
найти.
№ |
Задача |
1 |
Одна штука некоторого |
2 |
Напечатать таблицу |
3 |
Напечатать таблицу |
4 |
Напечатать таблицу |
5 |
Считая, что Земля — |
6 |
. Напечатать таблицу |
7 |
Напечатать таблицу |
8 |
Напечатать |
9 |
Напечатать таблицу |
10 |
Вывести |
11 |
. Вывести |
12 |
Вывести |
13 |
Вывести «столбиком» |
14 |
Напечатать таблицу |
15 |
Составить программу |
16 |
Напечатать таблицу |
17 |
Напечатать таблицу |
9. Построить
блок схему к задаче(по вариантам). Указать тип алгоритма, что дано и что нужно
найти.
№ |
Задача |
1 |
Даны числа а1, а2, |
2 |
Известна масса каждого |
3 |
. Известны оценки |
4 |
В ведомости указана |
5 |
Известна масса каждого |
6 |
Известно сопротивление |
7 |
Известно сопротивление |
8 |
Известны оценки по |
9 |
Известны оценки ученика |
10 |
Известны оценки по |
11 |
Известна масса каждого |
12 |
Известны оценки двух |
13 |
Известны результаты |
14 |
Известен возраст (в |
15 |
Известно количество |
16 |
Известен рост каждого |
17 |
Известны оценки по |
10. Построить
блок схему к задаче(по вариантам). Указать тип алгоритма, что дано и что нужно
найти.
№ |
Задача |
1 |
Дано натуральное число. |
2 |
Дано натуральное число. |
3 |
Дано натуральное число. |
4 |
Дано натуральное число. |
5 |
Дано натуральное число |
6 |
Дано натуральное число. |
7 |
Дано натуральное число. |
8 |
Дано натуральное число. |
9 |
Дано натуральное число. |
10 |
Дано натуральное число. |
11 |
Дано натуральное число. |
12 |
Дано натуральное число. |
13 |
Дано натуральное число. |
14 |
Дано натуральное число. |
15 |
Дано натуральное |
16 |
Дано натуральное число. |
17 |
Дано натуральное число. |
to continue to Google Sites
Not your computer? Use Guest mode to sign in privately. Learn more