Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций по информатике.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
849.92 Кб
Скачать

Лекция 22. Основные алгоритмические конструкции. Базовые алгоритмы

Базовые алгоритмические конструкции - это способы управления обработкой информации. На сегодняшний день существует всего 3 базовых конструкции:

  • Алгоритм линейной структуры – алгоритм, символы которого изображены на схеме в той последовательности, в которой должны быть выполнены предписываемые ими действия.

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

  • Алгоритм циклической структуры – алгоритм, в котором предусмотрено неоднократное выполнение одной и той же последовательности действий. Для орга6изации цикла необходимо предусмотреть задание начального значения параметра цикла – переменной, которая будет изменяться при повторениях цикла; изменение значения этой переменной перед каждым новым повторение цикла; проверку условия окончания повторений по значению параметра и переход к началу цикла, если повторения не закончены.

Лекция 23. Программы линейной структуры

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

Рассмотрим для примера программу вычисления площади треугольника по 3 сторонам.

, где

Составим алгоритм и запишем его в виде блок-схемы:

Программа на Бейсик может иметь вид:

REM Вычисление площади треугольника по 3 сторонам

CLS

INPUT "Введите сторону а: ", a

INPUT "Введите сторону b: ", b

INPUT "Введите сторону c: ", c

p=(a+b+c)/2

s=SQR(p(p-a)(p-b)(p-c))

PRINT " Площадь треугольника равна: ", s

END

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

Примеры программ линейной структуры.

Пpимеp 1. Найти остаток от деления двух целых чисел A и B. REM Найти остаток от деления INPUT"Ввести два числа A,B";A,B PRINT" A=";A," B=";B Y=A/B:Z=INT(Y) C=Y-Z PRINT"Результаты счета" PRINT" A/B=";Y,"целая часть=";Z PRINT" остаток от деления=";C END

Пример 2. Дан периметр квадрата. Найти его площадь. REM Площадь квадрата INPUT "Введите периметр ";P A=P/4 S=A^2 PRINT "Площадь квадрата равна";S END

Лекция24. Операторы ветвления, операторы цикла

Оператор ветвления if {} else {} нужен для исполнения тех или иных действий в зависимости от истинности либо ложности некоторого условия. Условие считается ложным, если оно равняется нулю, а если условие не равно нулю, то оно считается истинным. Еще нужно помнить, что бы условие, которое проверяется, всегда было скалярным, то есть что бы его можно было проверить на равность нулю. Рассмотрим пример. В скобках {} выполняется блок программы, в зависимости от условия.

int a=1;

if (a=1) //условие истинно

{

// если истинно, выполняем этот блок программы

}

else //условие ложно

{

// если ложно, выполняем этот блок программы

}

Оператор while используется при реализации циклических алгоритмов, для выполнения некоторых фрагментов кода энное число раз, пока выполняется условие. Цикл заканчивается в таких случаях:

  • условие оператора принимает нулевое значение, то есть, условие становится ложным;

  • в теле цикла появляется оператор break, который обрывает текущий цикл;

  • в теле цикла был выполнен оператор return.

В первых двух случаях управление передается оператору, который находится сразу после цикла, а в третьем случае активная в тот момент функция завершает свою работу и возвращает какое-то значение. Пример.

int a = 1;

while (a<10) // цикл будет выполняться, пока переменная а меньше 10

{

a+1; // увеличиваем на единицу

}

int b = 2;

while (b>10) // а в этом случае цикл не выполнится ни разу, так как b меньше 10

{

b--;

}

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

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

int a=1;

do

{

a+1;

} while (a<10); //будет выполняться, пока а<10

А тут хоть условие и не выполняется (ложно), но все равно цикл выполнится один раз

int a=1;

do

{

a+1; // а = 2

} while (a<1); //а>1, условие не выполняется, но цикл выполнился один раз

Оператор for используют, когда нужно повторить определенное количество раз определенный кусок кода программы. Этот оператор принимает в качестве параметров три числа, разделенные точкой с запятой. Первое инициализирует счетчик, второе устанавливает верхнюю границу повторений, а третье просто увеличивается на заданное число. Это так сказать определение своими словами. Рассмотрим на примере работу оператора for. Здесь переменная i принимает в качестве инициализатора счетчика цикла for число 0 - это значит, что счетчик будет считаться с нуля. Потом идет инициализация верхней границы счетчика - i<10, что значит цикл будет повторяться до тех пор, пока i будет меньше десяти. И наконец третий параметр i+1 - значит, что счетчик будет увеличиваться за каждое повторение цикла на единицу.

for(int i=0; i<10; i+1)

{

// блок кода

}

В этом конкретном примере блок кода внутри оператора for повториться 10 раз.