Алгоритмы с ветвлением примеры в бейсике. Алгоритмическая структура ветвления (Visual Basic)

Оператор ветвления

Оператор ветвления (условного перехода) позволяет выполнять определенные команды программы в зависимости от логических условий. В языке Visual Basic оператор ветвления может использоваться в двух видах: строчном и блочном.

интернет-биржа студенческих работ">

Пример 1

Например, If a > b Then max = a Else max = b.

При необходимости выполнения нескольких операторов они разделяются двоеточиями.

Пример 2

Например, If a > 0 Then b = a + 1: c = a\2.

Блочный синтаксис предоставляет больше возможностей, является более структурированным и более читабельным.

Блочный синтаксис:

Условие – логическое выражение, которое может принимать значение True (истина), False (ложь) или Null , которое приравнивается к False . При выполнении блочного оператора ветвления проверяется условие, и, если оно истинно, выполняется оператор, следующий за Then . Если условие не истинно, проверяется условие2 , идущее за ElseIf . Когда истинное значение найдено, выполняется оператор_при_истинномусловии2, который следует за Then , после чего программа выходит за EndIf (т.е. последующие ElseIf , если они есть, не проверяются). Если истинные условия для ElseIf не найдены, выполняется операторпри_ложном_условии.

Рисунок 3. Пример блочного синтаксиса. Автор24 - интернет-биржа студенческих работ

Оператор выбора

Оператор выбора Case выполняет определенные операторы в зависимости от множества значений проверяемого выражения или переменной. Синтаксис оператора выбора:

Рисунок 4. Синтаксис оператора выбора. Автор24 - интернет-биржа студенческих работ

Значение – переменная или выражение, которое проверяется по одному или нескольким условиям. Список значений задается через запятую, диапазон значений задается с помощью служебного слова To (например, 5 To 9).

Пример 3

По номеру месяца в году вывести сообщение о том, к какому времени года относится указанный месяц.

Команда ветвления в полной и неполной форме (урок 1)

(Данная разработка урока по теме «Команда ветвления в полной и неполной форме» составлена из расчета 1 час в неделю, информатика ведется только в 10 и 11 классах. До изучения этой темы в 10 классе обязательно рассмотрение темы «Алгоритм. Его свойства и способы записи», «Язык программирования Бейсик».)

Цель : рассмотреть команду ветвления в полной и неполной форме; выработать умения и навыки в составлении программ по блок-схемам и блок-схем по программам с командами ветвления

Ход урока

I. Организационный момент

II.Проверка домашнего задания.

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

Листочки с геометрическими фигурами и операторами языка программирования Бейсик

18

10

20

14

PRINT

INPUT

CLS

END

Вопросы

1.Эта геометрическая фигура используется в блок- схемах для обозначения начала и конца алгоритма.

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

3.Для вывода данных на экран в Бейсике используется этот оператор.

4.Этот оператор используется для ввода данных с клавиатуры.

5.Для очистки экрана в Бейсике служит этот оператор.

6.Для проверки условия используется эта фигура

7.Ввод-вывод данных на экран обозначается этой геометрической фигурой.

8.Этим оператором заканчивается любая программа.

Какая последовательность чисел у вас появилась во второй строке? Под этой последовательностью зашифровано одно слово. Попробуйте найти ключ и расшифровать это слово. Дайте определение.

Ответ:

1

13

4

16

18

10

20

14

а

л

г

о

р

и

т

м

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

III Изучение новой темы.

Вспомним, как называется алгоритм, в результате которого обеспечивается выбор одного из двух возможных действий? Правильно, разветвляющимся. Такой алгоритм обязательно содержит условие и, в зависимости от результата выполнения условия, происходит выбор действия. Например: Если день рабочий, то идем в школу, иначе будем отдыхать. Если родители деньги дадут, то идем на дискотеку, иначе будем смотреть телевизор. Таких примеров мы можем привести много из обычной жизни и наук. К примеру, математика: Если у равностороннего четырехугольника углы прямые, то назовем его квадратом, иначе назовем его ромбом. Физика: Если удар упругий, то масса тела сохраняется, иначе масса изменяется

Давайте теперь определим, что же такое ветвление?

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

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

Ветвление

в неполной форме

в полной форме

I . Содержит только одно действие

1.Алгоритмический язык

If условие then действие

If условие then действие 1 else действие 2

II . Содержит несколько действий

1. алгоритмический язык

Если условие

то действие 1, действие 2,…

Всё

Если условие

то действие 1, действие 2, …

иначе действие 3, действие 4, …

Всё

2. Блок-схема

3. Язык программирования Бейсик

f 40 If условие then 50

50 50 действие 1

60 действие 2

40 If условие then 50 else 80

50 действие 1

60 действие 2

70 goto 100

80 действие 3

