Бейсик

Автор работы: Пользователь скрыл имя, 14 Ноября 2010 в 08:37, Не определен

Описание работы

Лекции

Файлы: 1 файл

Бейсик.doc

— 354.00 Кб (Скачать файл)

Ветвление в алгоритмах и  программах.

Разветвляющий алгоритм – это алгоритм, в котором в  зависимости от условия выполняется либо одна, либо другая последовательность действий.

Во многих случаях  требуется, чтобы при одних условиях выполнялась одна последовательность действий, а при других - другая.

          
 

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

Рассмотрим запись условного оператора на языке Basic.

Простая форма оператора  выглядит следующим образом:

IF <УСЛОВИЕ> THEN <ОПЕРАТОР> 

или

IF <УСЛОВИЕ>  
<ОПЕРАТОР 1> 
<ОПЕРАТОР 2> 
            … 
<ОПЕРАТОР N> 
END IF

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

Условия - еще один тип логических выражений. В них  используются следующие операторы сравнения:

= равно
<> не равно
> больше
< меньше
>= больше или равно
<= меньше или равно

Справа и слева  от знака сравнения должны стоять величины, относящиеся к одному типу. В результате сравнения получается логическая величина, имеющее значение ИСТИНА (TRUE) или ЛОЖЬ (FALSE).

Пример: 
5<7    - ИСТИНА; 
8=12     -ЛОЖЬ (проверяем равно ли 8 12, именно проверяем, а не утверждаем, что 8=12);

Предыдущие конструкции  позволяли обойти или выполнить  серию оператор в зависимости  от справедливости условия. Это еще  не было ветвлением. Чтобы вычисления могли разветвляться по нескольким направлениям, служит конструкция IF...THEN...ELSE...END IF

IF <УСЛОВИЕ> THEN  
<ОПЕРАТОРЫ 1> 
ELSE 
<ОПЕРАТОРЫ 2> 
END IF

Если условие справедливо (ИСТИНА), то выполняются <операторы 1> (стоящие между THEN и ELSE), а <операторы 2> (стоящие между ELSE и END IF) будут пропущены. 
Если условие не справедливо (ЛОЖЬ), то <операторы 1> игнорируются и выполняются <операторы 2>.

IF - если, THEN - тогда, ELSE - иначе.

Если в комнате темно, тогда надо включить свет. 

Если пойдет дождь, тогда надо взять зонтик,  
иначе, зонтик не брать. 

Пример: Проверить, равно  ли введенное число некоторому значению, и в случае равенства выдать  на экран сообщение о равенстве чисел.

REM сравнить число  со каким-то значением 
INPUT "Введите а", а 
IF a=7 THEN PRINT "Числа равны" 
END

После запуска программы  проверяется равно  ли введенное значение семи или нет. Если равно, то на экран  выводится сообщение 'Числа  равны'.

Пример: Определить большее из двух чисел, вывести его  на экран, затем - увеличить его в  двое и вывести результат на экран.

REM определить большее  из двух чисел... 
INPUT "Введите а", а 
INPUT "Введите b", b 
IF a>b THEN 
PRINT "Большее число: ", a 
с=2*a 
ELSE 
PRINT "Большее число: ", b 
с=2*b 
END IF 
PRINT "результат: ", c 
END

Сначала программа  запрашивает оба числа, затем проверяет условие a>b. Если условие верно, то на экран выводится число a, затем это число удваивается. Иначе на на экран выводится число b, затем  число b удваивается. В завершении на экран выводится удвоенное значение большего числа.

Обратите внимание: программа имеет один недостаток - не учитывается тот случай, когда введенные числа равны. Исправим это, использовав вложение одного условия в другое.

REM определить большее  из двух чисел... 
INPUT "Введите а", а 
INPUT "Введите b", b 
IF a=b TNEN 
PRINT "Числа равны" 
с=2*a 
ELSE 
    IF a>b THEN 
    PRINT "Большее число: ", a 
    с=2*a 
    ELSE 
    PRINT "Большее число: ", b 
    с=2*b 
    END IF 
END IF 
PRINT "результат: ", c 
END

В этой программе  два условных оператора, первым проверяется  условие равенства чисел и, в случае его выполнения, будет выдано сообщение о равенстве чисел, если числа не равны, то проверяется второе условие...

Пример: Решение квадратного  уравнения. 
Решение квадратного уравнения зависит от значения дискриминанта.

REM Решение квадратного уравнения 
INPUT "Введите коэффициент a: ", а 
INPUT "Введите коэффициент b: ", b 
INPUT "Введите коэффициент c: ", c 
d=b*b-4*a*c 
IF d<0 THEN 
PRINT "Корней нет" 
ELSE 
    IF d=0 THEN 
    x=-b/(2*a) 
    PRINT "корень уравнения: ", x 
    ELSE 
    x1=(-b-SQR(d))/(2*a) 
    x2=(-b+SQR(d))/(2*a) 
    PRINT "корни уравнения: ", x1, x2 
    END IF 
END IF 
END

Структура "Выбор".

Структура IF... позволяет выбрать между двумя вариантами. Если требуется осуществить выбор между большим числом вариантов, то это можно организовать используя лишь структуру IF... Но можно (что чаще проще) и с помощью структуры "Выбор". Эта структура имеет вид:

