Автор: Пользователь скрыл имя, 23 Марта 2012 в 21:24, курс лекций
Этапы решения задач на ЭВМ. Алгоритм и его свойства. Способы записи алгоритма: словесный способ; структурно-стилизованный способ; блочно-схематический способ; структурограммы Насси-Шнейдермана; программный способ.
SELECT CASE YourAge
CASE 1 TO 6
PRINT ″Вы – ребенок″
CASE 7 TO 22
PRINT ″Вы – учащийся″
END SELECT
2. CASE IS относительное значение
В данном случае относительное значение состоит из операций отношения и проверяемого значения. Если значение выражения попадает в диапазон, указанный в CASE, программа выполняет соответствующий блок операторов. Например,
SELECT CASE YourAge
CASE IS>22
PRINT ″Вы – взрослый″
END SELECT
Условие, подлежащее проверке, может иметь и более сложный вид:
CASE IS<0, IS>90
3. CASE значение
В этом случае выражение и значение проверяются на равенство друг другу.
Программирование алгоритмов разветвляющейся структуры
Задача 14. 1. Вычислить значение функции , где
.
REM Программа 14.1
INPUT X, N
Y=SIN(N*X)+0.5
IF Y<>0 THEN
Z=X/Y
PRINT ″Z=″; Z
ELSE
PRINT ″Деление на ноль″
END IF
END
Задача 14. 2. Написать программу, которая анализирует человека по возрасту и относит к одной из четырех групп: дошкольник, ученик, работник, пенсионер. Возраст вводится с клавиатуры.
REM Программа 14.2
INPUT ″ VOZRAST =″; VOZRAST
SELECT CASE VOZRAST
CASE 1 TO 6
PRINT ″ Дошкольник ″
CASE 7 TO 17
PRINT ″Ученик ″
CASE 8 TO 60
PRINT ″Работник ″
CASE ELSE
PRINT ″Пенсионер ″
END SELECT
END
Тема 15. Программирование алгоритмов циклической структуры
Операторы цикла
В QB существует три вида циклов:
1. FOR…NEXT цикл с параметром
2. WHILE…WEND цикл с предусловием
3. DO…LOOP цикл с постусловием
1. Оператор FOR…NEXT имеет следующую общую форму:
FOR счетчик= начало TO конец STEP шаг
тело цикла
NEXT счетчик
где счетчик – числовая переменная;
начало – начальное значение счетчика;
конец – конечное значение счетчика;
шаг – величина, прибавляемая к значению счетчика;
тело цикла – набор операторов, предназначенных для повторения.
Пример 1.
FOR I%=1 TO 10
PRINT I%, 1/ I%
NEXT I%
Результат:
1 2 3 4 5 6 7 8 9 10 Press any key to continue |
В данном случае шаг по умолчанию равен единице.
Оператор FOR…NEXT – управляющий оператор, повторяющий блок операторов (тело цикла), указанное число раз.
Цикл FOR…NEXT выполняется только в том случае, если начало плюс шаг меньше или равно конечному значению счетчика. Если конец меньше начала, то шаг должен быть отрицательным. Цикл выполняется до тех пор, пока текущее значение счетчика не выйдет за рамки его конечного значения. При завершении текущего цикла к значению счетчика прибавляется значение шага. Если начало и конец имеют одно и то же значение, цикл выполняется один раз, вне зависимости от значения шага. Если шаг равен нулю, цикл продолжается неопределенное время.
Пример 2.
FOR X%=-10 TO 10 STEP 2
PRINT X%;
NEXT X%
Результат:
-10 -8 -6 -4 -2 0 2 4 6 8 10 Press any key to continue |
Пример 3.
FOR X%=10 TO 6 STEP -1
PRINT X%
NEXT X%
Результат:
10 9 8 7 6 Press any key to continue |
Пример 4.
FOR X%=1 TO 10000
NEXT X%
В примере 4 тело цикла пустое, но переменная счетчика изменяет значение от 1 до 10000, и на это расходуется некоторое время. Поэтому этот цикл можно использовать для организации временной задержки в программе. Продолжительность задержки зависит от мощности компьютера (чем мощнее компьютер, тем короче задержка).
Операторы цикла WHILE…WEND и DO…LOOPорганизовывают цикл, который выполняется при определенных условиях (условные циклы)
2. Оператор цикла WHILE…WEND имеет следующий формат:
WHILE…условие
тело цикла
WEND
где условие – логическое выражение;
тело цикла – последовательность операторов.
Этот цикл управляется условием, которое может иметь значение «истина» или «ложь». Пока условие имеет значение «истина», выполняются операторы, стоящие в теле цикла. Если условие имеет значение «ложь», управление передается на первый оператор, следующий за WEND.
Пример 5.
INPUT R$
WHILE <>″D″ AND R$<>″H″
PRINT R$ : INPUT R$
WEND
3. Оператор цикла DO…LOOP очень похож на оператор WHILE…WEND, но он более гибкий. Управляющее условие может быть размещено как в начале цикла, так и в конце. Таким образом оператор имеет четыре различные формы записи:
DO WHILE условие DO UNTIL условие
тело цикла тело цикла
LOOP LOOP
DO DO
тело цикла тело цикла
LOOP WHILE условие LOOP UNTIL условие
Обе формы записи начинаются с ключевого слова DO и заканчиваются ключевым словом LOOP. Каждое логическое выражение начинается со слов WHILE и UNTIL. Если используется ключевое слово WHILE, цикл будет выполняться до тех пор, пока условие будет иметь значение «истина». При записи через слово UNTIL цикл выполняется только тогда, когда условие имеет значение «ложь».
Пример 6.
DO
INPUT CH
TOTAL= TOTAL+ CH
LOOP WHILE CH<>0
REM Вводимые числа складываются до тех пор, пока не будет введен 0
Программирование алгоритмов циклической структуры
Задача 15.1. Определить средний рост студентов в группе.
REM Программа 15.1
REM Цикл с параметром
INPUT ″Введите количество студентов″, N
S=0
FOR I=1 TO N
INPUT ″Введите рост″, ROST
S=S+ROST
NEXT I
SSR=S/N
PRINT ″Средний рост студентов в группе: ″; SSR
END
REM Программа 15.2
REM Цикл с предусловием
INPUT ″Введите количество
студентов″, N
S=0
I=1
WHILE I<=N
INPUT ″Введите рост″, ROST
S=S+ROST
I=I+1
WEND
SSR=S/N
PRINT ″Средний рост студентов в
группе: ″; SSR
END
Тема 16. Массивы
Одномерные и двумерные массивы. Оператор размерности
В математике, экономике, информатике часто используются упорядоченные наборы данных, например, последовательности чисел, таблицы, списки фамилий. Для обработки наборов данных одного типа вводится понятие массива.
Массивом называется упорядоченная последовательность величин одного типа, обозначаемая одним именем.
Всю совокупность действительных чисел 1.6, 14.9, –5.0, 8.5, 0.46 можно считать массивом и обозначать одним именем, например А. каждый элемент массива обозначается именем массива с индексом. Элементы массива упорядочены по значениям индекса. В языке QB индекс заключается в круглые скобки. А(1) = 1.6, А(2) = 14.9, А(3) = –5.0, А(4) = 8.5, А(5) = 0.46.
Таким образом – индекс определяет положение элемента массива данных относительно его начала. Если в программе используется массив, то он должен быть описан. Если описание массива отсутствует, то по умолчанию максимальное значение каждого индекса равно 10 для одномерного массива и 100 – для двумерного массива.
В качестве индекса может быть выражение, частным случаем которого является константа или переменная:
А(5) В(3, 4)
A(I) B(I, J)
A(I+1 ) B(2*I, J–1).
Элементы массива могут стоять как в левой части оператора присваивания, так и в выражениях. Над элементами массива можно производить те же операции, которые допустимы для данных его базового типа.
Если необходимо работать с большими массивами, надо уведомить QB с помощью оператора размерности DIMENSION. Общая форма данного оператора:
DIM имя массива
Оператор DIM позволяет резервировать место в памяти сразу для нескольких массивов. Например:
DIM A%(15), NAME$(20)
DIM NAMBER%(100), S!(1000), DAY$(300)
Этим оператором одновременно:
а) определяется имя массива;
б) определяется тип массива;
в) резервируются ячейки памяти для массива;
г) заполняются нулевыми значениями ячейки для массива числового типа или пустыми строками текстовый массив.
Оператор DIM может находиться в любом месте программы выше первого обращения к массиву (массивам), которые он объявляет. Обычно все операторы DIM помещают в начало программы, что облегчает процесс отладки.
QB позволяет также явно задавать область изменения индексов массива. Форма описания имеет вид:
DIM имя массива (n1 TO n2) AS тип элементов
DIM A(1 TO 100) AS NTEGER
Обработка одномерных и двумерных массивов
Задача 16.1. Сформировать одномерный массив из N элементов, где элементы массива – целые случайные числа в пределах от 1 до 45. Напечатать элементы массива в прямом и обратном порядке.
REM Программа 16.1
REM Одномерный массив
DEFINT I, N
DIM A(1 TO 10000) AS INTEGER
CLS
RANDOMIZE TIMER
INPUT ″Размер N=″,N
FOR I=1 TO N
A(I)=RND*45+1
PRINT A(I); ″ ″;
NEXT
FOR I= N TO 1 STEP –1
PRINT A(I); ″ ″;
NEXT
END
Задача 16.2 Просуммировать элементы столбцов заданной матрицы размером 4×3. Результат получить в одномерном массиве размером 3.
REM Программа 16.2
REM Двумерный массив
FOR I=1 TO 4
FOR J=1 TO 3
INPUT A(I, J)
NEXT J
NEXT I
FOR J=1 TO 3
S=0
FOR I=1 TO 4