В этом параграфе мы покажем, как оформляются на языке Бейсик разветвляющиеся программы. Простейшей командой, изменяющей естественный порядок выполнения программы, является команда GOTO (GO TO - "перейти к..."). Эта команда имеет вид

где N - номер строки программы. По этой команде ЭВМ переходит к выполнению команды с номером N.

Вы знакомы с двумя способами записи ветвлений - неполной и полной. Ветвление в неполной форме записывалось так:

Если Q, то: Р Конец ветвления

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

Можно по-разному перевести на язык Бейсик эту форму записи. Если Р состоит из одного действия, то перевод такой:

IF Q THEN P

(слово IF означает "если", а слово THEN - "то"). Например:

10 IF X>0 THEN Y = LOG (X) 20 ...

Если значение переменной х>0, то ЭВМ вычислит ln x и присвоит результат переменной у, а затем будет выполняться команда с номером 20. Если же значение x не превосходит нуля, то сразу будет выполняться команда с номером 20.

Допустим теперь, что последовательность Р состоит из нескольких действий. Тогда сокращенная форма ветвления будет записываться сложнее. Пусть, например, в Р содержится 6 действий P 1 , ..., Р 6 , ветвление должно начинаться со 120-й строки, а следующая после ветвления команда имеет номер 150. Это означает, что в случае невыполнения условия Q надо перейти к команде 150. Поэтому запись будет такой:

120 IF NOT (Q) THEN GOTO 150

. . . . . . . . . .

Здесь NOT (Q) означает отрицание условия Q (NOT - "не"). Например, NOT (X = Y, a NOT (X = Y) означает XY.

Отметим еще, что в строках вида

IF ... THEN GOTO К

где К - номер строки, одно из слов, GOTO или THEN, можно не писать, т. е. три команды

IF ... THEN К IF ... GOTO К IF ... THEN GOTO К

означают одно и то же.

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

Запросить А, В. Присвоить М значение А. Если М

На языке Бейсик можно записать так:

10 INPUT А,В 20 М = А 30 IF M

Тот же алгоритм можно перевести на язык Бейсик и иначе:

10 INPUT А,В 20 М = А 30 IF N0T(M

Покажем теперь, как записать на языке Бейсик команду ветвления в полной форме:

Если Q, то: Р Иначе: Т Конец ветвления.

Аналогично предыдущему, если Р и Т состоят из одного действия, то удобно переводить так:

IF Q THEN P ELSE T

(ELSE - иначе).

Если же Р или Т состоят из нескольких действий, то удобнее переводить следующим образом (для примера: пусть Р состоит из трех, Т - из четырех команд, ветвление начинается с 530-й строки, следующая за ветвлением строка имеет номер 600):

530 IF Q THEN 536 531 T 1 532 Т 2 533 Т 3 534 Т 4 535 GOTO 600 536 P 1 537 Р 2 538 Р 3 600 ...

Проверьте, что, исполняя этот фрагмент, ЭВМ выполнит команды P 1 , Р 2 , Р 3 , если условие Q выполняется, и команды Т 1 , T 2 , Т 3 , Т 4 , если Q не имеет места. А затем, после выполнения соответствующей серии команд, ЭВМ перейдет к выполнению команды, записанной в строке 600.

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

10 INPUT X 20 IF Х>=2 THEN Y=SQR(X) ELSE Y=ABS(X) 30 PRINT"Y="Y 40 END

Можно было эту программу записать и так:

10 INPUT X 20 IF X>=2 THEN 50 30 Y=ABS(X) 40 GOTO 60 50 Y=SQR(X) 60 END

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

Задача. На заданном расстоянии от пушки находится стена. Известен угол наклона пушки и начальная скорость снаряда. Попадет ли снаряд в стену?

Сначала, как обычно, выскажем упрощающие предположения. Снаряд считаем материальной точкой, сопротивлением воздуха и размерами пушки пренебрегаем. Разумеется, мы считаем также, что выполняются законы Ньютона. Из условия задачи видно, каковы в ней исходные данные: это угол а, начальная скорость v, расстояние до стены S и высота стены h. Результатом является одно из сообщений "попал" или "не попал". Начальные данные подчиняются естественным ограничениям: 00, h>0, 0

Значит, нам надо вывести формулу для определения L. Как вы знаете из курса физики, перемещения снаряда по горизонтали и вертикали за время t равны, соответственно:

x = (v cos α) t; y = (v sin α) t-gt 2 /2,

где g - ускорение свободного падения (9,8 м/с 2). Определим, сколько времени понадобится снаряду, чтобы преодолеть расстояние S:

t = S/(v cos α).

Подставив это значение t в выражение для у, получим значение L:


Конечно, значение L, вычисленное по этой формуле, может оказаться и отрицательным. Это означает, что снаряд до стены не долетит. Если же L окажется больше h, то снаряд перелетит через стену. Вот математическая модель и построена.

Составим алгоритм для ВЫЧИСЛИТЕЛЯ:

Сообщить "Введите начальную скорость снаряда, расстояние до стены, высоту стены". Запросить v, S, h. Сообщить "Введите угол наклона ствола пушки". Запросить А. Если Vν≤0, то: Сообщить "Скорость должна быть положительной". Стоп. Конец ветвления. Если vν≥1000, то: Сообщить "Скорость слишком велика". Стоп. Конец ветвления. Если S≥0, то: Сообщить "Расстояние должно быть положительным". Стоп. Конец ветвления. Если h≤0, то: Сообщить "Высота стены должна быть положительной". Стоп. Конец ветвления. Если A≤0, то: Сообщить "Пушка не должна стрелять в землю". Стоп. Конец ветвления. Если А≥3,14/2, то: Сообщить "Пушка направлена не в сторону стены". Стоп. Конец ветвления. Присвоить L значение Если L>h, то: Сообщить "Снаряд не попал в стену...". Стоп. Конец ветвления. Если L

А теперь переведите этот алгоритм на язык Бейсик (мы и так сделали большую часть работы).

Вопросы

1. По какой команде можно заставить ЭВМ, не проверяя никаких условий, изменить порядок выполнения действий?

2. Как в языке Бейсик оформляется ветвление:

а) в неполной форме;

б) в полной форме?

