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

6.1.2. Способы записи алгоритма

Наиболее распространенные формы записи алгоритмы:

словесная (запись на естественном языке);

графическая (в виде разнообразных схем, рисунков и т.п.);

запись на псевдокоде (сочетает элементы языка программирования, фразы естественного языка, математические обозначения и др.);

программная (тексты на языке программирования).

6.1.3. Схемы алгоритмов и программ

Наиболее наглядным способом представления алгоритмов является графическая форма записи алгоритмов в виде схем алгоритмов и программ. Схема состоит из блоков, обозначающих действия, соединенных стрелками, определяющими порядок выполнения действий (операций).

Разные виды операций описываются в блоках разной формы, называемых блочными символами. Основными из них являются символ "процесс" в форме прямоугольника, предназначенный для описания операций ввода, преобразования и вывода данных, и символ "решение" (ромб) - для разветвления алгоритма, т. е. выбора одного из вариантов его выполнения. Символ "пуск-останов" (овал) обозначает начало, конец и прерывание выполнения алгоритма. Символ "модификация" определяет начало цикла. Символ "Предопределенный процесс" означает вычисления по подпрограмме, стандартной подпрограмме. Для операций ввода–вывода можно использовать и специальные символы. Правила оформления схем и программ регламентируются государственным стандартом ГОСТ 19.701-90.

Выполнение алгоритма начинается с блока "начало" (овал, из которого выходит стрелка). Он должен быть единственным в схеме. Блоки в схеме соединяются линиями переходов (стрелками), определяющими очередность выполнения действий. При встрече каждого блока выполняется описанное внутри него действие. Если на линиях перехода не указана стрелка, то переход осуществляется сверху вниз и слева направо.

Из всех блоков, кроме ромба, выходит одна стрелка, указывающая следующий выполняемый блок. Из ромба выходят минимум две стрелки, указывающие следующее действие в зависимости от значения условия, записанного внутри ромба.

Выполнение алгоритма прекращается при достижении одного из блоков "конец" (овал, к которому подходит стрелка).

Некоторые блочные символы представлены на рис 6.1.

Рис.6.1. Основные блочные символы (виды блоков) схем алгоритмов

Схемы наглядны, но неудобны для изображения и ввода в ЭВМ. Они обычно используются для укрупненного представления алгоритма.

6.2. Переменная и постоянная величина Выражения

Информация в алгоритмах представляется в виде величин. Величина в алгоритме или программе имеет обозначение и обладает значением.

Величины могут быть постоянные (константы) и переменные. Константа не изменяет своего значения в процессе выполнения алгоритма и обычно записывается в алгоритме в виде обозначения, показывающего ее значение.

Примеры констант:

- целочисленные константы: 48 -123 ,

- вещественные константы, т. е. целые и нецелые числа:

15.2 -25.0 (дробная часть отделяется точкой), 45.1E-4 (45.1, умноженное на 10 в степени -4),

- символьные константы (одиночные символы): 'A' '2' '-' '!' ,

- строковые константы (литерные константы, текст): "КГТУ", "Привет", "" (пустая строка).

- логические константы: TRUE (да, истина), FALSE (нет, ложь).

Переменная величина обозначается в алгоритме именем и в процессе выполнения алгоритма может принимать различные значения. Имя переменной представляет собой идентификатор переменной, может состоять из латинских букв и цифр, должно начинаться с буквы, например: Z, X1, Sum.

Каждая константа и переменная относится к определенному типу данных. Тип данных определяет множество допустимых значений и набор допустимых операций, а также способ представления значений в памяти ЭВМ и выполнения операций над ними. Поэтому в программе необходимо определить тип каждой использованной в ней величины. Обычно используются целые, вещественные, логические, символьные (одиночные символы) и литерные (строковые) величины.

В каждом языке программирования свой набор допустимых типов данных и способов описания типов данных.

Например, в языке Pascal целочисленный тип данных обозначается служебным словом integer, вещественный (действительный) – real, логическийboolean, символьный - char, строковый (литерный)- string.

Пример определения переменных на языке Pascal:

