Основы алгоритмизации

Автор: Пользователь скрыл имя, 23 Марта 2012 в 21:24, курс лекций

Краткое описание

Этапы решения задач на ЭВМ. Алгоритм и его свойства. Способы записи алгоритма: словесный способ; структурно-стилизованный способ; блочно-схематический способ; структурограммы Насси-Шнейдермана; программный способ.

Файлы: 1 файл

ЛЕКЦИИ ПО ИНФОРМАТИКЕ.doc

— 4.37 Мб (Скачать)

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                                     0.1

2                                     0.2

3                                     0.3

4                                     0.4

5                                     0.5

6                                     0.6

7                                     0.7

8                                     0.8

9                                     0.9

10                                1

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

Информация о работе Основы алгоритмизации