3. Для чего нужны первые 28 строк в алгоритме решения "артиллерийской" задачи?

Задания для самостоятельного выполнения

1. Переведите на Бейсик алгоритмы решения задач 5-7 из § 8 и 1-7 из § 9.

2. Найдите и исправьте ошибки в следующей программе нахождения квадратного корня из числа:

10 INPUT X 20 IF X> = 0 THEN 30 30 PRINT SQR(X) 40 GOTO 60 50 PRINT. "Корень вычислить невозможно" 60 END

3. Злоумышленник стер команду 100 в следующей программе нахождения корней квадратного уравнения:

10 INPUT А,Б,С 20 IF А 0 THEN 50 30 PRINT "Это уравнение не квадратное" 40 STOP 50 D=B^2 - 4∗A∗C 60 IF D

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

Задача. Пушка стреляет в направлении движения градового облака в тот момент, когда оно проплывает над пушкой. Известен угол наклона ствола, скорость снаряда, длина и скорость облака, высота, на которой движется облако. Попадет ли снаряд в облако?

Строка кода в программе на Visual Basic называется оператором программы. Оператор программы является комбинацией ключевых слов Visual Basic, свойств, функций, арифметических или логических операторов и символов, которые вместе образуют допустимую инструкцию, распознаваемую компилятором Visual Basic.

93. Массивы и операции циклов

Урок 22. Операторы циклов For...Next и For Each

Циклы в VB.NET похожи на циклы в других языках программирования. На этом занятии мы рассмотрим циклы двух типов - циклы For...Next и For Each. Циклы For...Next выпоялняются опеределенное число раз. Т. е. если вам заранее известно, сколько раз должен выполнится ваш цикл, то используем цикл For...Next. Цикл For Each используется для обхода элементов коллекций и массивов. Например, с помощью For Each можно перечислить (обойти) все элементы на форме или обработать все строки тамбицы в базе данных.

Вот пример на оператор For...Next:

Dim A(10) As Integer

Dim i As Integer

"Заполняем массив квадратами чисел

"Выводим элементы массива

Console.WriteLine(A(i))

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

Можно написать

В циклах типа For...Next счетчик цикла (i в данном случае) изменяется автоматически.

В приведенном примере счетчик увеличивается при каждом прохождении цикла на 1. Если вам нужен другой шаг, то используем конструкцию с Step:

For i = 0 To 9 Step 2

"Что-то делаем

Такой цикл выполнится 5 раз.

Теперь рассмотрим пример на цикл For Each:

Dim z As Integer

Dim A(10) As Integer

"Заполняем массив A

For Each z In A

If z > 10 Then

Console.WriteLine(z)

Как вы видите, мы в нашем цикле пробегаем все элементы в массиве A (это видно из конструкции In A). Если элемент массива оказался больше 10, мы выводим его на экран.

Обычно циклы For Each используются для перечисления элементв всевозможных коллекций (например, элементов на форме или всех шрифтом в Windows).

