Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Команды управления ходом выполнения программы
Очень часто, в зависимости от некоторых условий, приходится изменять последовательность выполнения команд действия. Команды управления ходом выполнения программы делятся на три группы: 1. Команды безусловного перехода; 2. Команды условного перехода; 3. Команды организации циклов.
Безусловная передача управления
Формат: GOTO номер строки или метка Управление передается команде, помеченной номером строки или меткой. Например: GOTO W … W: PRINT" Решение получено" Примечание.В среде программистов употребление GOTO принято считать дурным тоном. Чрезмерное пристрастие к GOTO запутывает программу.
Условная передача управления
Конструкцию условной передачи управления можно записать в одном из двух форматов - блочном (в несколько строк) или линейном (в одной строке). Линейный формат: IF логическое выражение THEN < блок команд 1> [ELSE < блок команд 2> ] Блочный формат: IF логическое выражение THEN < блок команд 1> [ELSE < блок команд 2> ] END IF Выполнение. Если логическое выражение принимает значение " Истина", выполняется блок команд 1, если логическое выражение - " Ложь", выполняется блок команд 2. Если ELSE отсутствует, то выполняется команда, стоящая за END IF. Пример1 INPUT " Сколько будет 2x2 ", X IF X=4 THEN PRINT " Правильно" ELSE PRINT " Не правильно" END Пример2 Вычислить значение функции Y
Линейный формат: INPUT " Введите значение аргумента Х ", X IF X< =1 THEN Y=X-1/2*X^2+3 ELSE Y=1.05*(X-1)^2 PRINT " При значении Х="; X; " функция Y="; Y END Блочный формат: INPUT " Введите значение аргумента Х ", X IF X< =1 THEN Y=X-1/2*X^2+3 ELSE Y=1.05*(X-1)^2 END IF PRINT " При значении Х="; X; " функция Y="; Y END Возможна вложенность одного условного оператора в другой.
Формат записи вложенных условных операторов
IF логическое выражение THEN < блок команд 1> [ELSEIF логическое выражение THEN < блок команд 2> ] …………………….. [ELSE < блок команд n> ] END IF Пример3 Составить программу вычисления функции:
1 вариант IF Z< 0 THEN F=Z-5/Z^2 ELSEIF Z< =1 THEN F=Z^2-1 ELSE F=1/(1-Z) ENDIF PRINT " F="; F END
2 вариант IF Z< 0 THEN F=Z-5/Z^2 IF Z< =1 AND Z> =0 THEN F=Z^2-1 IF Z> 1 THEN F=1/(1-Z) PRINT " F="; F END
Для самостоятельного решения: Составить программу определения кислотности раствора с помощью лакмусовой бумажки. Напомним, что, если бумажка окрашивается в красный цвет - раствор кислотный; синий - раствор щелочной; не меняет цвет - раствор нейтральный. Множественный выбор (SELECT CASE)
Формат SELECT CASE арифм_выражение или симв_выражение CASE условие 1 < блок команд 1> CASE условие 2 < блок команд 2> ………………. [CASE ELSE < блок команд n> ] END SELECT Условие оператора CASE можно указать в одном из трех форматов: 1) CASE константа 1, константа 2, … 2) CASE IS знак_отношения константа 3) CASE константа 1 TO константа 2 Константы в условии должны быть того же типа, что и выражение в SELECT CASE. Алгоритм множественного выбора заключается в следующем: § вычисляется значение выражения, записанного в SELECT CASE. § проверяется, удовлетворяет ли это значение одному из указанных в CASE условий § если значение удовлетворяет какому-то условию, выполняется блок команд, следующий за данным CASE. Пример INPUT " Введите значение ", A SELECT CASE A CASE 1, 5 PRINT " А равно 1 или 5" CASE IS > 5 PRINT " А больше 5" CASE -8 TO 2.5 PRINT " А не меньше -8, но не больше 2.5" CASE else PRINT " Ни одно условие не выполняется" END SELECT После выполнения того или иного блока команд управление передается команде, следующей за END SELECT. Работа с датой и временем Функция DATE$ Выдается текущая дата, зарегистрированная в компьютере. Формат даты: ММ-ДД-ГГГГ. Например PRINT DATE$ Выведется текущая дата: 15-09-2000 Функция TIME$ Выдается текущее системное время, зарегистрированное в компьютере. Формат времени: ЧЧ: ММ: СС (часы, минуты, секунды). Например PRINT TIME$, на экране выдается текущее время. Циклы В языке BASIC предусмотрено два основных способа организации циклов: § повторение блока команд заданное количество (число) раз (цикл со счетчиком); § циклическое повторение блока команд, пока выполняется (или не выполняется) некоторое условие. Цикл со счетчиком (FOR…NEXT)
Этот оператор используется, когда некоторый блок команд необходимо выполнить заданное число раз. Формат FOR счетчик=E1 TO E2 [STEP E3] Блок команд NEXT счетчик счетчик (параметр)- числовая переменная; E1 - начальное значение счетчика; E2 - конечное значение счетчика; E3 - шаг изменения счетчика. По умолчанию этот шаг равен 1; Блок команд - набор операторов, предназначенных для повторения. Выполнение. Если E3 > 0, то цикл продолжается все время, пока счетчик < или = E2. Если E3 < 0, то цикл продолжается все время, пока счетчик > или = E2. Примеры 1) FOR I=1 TO 5 PRINT I; NEXT I Результат: 1 2 3 4 5 Тело цикла будет выполняться 5 раз. Шаг изменения счетчика по умолчанию равен 1. 2) FOR I=1 TO 5 STEP 2 PRINT I; NEXT I Результат: 1 3 5 3) Обратный цикл FOR I=5 TO 1 STEP -1 PRINT I; NEXT I Результат: 5 4 3 2 1 4) FOR I=5 TO 1 PRINT I; NEXT I Проверка выхода из цикла производится в начале цикла, поэтому цикл не выполнится ни разу. Ограничения при использовании оператора цикла FOR … NEXT: 1. Не изменяйте значение параметра цикла внутри цикла FOR I=1 TO 5 I=I+1 ' НЕЛЬЗЯ! NEXT I 2. Никогда не передавайте управление внутрь цикла, это может привести к непредсказуемым результатам. GOTO 10 ' НЕЛЬЗЯ! FOR I=1 TO 5 10 INPUT A S=S+A NEXT I Досрочный выход из цикла Для цикла FOR предусмотрена возможность безусловного выхода из цикла ( до его завершения). Управление передается команде, следующей за NEXT. Формат команды выхода: EXIT FOR Например FOR I=1 TO 10 INPUT " Введите значение параметра"; F IF F=100 THEN EXIT FOR S=S+F NEXT I PRINT " Значения "
Подсчет:
Пример1. Подсчитать сумму 10 значений переменной A. S=0 FOR I=1 TO 10 INPUT " Введите значение переменной"; A S=S+A 'Подсчет суммы значений переменной A NEXT I PRINT " Сумма ="; S Пример 2. Подсчитать количество положительных чисел и произведение отрицательных чисел из N введенных. INPUT “Введите количество значений”; N К=0 P=1 FOR I=1 TO N INPUT " Введите значение переменной"; A IF A> 0 THEN K=K+1 IF A< 0 THEN P=P*A NEXT I PRINT" Количество положительных чисел ="; K PRINT" Произведение отрицательных чисел ="; P Домашнее задание: 1. Подсчитать сумму положительных элементов, не превышающих значения 10 из N введенных. 2. Подсчитать количество мальчиков, рост которых превышает 165 см и количество девочек, рост которых не превышает 165. Практическое занятие Пример 1. Рассчитать и вывести на печать значения функции Y=5/X при изменении аргумента X от -5 до 5 с шагом 2. FOR X=-5 TO 5 STEP 2 Y= 5/X PRINT " X="; X, " Y="; Y NEXT X Пример 2. Дан ряд чисел 100, 55, -1000, 20, 5, 8, 33, 48. Найти количество пар чисел квадрат разности которых < 100. DATA 100, 55, -1000, 20, 5, 8, 33, 48 K=0 FOR I=1 TO 8 STEP 2 READ A, B IF (A-B)^2 < 100 THEN K=K+1 NEXT I PRINT " Количество пар чисел квадрат разности которых < 100 ="; K Пример 3. Найти максимальное значение из N введенных. Вывести максимальное значение и его индекс. INPUT " Введите количество значений"; N INPUT " Введите первое значение"; A MAX=A: IN=1 FOR I=2 TO N PRINT " Введите "; I; " -ое значение" INPUT A IF A> MAX THEN MAX=A: IN=I NEXT I PRINT " Максимальное значение ="; MAX PRINT “Индекс максимального значения =”; IN Домашнее задание:
Цикл WHILE … WEND Формат WHILE логическое выражение Блок команд WEND Данный оператор позволяет выполнять блок команд до тех пор, пока значение логического выражения " Истина". После завершения цикла управление передается команде, следующей за WEND. Например: WHILE PAS$< > " Петуния" INPUT" Введите пароль"; PAS$ WEND PRINT" Добро пожаловать" Этот цикл будет работать до тех пор, пока не будет введен правильный пароль. В блоке команд должен присутствовать оператор, влияющий на значение логического выражения. Например: 1) I=0 WHILE I< =10 I=I+1 'оператор, который влияет на значение логического выражения WEND PRINT I
2) Пример бесконечного цикла I=0 WHILE I< =10 INPUT A S=S+A WEND PRINT S В блоке команд нет оператора, который бы изменял значение I. Если при первой проверке условия окажется, что значение логического выражения - " Ложь", блок команд не будет выполнен ни разу. Например: I=10 WHILE I< 10 I=I+1 WEND Пример 1. Вычислить сумму четных чисел в интервале от 1 до 10 включительно. ' I - четные числа ' Sum - сумма четных чисел I=2 Sum=0 WHILE I< =10 Sum=Sum+I I=I+2 WEND PRINT" Сумма четных чисел в интервале от 0 до 10 ="; Sum Пример 2. В подъезде N ступенек. Сколько шагов будет сделано, если шагать через 3 ступеньки. ' KS - количество ступенек ' KH - количество шагов INPUT " Введите количество ступенек"; N KS=0 KH=0 WHILE KS< =N KS=KS+3 KH=KH+1 WEND PRINT" Количество шагов="; KH Пример 3. Известна сумма номеров страниц. Определить номер страницы. ' NS - номер страницы ' S - сумма номеров страниц INPUT" Введите сумму номеров страниц"; Q NS=0 S=0 WHILE S< Q NS=NS+1 S=S+NS WEND PRINT" Номер страницы = "; NS
Домашнее задание: Вычислить значения членов последовательности K=3i, где i=1, 3, 5, ..., не превышающих заданного числа N.
Вложенные циклы Можно организовать весьма сложные повторения, используя циклы внутри циклов (Вложенные циклы). Формат: FOR … FOR --------- ý тело внутреннего цикла NEXT -------- … NEXT Пример 1. Напечатать таблицу умножения до 12 в виде 1*2=2 2*2=4 и т.д. FOR I=2 TO 12 FOR J=1 TO 12 PRINT J; ”*”; I; ”=”; J*I NEXT J NEXT I Пример 2. Напечатать таблицу умножения до 5 в виде таблицы. 1 2 3 4 5 2 4 6 8 10 и т.д. FOR I=2 TO 12 FOR J=1 TO 12 PRINT J*I; NEXT J NEXT I Пример 3. Напечатать все четырехзначные натуральные числа в десятичной записи которых нет двух одинаковых цифр. FOR T=1 TO 9 ‘ FOR S=0 TO 9 FOR D=0 TO 9 FOR E=0 TO 9 IF T< > S AND T< > D AND T< > E AND S< > D AND S< > E AND D< > E THEN M=T*1000+S*100+D*10+E PRINT M, ENDIF NEXT E NEXT D NEXT S NEXT T Задание Найти и напечатать все трехзначные числа сумма кубов которых равна самому числу. Например: 407=43+03+73=64+0+343
Массивы
Одним из важных инструментов программиста является возможность работы с массивами переменных. Массив - набор однотипных данных, хранящихся вместе и имеющих общее имя. Возможность объединения групп элементов в массив позволяет, с одной стороны, облегчить массовую обработку данных, а с другой - упростить идентификацию элементов массива. Каждому элементу массива может быть присвоено одно числовое или символьное значение, поэтому различаются массивы числовые и символьные. Кроме того, массивы могут быть одномерными и многомерными.
Одномерные массивы Основные понятия: Массив обозначается одним именем. Так всю совокупность действительных чисел 1.6, 14.9, -5.0, 8.5, 0.46 можно считать массивом и обозначить одним именем, например А. Образующие массив переменные называются элементами массива. Каждый элемент массива обозначается именем массива с индексом, заключенным в круглые скобки. A(1), A(2), A(3), ..., A(n). Индекс определяет положение элемента массива данных относительно его начала. Для рассмотренного выше примера элементами массива А являются: A(1)=1.6, A(2)=14.9, A(3)=-5.0, A(4)=8.5, A(5)=0.46
Определение массивов
Прежде чем воспользоваться массивом, в программу надо включить оператор DIM, задающий максимально допустимый индекс. Это даст возможность системе с Бейсиком зарезервировать в памяти область достаточного размера. Массивы, содержащие от 1 до 10 элементов, можно использовать без их объявления в операторе DIM. Максимальное количество элементов любого массива определяется только объемом свободной ОП. Формат записи оператора DIM: DIM имя_массива (максимальный_индекс) " Имя_массива" обычно выбирается по тем же правилам, что и имена простых переменных. " Максимальный_индекс" указывает максимально допустимый в программе индекс и должен быть положительным. Примеры описания массивов: DIM X(50) ' объявление одномерного числового массива X для 50 чисел; DIM V$(12) 'объявление одномерного массива V для 12 символьных элементов. Объявление массива с переменным размером. INPUT K DIM A(K) ........ Виды ошибок Если указать в программе элемент массива с индексом большим, чем значение размерности, объявленное в операторе DIM или принятое по умолчанию, то выдается сообщение об ошибке 9: Subscript out of range (выход за пределы массива). Если оператор DIM указан после использования имени массива или массив повторно объявлен, то появляется сообщение 10: Redimensioned array (повторное задание размерности массива).
Заполнение массива
Существует два способа присваивания значений элементам массива: 1) cтатический, с использованием операторов DATA, READ и оператора присваивания; 2) динамический, с использованием оператора INPUT и функции RND. При работе с массивами очень удобно пользоваться оператором цикла FOR...NEXT. В качестве индекса массива используют параметр цикла. 1. Пример статического заполнения массива. DATA слива, ананас, груша DATA яблоко, вишня, абрикос DIM A$(6) FOR I=1 TO 6 READ A$(I) NEXT I Цикл FOR...NEXT последовательно присваивает значения всем переменным из списка. 2. Пример динамического заполнения массива INPUT " Введите количество элементов массива "; N DIM A(N) FOR I=1 TO N INPUT A(I) NEXT I В данном примере используется переменное задание размерности массива. 3. Пример заполнения массива с помощью стандартной функции RND DIM V(12) FOR I=1 TO 12 V(I)=INT(RND(1)*10) PRINT V(I); NEXT J Порядок работы с массивами 1. объявление массива (задание максимального размера массива); 2. заполнение массива; 3. обработка элементов массива; 4. вывод результата обработки.
Популярное:
|
Последнее изменение этой страницы: 2017-03-08; Просмотров: 1092; Нарушение авторского права страницы