SELECT CASE <Выражение> 
CASE <условие 1> 
<серия 1> 
CASE<условие 2> 
<серия 2> 
... 
CASE ELSE 
<серия иначе> 
END SELECT

Выражение, заданное после ключевых слов SELECT CASE, сравнивается с определенными значениями - условиями и если они истинны, то выполняется соответствующая серия команд. Если не одно условие не истинно, то выполняется серия команд между CASE ELSE и END SELECT.

Пример: Выдать словесное значение числа

REM Преобразование  чисел в слова 
INPUT "Введите число", a 
SELECT CASE a 
CASE 1 
PRINT "один" 
CASE 2 
PRINT "два" 
CASE 3 
PRINT "три" 
... 
CASE 10 
PRINT "десять" 
CASE ELSE 
PRINT "это число не могу перевести" 
END SELECT 
END

В данном примере  введенное число сравнивается с  числами от 1 до 10 и если наше число  равно одному из этих чисел, то на экран  выводится словесное значение числа. Если это не так на экран выводится  сообщение: "это число не могу перевести".

Учимся программировать! 
Конспекты школьника.

Циклы в алгоритмах и программах.

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

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

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

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

Например, на уроке  физкультуры вы должны пробежать  некоторое количество кругов вокруг стадиона.

                             
 
 

Такие циклы называются - циклы со счетчиком.

На языке Basic они записываются следующим образом:

FOR Счетчик=НачЗнач  TO КонЗнач [STEP шаг] 
тело цикла 
NEXT [Счетчик]

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

Пример: Вывести на экран все числа от 1 до 100. Для  этого можно было бы написать следующую  программу:

REM Вывод чисел от 1 до 100 
PRINT 1 
PRINT 2 
PRINT 3 
PRINT 4 
PRINT 5 
PRINT 6 
PRINT 7 
    ... 
PRINT 98 
PRINT 99 
PRINT 100 
END

Всего каких-то 102 строчки ;-). Хотя эту же программу можно  написать намного короче:

REM Вывод чисел от 1 до 100 
FOR I=1 TO 100 
PRINT I 
NEXT 
END

Немного исправив программу  можно сделать, чтобы она выводила все числа от a до b.

REM Вывод чисел от a до b 
a=55 
b=107 
FOR I=a TO b 
PRINT I 
NEXT 
END

В этом случае счетчик  при первом прохождении цикла  принимает значение переменной a, после  чего выполняются операторы до ключевого  слова NEXT. После этого счетчик  увеличивается на единицу и сравнивается со значение переменной b, если счетчик меньше, то цикл выполняется еще.

Легко сделать чтобы  программа выводила числа в обратном порядке. Для этого шаг цикла  должен быть равен -1 (минус один). В  этом случае значение счетчика каждый раз после прохождения цикла будет уменьшено на единицу.

REM Вывод чисел от b до a 
a=55 
b=107 
FOR I=b TO a STEP -1 
PRINT I 
NEXT 
END

Пример: Вычислить  сумму двухзначных натуральных  чисел.

REM Вычислить сумму  двухзначных натуральных чисел 
FOR I=10 TO 99 
s=s+I 
NEXT 
PRINT "Результат = ",s 
END

Программа перебирает числа от 10 до 99 каждый раз выполняя действия s=s+I. С точки зрения математики это совершенно бессмысленная запись, но рассмотрим её внимательней.  
Процесс решения вычислительной задачи - это процесс последовательного изменения значений переменных. В итоге - в определенных переменных получается результат. Переменная получает определенное значение в результате присваивания. Вы помните, что присваивание - это занесение в ячейку, отведенную под переменную, определенного значения в результате выполнения команды.  
В результате операции а=5 переменная а получает значение 5.  
В результате операции с=a+b переменная с получает значение равное сумме значений переменной а и b.  
В результате операции s=s+I переменная s получает значение равное сумме предыдущего значения переменной s и значения переменной I. Т.е., если до операции присваивания значение s было равно 5, а переменной I равно 3, то после операции значение переменной s будет равно 8 (5+3, старое значение s + значение I). 
Значит после выполнения нашей программы в переменной s будет хранится сумма всех двузначных чисел от 10 до 99.

Пример: вычислить  факториал числа а (записывается так: а!). Факториал - это произведение чисел от 1 до а. Например, 5! (факториал пяти) - это 5!=1*2*3*4*5

REM Вычислить факториал числа 
a=5 
f=1 
FOR I=1 TO a 
f=f*I 
NEXT 
PRINT f 
END

Вы, конечно, заметили, что до начала цикла мы присвоили  переменной f значение равное единице. Иначе бы мы получили в результате ноль.

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

                 

Циклы такого вида называют - циклы с предусловием.

На языке Basic они  записываются следующим образом:

DO WHILE условие 
Тело цикла 
LOOP

В этом цикле проверяется условие и если оно выполняется (ИСТИНА), то выполняется тело цикла до ключевого слова LOOP, затем условие проверяется снова ... и так до тех пор пока условие истино. 
 
DO UNTIL условие 
Тело цикла 
LOOP

Информация о работе Бейсик