Линейные программы
Линейной называется программа, являющаяся записью линейного алгоритма. В такой программе все операторы выполняются строго последовательно, т.е. после выполнения каждого из них (кроме END) ЭВМ автоматически переходит к выполнению следующего за ним оператора.
Составление простейших программ
Простейшими будем называть линейные программы, не содержащие массивов. Составление таких программ требует знания ранее рассмотренных операторов, понимания их соответствия блокам схемы алгоритма и производится согласно такому несложному правилу:
рассматриваем блоки схемы алгоритма (считаем, что она дана) по порядку, начиная с первого, и для каждого из них записываем соответствующий ему оператор Бейсика, т.е.
для блока Начало — оператор REM с названием программы;
для блока Ввод — оператор ввода;
для блока Процесс — оператор присваивания;
для блока Вывод — оператор вывода;
для блока Останов — оператор END.
В этом все правило!
Теперь приведем примеры конкретных программ рассматриваемого вида.
Вычислить периметр прямоугольного треугольника, если заданы длины его катетов.
Переставить значения величин А и В.
Решение задач 12.2 и 12.3. Эти задачи рассматривались в главе 10, поэтому на рис. 12.2 приведены без пояснений схема алгоритма и программа задачи 10.2, а на рис. 12.3 — то же для задачи 10.3.
На рис. 12.2 и 12.3 стрелками показано соответствие операторов программы блокам схемы алгоритма.
Приведем программы решения еще двух задач. Программа задачи 12.1 иллюстрирует использование величин различного типа. Программа задачи 12.2 демонстрирует организацию вывода данных на печатающее устройство.
Рис. 12.2 Рис. 12.3
Вычислить значения У и Z по формулам:
где В и В — целые величины.
Исходные данные: Э%, В%, С, X, А(а).
Результат: Y,Z%.
Порядок выполнения операций здесь очевиден, поэтому сразу напишем программу:
- 10 REM ЗАДАЧА 1
- 20 PRINT «ВВЕСТИ D%, В%, С, X, А»
- 30 INPUT D%,В%, С, X, А 40 R$=»HBAH0B, 10А КЛ»
- 50 Z%=2*D%—3*В%
- 60 Y=(3*ABS(X)+С:(1/3)+SIN(A)/COS(А))*Z%
- 70 PRINT «Z%=»;Z%; «Y advconts adv3″>
- 20 REM ВЫВОД НА ПЕЧАТЬ 30 PRINT «ВВЕСТИ А, В»
- 40 INPUT А, В 50 У=А Л 2+В Л 2
- 60 LPRINT «ДАННЫЕ:»,» А=»;А;» В РЕЗУЛЬТАТ:»,» Y /htm/img/4/10236/324.png» width=»273″ height=»92″ decoding=»async» loading=»lazy»/> т.е. содержат три строки и четыре столбца. Составление линейных программ с массивами. Прежде всего отметим особенности работы с массивами в программе. 1. Элементы массивов получают значения с помощью операторов ввода или присваивания как простые переменные. При вводе (выводе) массивов в операторах ввода (вывода) перечисляются имена всех вводимых (выводимых) элементов массива. Пример: программа ввода и вывода массива Р (1:3) может иметь такой вид:
- 20 DIM Р(3)
- 30 INPUT Р(1), Р(2), Р (3)
- 40 PRINT Р(1), Р(2), Р(3)
- 50 END
- 2. Все массивы можно разделить на два вида:
- • массивы постоянного размера (например, Р( 1:7), В(1:4, 1:8)];
- • массивы переменного размера [например, А(1:&); С(1 :т, 1: d). В главах 8 и 9 мы использовали оба вида, не делая различий между ними.
В некоторых версиях Бейсика оператор DIM не позволяет объявлять массивы переменного размера, поэтому использование их в программе требует некоторых ухищрений. В версиях Бейсика, рассматриваемых в пособии, таких ограничений нет, допустимо использовать массивы любого вида.
Следует только помнить: переменные — размеры массивов должны быть определены до обращения к оператору DIM.
10 INPUT М 20 DIM Х(М)
Линейные программы с массивами составляются в соответствии с рассмотренным ранее правилом составления простейших программ, которое можно дополнить одним пунктом — «после оператора REM следует записать в программе оператор DIM». Кроме того, необходимо учитывать только что изложенные сведения о работе с массивами.
Теперь покажем построение рассматриваемых программ на конкретных примерах. Для начала вернемся к задаче 8.5. Схема алгоритма ее приведена на рис. 10.11. Заменив каждый блок этой схемы соответствующим оператором согласно правилу, приведенному в 12.2, и добавив оператор DIM, получим программу, приведенную ниже. После ознакомления с этой программой рекомендуем читателю самому составить программу решения задачи 10.7 и сравнить ее с приведенной ниже:
- 10 REM СУММА
- 20 DIM В(3, 3), S (2)
- 30 PRINT «ВВЕСТИ МАТР. В(3, 3)»
- 4 0 INPUT В(1, 1), В(1, 2), В(1, 3)
- 50 INPUT В (2, 1), В (2, 2), В(2, 3)
- 60 INPUT В(3, 1), В(3, 2), В(3, 3)
- 70 S(l) =В (1, 1)+В(1, 2 ) +В (1, 3)
- 80 S (2) =В (1, 3) +В (2, 3)+В(3, 3)
- 90 PRINT «S(1)=»; S (1); «S(2) ВВЕСТИ МАССИВ В (4) «
- 40 INPUT В(1), В(2),
- 50 D=B(1)
- 60 В(1)=В(2)
- 70 В(2)=В(3)
- 80 В(3)=В (4)
- 90 В(4)=D
- 100 PRINT «МАССИВ В=(«;
- 110 PRINT В(1); В(2);
- 1. Какой оператор в Бейсике указывает тип и размеры массива?
- 2. Каково обозначение элементов массива в Бейсике? Каково наименьшее значение индекса элемента массива?
Задачи для самостоятельного решения
В приведенных далее задачах составить схему алгоритма и программу. 1. Вычислить
- 2. Вычислить среднее арифметическое переменных В, Си И.
- 3. Рабочие Иванов и Петров изготовили за смену А и В деталей соответственно, перевыполнив норму. Определить процент перевыполнения нормы (норма — С деталей в смену).
- 4. Определить разницу в возрасте невест для двух братьев Пети и Димы. Их возраст а и Ь соответственно. Возраст невесты определяется по формуле
где (7 — возраст жениха.
5. Вычислить значение у:
где
Примем кф 0; г,Ф 0.
- 6. Вычислить объем и площадь поверхности цилиндра диаметром О и высотой Н.
- 7. Вычислить стоимость мебельного гарнитура, содержащего четыре стула, два кресла и один стол. Стоимость изделий соответственно А, В и С руб.
- 8. Определить среднее арифметическое элементов массива С(1:5).
- 9. Определить произведение сумм элементов каждой строки матрицы Р(1:2, 1:3).
- 10. Переставить соответствующие элементы первой и второй строк матрицы А( 1:2, 1:2).
- 11. Переставить элементы массива Я(1: 6): 1-й элемент и 6-й, 2-й и 5-й, 3-й и 4-й.
Алгоритмизация и программирование наQbasic. Линейные процессы.
Линейным называется такой вычислительный процесс, при котором все этапы решения задачи выполняются в естественном порядке следования записи этих этапов. НЕКОТОРЫЕ ЛИНЕЙНЫЕ ОПЕРАТОРЫ INPUT– оператор ввода данных с клавиатуры, имена переменных в списке разделяют запятыми. [LET] – оператор присваивания, переменная = выражение PRINT– оператор вывода данных на экран, выражения в списке разделяются либо запятой, либо точкой с запятой. END– оператор окончания программы. Задача №1 Найти и вывести результат вычисления выражения:
РЕШЕНИЕ АЛГОРИТМ ПРОГРАММА НА QBASIC
REMпрограмма решения задачи 1
INPUT a, b
y=(a^2-b)/50 PRINT“y=”;y END
Ветвящиеся процессы.
Ветвящимсяназывается такой вычислительный процесс, в котором выбор направления обработки информации зависит от исходных или промежуточных данных. АЛГОРИТМЫ ВЕТВЯЩИХСЯ процессов ПОЛНАЯ ФОРМА. СОКРАЩЕННАЯ ФОРМА
Д
А НЕТ ДА НЕТ
Оператор 1
Оператор 1
Оператор 2
НЕКОТОРЫЕ ЛИНЕЙНЫЕ ОПЕРАТОРЫ IF…THEN…ELSE– оператор ветвления, изменяет ход выполнения программы в зависимости от результата проверки условий. ( опера тор «если… то…иначе») ПОЛНАЯ ФОРМА. СОКРАЩЕННАЯ ФОРМА ЛИНЕЙНАЯ: IFусловиеTHENоператор 1ELSEоператор 2IFусловиеTHENоператор 1 БЛОЧНАЯ IFусловиеTHENIFусловиеTHEN оператор 1 оператор 1 ELSE END IF оператор 2 END IF Задача №2 Найти и вывести результат вычисления выражения:
РЕШЕНИЕ АЛГОРИТМ ПРОГРАММА НА QBASIC
REMпрограмма решения задачи 2
INPUT a, b IF a-b<>0 THEN y=(a^2+b)/(a-b) PRINT “y=”; y
ДА НЕТELSE
PRINT“Решения нет”
ENDIF
END
Циклические процессы
Циклом называется многократно повторяемый участок вычислений. АЛГОРИТМЫ ЦИКЛИЧЕСКИХ процессов ЦИКЛ С ПРЕДУСЛОВИЕМ ЦИКЛ С ПОСТУСЛОВИЕМ
Оператор тела цикла
ДА НЕТ
Оператор тела цикла
ДА
НЕТ НЕКОТОРЫЕ ЦИКЛИЧЕСКИЕ ОПЕРАТОРЫ FOR…NEXT– оператор цикла, организует в программе циклическое выполнение группы операторов заданное число раз FORпеременная = началоTOконец [STEPшаг ] Оператор тела цикла NEXT[переменная] Задача №3 Найти и вывести результат вычисления выражения:
приa(-4;8) с шагом 2. РЕШЕНИЕ АЛГОРИТМ ПРОГРАММА НА QBASIC
REMпрограмма решения задачи 3 INPUT «введите число b»; b FOR a = -4 TO 8 STEP 2 y=(a+b)^2/(1+a^2) PRINT y NEXT a END ДА НЕТ
Обработка массивов.
Массивом называется совокупность элементов с одинаковыми свойствами. Любой массив характеризуется именем, размерностью, типом элементов. Массивы могут быть одномерные, двумерные и т.д. Обработка любого массива представляет собой циклический вычислительный процесс, в котором параметры индексов являются индексы. Линейные массивы. Массив с одним индексом называется вектором или линейным массивом. оператор массива dim DIM– оператор объявляет массивы и переменные, резервирует объем памяти для записи всех элементов массива и переменных. DIMимя массива (границы) [имя массива (границы)…] Одномерный массив называется вектором, обозначается: А(i), гдеi– номер элемента. Задача №4 Найти и вывести сумму элементов массива А, состоящего из 5 элементов. РЕШЕНИЕ АЛГОРИТМ ПРОГРАММА НА QBASIC
REMпрограмма решения задачи 4
DIM A(5) I = 1 FOR I = 1 TO 5 INPUT «введите A(I)»; A(I)
NEXT I S = 0
FOR I = 1 TO 5 S = S + A(I) I = I + 1 NEXT I PRINT S ДA
END
S =0 НЕТ I = 1 S=S+A(I)
I = I + 1 Д
А
НЕТ
Линейные программы
Линейная программа — это такая программа, в которой операторы выполняются последовательно один за другим в том порядке, в каком они записаны в программе.
Операторы для разработки линейных программ
Прежде чем составлять программу на алгоритмическом языке QBasic необходимо очень хорошо представлять структуру оператора или, как принято говорить, знать формат оператора. При описании формата обычно соблюдаются следующие правила:
- — ключевые слова QBasic пишутся так, как это указано в формате;
- — после ключевого слова обязательно ставится пробел, для того чтобы отделить его от другого ключевого слова или параметра;
- — квадратные скобки в формате показывают, что то, что находится внутри них, можно не писать, например, запись: [LET] означает, что ключевое слово LET можно не набирать на клавиатуре;
- — фигурные скобки <> указывают, на какой либо выбор, например запись означает, что можно выбрать либо запятую, либо точку с запятой;
— многоточие типа: . . означает повтор
вышеприведенной конструкции оператора;
- — набранный курсивом текст показывает, что задается параметр, который должен быть определен (задан) пользователем в зависимости от решаемой задачи. Иногда параметр состоит из нескольких слов, которые специально соединены знаком подчеркивания. Соединение нескольких слов означает, что отдельные слова, поясняющие смысл параметра, образуют один параметр или объект, например, список_ переменных.
- -форматы, операторов, которые будут описаны ниже, приведены в упрощенном виде, что сделано исключительно в учебных целях. Полное описание формата в системе QBasic легко получит, если воспользоваться помощью ( кл. F1).
Оператор LET
Формат оператора:
[LET] переменная = выражение переменная-любая числовая простая переменная или переменная массива, которой присваивается значение выражения; выражение — любое числовое выражение, значение которого будет присвоено переменной. Под выражением мы будем понимать совокупность, функций, переменных, констант, соединенных знаками арифметических действий.
Назначение оператора: вычисление выражения и присвоение переменной значения выражения.
Работа оператора: яри выполнении оператора LET компьютер сначала выполняет правую часть оператора, т.е. вычисляет выражение. Полученное число присваивается переменной. Физически это означает, что число записывается в одну из ячеек памяти компьютера. Такая ячейка имеет имя переменная. Не следует забывать, что число в ячейке хранится в двоичном коде.
Рассмотрим ряд примеров записи оператора:
-переменной х присваивается значение 8;
-сначала вычисляется выражение, т.е. число 8 складывается с числом 12, получается число 20. Затем полученный результат выражения записывается в ячейку с именем хх (в двоичном коде).
Особенности записи оператора LET: как видно из описания формата ключевое слово LET можно не писать, например,
Такая запись предпочтительней, т.к. на набор оператора затрачивается меньше времени.
При подготовке материала использовались источники:
https://bstudy.net/612134/informatika/lineynye_programmy
https://studfile.net/preview/5716622/page:8/
https://ozlib.com/987359/tehnika/lineynye_programmy