Var

x,y :Real;

t, kol : Integer;

Переменные x и y являются вещественными, t, kol – целочисленными.

В языке Basic типы данных можно определить несколькими способами: по умолчанию, использовать команду описания типов DEF или команду объявления переменных DIM. Если в программе явно не указан тип переменной, то по принципу умолчания, такие переменные рассматриваются как короткие вещественные числа. Но если к имени переменной добавлен символ $, то это литерная (текстовая) переменная, например А$.

В языке Basic целочисленный тип данных обозначается служебным словом INTEGER (короткое целое) или LONG (длинное целое), вещественный (действительный) – SINGLE (короткие числа) или DOUBLE (длинные числа), текстовый (литерный, строковый) - STRING.

Пример определения переменных на языке Basic:

DEFINT A – C, K

DEFSNG Z, W

DEFSTR S

или

DIM A, B, C AS INTEGER, Z, W AS SINGLE

DIM S AS STRING*10

Переменные A, B, C, K являются переменными целого типа, Z, Wдействительного короткого типа, а S – текстовая переменная (длиной до 10 символов в описании DIM S AS STRING*10). Перечисление переменных A, B, C можно записать как A – C.

Выражения пpедназначены для выполнения необходимых вычислений и состоят из констант, пеpеменных, указателей функций (напpимеp, sin(x)), объединенных знаками опеpаций.

Некоторые типы операций:

аpифметические опеpации + , — , * , / ;

опеpации отношения < , > , <= , >= , = (равно) , <> (не равно) ;

логические опеpации and (и) , or (или) , not (не);

опеpация сцепки (иначе, "присоединения", "конкатенации") символьных значений дpуг с другом с образованием одной длинной строки; изображается знаком "+".

Над величинами целого типа в языке Pascal допустимы еще две операции деления: div – деление нацело и mod – остаток от деления.

Например, 15 div 4 = 3, 25 mod 4 = 1.

Результатом операции целочисленного деления является целая величина. Обычное деление (операция /) над целыми величинами дает частное вещественного типа.

В языке Basic операция деление нацело обозначается символом \ , а остаток от деления – mod. Над числами можно выполнить еще операцию возведения в степень: обозначается символом ^ или **.

Различают выражения арифметические, логические и строковые.

Арифметические выражения служат для определения одного числового значения.

Например, (1+x)/2. Значение этого выражения при x=0 равно 0.5, а при x=1 — единице.

Логические выражения описывают некоторые условия, которые могут удовлетворяться или не удовлетворяться. Логическое выражение может принимать два значения — TRUE или FALSE ("истина" или "ложь").

Например, логическое выражение x * y > 0 , может служить условием для определения одинаковые ли знаки у величин x и y. При x= -1, y= -2, значение этого выражения — "истина", а при x= -1, y=2, — "ложь".

В логических выражениях обычно используются операции отношений (операции сравнения), а для сложных условий еще и логические операции and, or, not.

Примеры сложных условий:

(A > 0) and (A <=10)

(X=0) or (X MOD 2 = 1)

Таблица значений логических операций над величинами типа boolean:

FALSE and FALSE = FALSE

FALSE or FALSE = FALSE

FALSE and TRUE = FALSE

FALSE or TRUE = TRUE

TRUE and FALSE = FALSE

TRUE or FALSE = TRUE

TRUE and TRUE = TRUE

TRUE or TRUE = TRUE

not FALSE = TRUE

not TRUE = FALSE

Значениями строковых (литерных) выражений являются текcты. В строковые выражения могут входить литерные и строковые константы, литерные и строковые переменные, литерные функции, объединенные знаками + (это операция сцепки или конкатенации).

Например, А + В означает присоединение строки В к концу строки А. Если А = "День ", а В = "теплый", то значение выражения А + В есть "День теплый".

В выражения, наряду с константами и переменными, можно включать функции. В каждом языке имеются стандартные функции не требующие определения в программе. Некоторые стандартные функции алгоритмического языка, языка Pascal и Basic представлены в табл. 6.1.