Использование массивов данных при решении задач. Массивы в ВБ. Индексированные переменные. Описание массивов. Порядок назначения нижней и верхней границ индексов массивов. Массивы элементов управления. Порядок создания массивов элементов управления. Массивом можно назвать ряд ячеек памяти, отведенных для хранения индексированной переменной. X1,Y2, Zt+1, Mi,j+1 – индексные переменные. => Х(1), Y(2), Z(i+1), M(I, f+1) – в ЯПВУ, предназначены для работы с числовыми рядами. dlina (1), dlina (2), dlina (3) – массив одномерный. Dim dlina (1 to 3) As Integer – описание массива в программе, причем 1 – нижняя граница массива, 3 – верхняя граница массива. Индексация массивов необязательно начинается с 0 или 1. Массив элементов управления образуется с помощью свойства Index, назначая свойства Index, мы говорим компьютеру, что данный объект считается элементом массива. Массив элементов управления – это ряд пронумерованных объектов. Способ создания: 1) Назначение свойства Index на этапе проектирования. 2) Путем копирования в Win (copy/paste). 3) Программным путем (Load Text 1(1) – метод). Load загружает на форму объект с именем Text1(1). Двумерные массивы. Задаются аналогично одномерным: Dim dlina (1 to 3, 1 to 4) As Integer, где в скобках через запятую перечисляются границы по двум направлениям, первыми (1 to 3) границы по вертикали, а вторыми по горизонтали(1 to 4). Обращение к элементу двумерного массива: dlina(1,3) – элемент в первой строчке, третьем столбце.

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

Static х(2) As Integer (x=0,1,2).

Если размер массива не может быть определен заранее, то используется динамический массив:

Dim Y() As Integer.

Для определения констант используется ключевое слово:

Const Pi = 3.142.

Массив, как параметр процедуры

Rem Программа_2.5 – Массив, как параметр процедуры

Dim n As Integer

Dim s As Single

Dim x(2) As Single

x(1) = 5: x(2) = 15: s = 0

Call sumir(x(), n, s) ‘ вызов процедуры суммирования элементов массива

MsgBox "s = " & Str(s)

Sub sumir (x() As Single, n As Integer, s As Single)

Dim i As Integer

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

Пользовательские функции (не библиотечные функции, составляемые самим пользователем) объявляются при вводе в окне редактирования кода заголовка из ключевого слова Function и следующего за ним имени функции с требуемыми аргументами в круглых скобках. После этого автоматически появляется следующий шаблон:

Function ИМЯ_ФУНКЦИИ

В пространство между именем функции и ключевыми словами End Function вносятся необходимые операторы.

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

Общий синтаксис определения функции:

Function ИМЯ_ФУНКЦИИ(ПАРАМЕТР_1[, ПАРАМЕТР_2]...)

ОПЕРАТОР_1

[ОПЕРАТОР_2]

ИМЯ_ФУНКЦИИ = ВЫРАЖЕНИЕ

где ПАРАМЕТР – элемент данных, передаваемый функции при ее вызове; Static – при наличии в объявлении функции данного ключевого слова локальные переменные, объявленные в теле функции, сохраняют свои значения в промежутках между вызовами этой функции.

Способы вызова функций: X = fun1(Y), или Call fun1 Y.

Если функция должна возвращать символьное (строковое) значение, то последним символом в ее имени должен быть знак $.

Каждая функция всегда возвращает только одно значение.

Примеры функций:

1. Передача параметра из функции

Rem Программа_2.6 – Передача параметра из функции

Dim x As Single, y As Single, s As Single

s = sumir(x, y) ‘ вызов функции суммирования двух чисел

MsgBox "s = " & Str(s)

Function sumir! (x!, y!) ‘ определение функции суммирования двух чисел

sumir! = x! + y!

Для хранения величин кроме простых переменных можно использовать массивы. Массив представляет собой набор переменных с одним именем и разными индексами. Каждая такая переменная называется элементом массива. Количество хранящихся в массиве элементов называется размером массива. Размер массива ограничен объемом оперативной памяти и типом данных элементов массива. Все элементы массива имеют одинаковый тип. Однако если массив имеет тип variant, то отдельные элементы могут содержать данные разных типов. Например, одни элементы могут быть числами, другие - строками или объектами. В Visual Basic существуют массивы фиксированного размера и динамические массивы. Массив фиксированного размера имеет неизменный размер, заданный при его объявлении. Динамические массивы могут изменять размер в процессе выполнения. Что такое двумерный массив? Это такой набор однотипных данных, местоположение каждого элемента которого определяется не одним индексом, а двумя. Например, для тех, кто с детства играл в "морской бой", не будет открытием, что каждая клеточка игрового поля обозначается двумя символами - буквой и цифрой, например, А5 - "мимо", И10- "попал", Ж7 - "убит". Только в Бейсике принято в качестве индексов использовать все же целые числа. Жизненный пример применения двумерных массивов - билеты в кино или театр, имеющие для каждого зрителя две координаты - ряд и место".

Описываются подобные массивы в Бейсике тем же оператором dim, после которого в скобках указываются две размерности массива - количество строк и количество столбцов.

 

Возможно, будет полезно почитать: