Урок 28. Информатика 10 класс Qbasic
Темы для изучения: Линейный алгоритм. Разветвляющийся алгоритм.
Циклический алгоритм. Цикл с известным числом повторений. Цикл
с предусловием. Цикл с постусловием.
Задачи модуля:
Учащиеся должны знать:
Учащиеся должны уметь:
Актуализация
Введение в язык программирования Basic.
Для представления алгоритма в виде,
понятном компьютеру, служат языки программирования. Сначала
разрабатывается алгоритм действий, а потом он записывается на одном из таких
языков. В итоге получается текст программы – полное, законченное и детальное
описание алгоритма на языке программирования. Затем этот текст программы
специальными служебными приложениями, которые называются трансляторами,
либо переводится в машинный код (язык нулей и единиц), либо исполняется.
Basic (Бейсик) создавался в 60-х годах в качестве учебного
языка и очень прост в изучении. По популярности занимает первое место в мире.
Некоторые операторы языка Basic.
REM – оператор комментария.
CLS – очистить экран.
PRINT (вывод, печать) – оператор вывода.
INPUT (ввод) – оператор ввода.
DIM – оператор описания типа переменной.
.
Для задания значения переменной служит
оператор присваивания. Он записывается так:
LET переменная = значение (или
просто: переменная = значение)
END – оператор конца программы
Арифметические операции на языке Basic.
Операция |
Обозначение |
Пример |
Результат |
Сложение |
+ |
2+5 |
7 |
Вычитание |
– |
10–8 |
2 |
Умножение |
* |
3*4 |
12 |
Деление |
/ |
15/3 |
5 |
Целочисленное
деление |
\ |
15\4 |
3 |
Возведение
в степень |
^ |
2^3 |
8 |
Остаток от
деления |
MOD |
13 MOD 5 |
3 |
Математические функции на языке Basic.
Корень |
SQR(X) |
Модуль
числа |
ABS(X) |
Синус |
SIN(X) |
Косинус |
COS(X) |
Тангенс |
TAN(X) |
Целая
часть числа |
INT(X) |
Натуральный
логарифм |
LOG(X) |
Линейная структура программы.
Программа имеет линейную структуру, если
все операторы (команды) выполняются последовательно друг за другом.
Пример: Вычислите площадь прямоугольника по его
сторонам.
REM Площадь прямоугольника
INPUT "Введите сторону а", а
INPUT "Введите сторону b", b
s = a * b
PRINT "Площадь равна: ", s
END
Пример: Вычислите длину окружности и площадь круга по
данному радиусу.
REM Вычисление длины окружности и
площади круга
INPUT "Введите радиус ", r
PI = 3.14
l = 2 * PI * r
s= PI * r * r
PRINT "Длина окружности равна: ", l
PRINT "Площадь равна: ", s
END
Ветвление в алгоритмах и программах.
Разветвляющий алгоритм – это алгоритм, в
котором в зависимости от условия выполняется либо одна, либо другая
последовательность действий.
Рассмотрим запись условного оператора на
языке Basic.
IF <УСЛОВИЕ> THEN <ОПЕРАТОР>
или
IF <УСЛОВИЕ>
<ОПЕРАТОР 1>
<ОПЕРАТОР 2>
…
<ОПЕРАТОР N>.
Условия – еще один тип логических
выражений. В них используются следующие операторы сравнения:
= |
равно |
<> |
не равно |
> |
больше |
< |
меньше |
>= |
больше или равно |
<= |
меньше или равно |
Предыдущие конструкции позволяли обойти
или выполнить серию оператор в зависимости от справедливости условия. Это еще
не было ветвлением. Чтобы вычисления могли разветвляться по нескольким
направлениям, служит конструкция
IF...THEN...ELSE...END IF.
IF <УСЛОВИЕ> THEN
<ОПЕРАТОРЫ 1>
ELSE
<ОПЕРАТОРЫ 2>
END IF
Пример: Проверить, равно ли введенное число некоторому
значению, и в случае равенства выдать на экран сообщение о равенстве чисел.
REM сравнить число со каким-то значением
INPUT "Введите а", а
IF a=7 THEN PRINT "Числа равны"
END
Пример: Определить большее из двух чисел, вывести его на
экран, затем – увеличить его в двое и вывести результат на экран.
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
Циклы а алгоритмах и программах
Циклический алгоритм – описание
действий, которые должны повторяться указанное число раз или пока не выполнено
заданное условие. Перечень повторяющихся действий называют телом цикла.
Например, на уроке физкультуры вы должны
пробежать некоторое количество кругов вокруг стадиона.
Такие циклы называются – циклы
со счетчиком.
На языке Basic
они записываются следующим образом:
FOR Счетчик=НачЗнач
TO КонЗнач [STEP шаг]
тело цикла
NEXT [Счетчик]
Параметры указанные в квадратных скобках являются не
обязательными (их можно не записывать). По умолчанию шаг цикла равен одному,
т.е. каждый раз после прохождения тела цикла счетчик увеличивается на единицу.
Пример: Вывести на экран все числа от 1 до 100.
REM Вывод чисел от 1 до 100
FOR I=1 TO 100
PRINT I
NEXT
END
Легко сделать чтобы программа выводила
числа в обратном порядке. Для этого шаг цикла должен быть равен -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
Пример: вычислить факториал числа а
(записывается так: а!). Факториал – это произведение чисел от 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
В субботу вечером вы смотрите телевизор.
Время от времени поглядываете на часы и если время меньше полуночи, то
продолжаете смотреть телевизор, если это не так, то вы прекращаете просмотр
телепередач.
Циклы такого вида называют – циклы
с предусловием.
На языке Basic
они записываются следующим образом:
DO WHILE условие
Тело цикла
LOOP
В этом цикле проверяется условие и если
оно выполняется (ИСТИНА), то выполняется тело цикла до ключевого слова LOOP,
затем условие проверяется снова ... и так до тех пор пока
условие истино.
DO UNTIL условие
Тело цикла
LOOP
Этот цикл отличается от предыдущего
только тем, что он выполняется до тех пор пока условие
не истинно (т.е. совсем наоборот).
Пример: Вывести все натуральные числа меньше данного.
REM Вывод всех чисел меньше данного
a=0
chislo=10
DO WHILE a<chislo
PRINT a
a=a+1
LOOP
END
Вам надо поточить все карандаши в
коробке. Вы точите один карандаш и откладываете его в сторону. Затем
проверяете, остались ли карандаши в коробке. Если условие ложно, то снова
выполняется действие 'заточить карандаш'. Как только условие становится истинным,
то цикл прекращается.
Циклы такого вида называют – циклы
с постусловием.
На языке Basic
они записываются следующим образом:
DO
Тело цикла
LOOP WHILE условие
DO
Тело цикла
LOOP UNTIL условие
Циклы такого рода отличаются тем, что
хоть один раз, но тело цикла будет выполнено вне зависимости от условия.
Условие проверяется после первого выполнения тела цикла.
Пример: Вычислите сумму цифр в числе.
REM Сумма цифр числа
DIM a, chislo, s AS INTEGER
INPUT "Введите число: ", chislo
a=chislo
DO
s=s+a MOD 10
a=a/10
a=INT(a)
LOOP UNTIL a=0
PRINT "Сумма цифр числа ",chislo ," равна: ", s
END
Закрепление