В качестве аргументов функций можно использовать константы, переменные и выражения.

Например, sin(1.5), cos(y), sin(x*x+ 2*y), abs(5+х ),

Выражения подобны обычным алгебраическим выражениям, но, в отличие от них, не допускают многоэтажной записи дробей, индексов и степеней. Поэтому дробная черта заменяется знаком деления '/', индексы пишутся в скобках после имени переменной. Знаком умножения служит звездочка '*'. Нельзя опускать знак умножения между сомножителями и ставить рядом два знака операций. Операции выполняются в порядке старшинства: сначала вычисление функций, затем возведение в степень, потом умножение и деление и в последнюю очередь — сложение и вычитание. При вычислении логического выражения самый высокий приоритет у операций сравнения, затем следует операция not, операция and имеет приоритет операции умножения, а or - сложения. Можно изменить порядок выполнения операций, используя скобки.

Табл.6.1. Некоторые стандартные функции

Название и математическое обозначение функции

Указатель функции в алгоритм.

языке

Указатель функции в языке Pascal

Указатель функции в языке Basic

Абсолютная величина - | х |

abs(x)

abs(x)

abs(x)

Корень квадратный -

sqrt(x)

sqrt(x)

sqr(x)

Возведение в квадрат x2

sqr(x)

Натуральный логарифм - ln x

ln(x)

ln(x)

log(x)

Экспонента ex (е ~ 2.72)

exp(x)

exp(x)

exp(x)

Целая часть числа х (т.е. максимальное целое число, не превосходящее х)

int(x)

trunc(x)

int(x)

Частное от деления целого х на целое y

div(x,y)

Операция x div y

Операция x \ y

Остаток от деления целого х на целое y

mod(x,y)

Операция x mod y

Операция x mod y

Синус (угол в радианах) – sin x

sin(x)

sin(x)

sin(x)

Косинус (угол в радианах) – cos x

cos(x)

cos(x)

cos(x)

Тангенс (угол в радианах) – tg x

tg(x)

tg(x)

tan(x)

Упражнения:

1. Запишите по правилам алгоритмического языка выражения:

а

x y

z

x

y z

-b + b 2 – 4 a c

2 a

) б) в)

г

x - y x + z

x + 1 xz

sin2 x

5,2 x – e 2x

) д)

Решение:

Запись по правилам алгоритмического языка:

а) x * y / z б) x / ( y * z )

в) ( -b + sqrt(b*b - 4*a*c)) / ( 2*a )

2. Вычислите значения арифметического выражения при x=10:

а) div(12,x - 5)*mod(10,x-3) + min(100,x)

Решение:

div(12,x - 5)*mod(10,x-3) + min(100,x) = 2 * 3 + 10 = 16

б) abs(x - 17)*mod(100,x+1)/max(1,x)*mod(2,3)

3. Вычислите значения логического выражения:

а) x*x+y*y<=10, при x=2, y=-1

Решение: да (истина);

б) b*b-4*a*c <0, при a = 1, b = 2, c = -3;

в) (a >= 10) and (a <= 25), при a=10.5;

Решение: да (истина, т.к. истинны оба выражения)

(a >= 10) and (a <= 25), при a=30.5;

Решение: нет (ложь, т.к. первое подвыражение истинно, но второе ложно, значит все выражение в целом ложно)

г) (a<5) or (a>10), при a=10.5;

д) (mod(a,7)=2) and (div(a,7)=2), при a=16;

3. Запишите логические выражения, истинные при выполнении указанных условий:

а) величина x положительная;

Решение: x > 0

б) целая величина x положительная и четная;

Решение: (x >0) and ( mod (x, 2) = 0)

в) целая величина а трехзначная и кратна 3;

Решение: (a >99) and (a < 1000) and( mod( a,3) = 0)

г) точка x принадлежит отрезку [a, b];

Решение: (x >= a) and (x <= b)

д) среди целых чисел x, y, z есть хотя бы одно четное;

е) из двух чисел x и y, большим является первое число;

ж) каждое из трех целых чисел x, y, z кратно пяти;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]