Построение блок схем алгоритмов. Алгоритмические языки высокого уровняРефераты >> Программирование и компьютеры >> Построение блок схем алгоритмов. Алгоритмические языки высокого уровня
6. Блок №10 (модификация) – проверка условия |R|>E. Если условие выполняется, то осуществляется переход к блоку №11 (инициализация переменных Z, n, R). Иначе осуществляется переход к блоку №12 (вывод результата Z).
7. Блок №13 – конец программы.
Описание задания № 2.
В задании требуется организовать цикл вычисления Y в заданном интервале X при равномерном изменении его на заданный шаг ∆x. Произвести проверку X для вычисления по выражению в заданном диапазоне значений переменной X, что и реализовано с помощью блок схемы алгоритма.
Описание блок-схемы алгоритма задания № 2.
Блок-схема начинается с блока №1 <Начало>.
1. Блок №2 присвоение начальных значений переменным, используемых в задании;
2. Блок №3 (модификация) – организация цикла с начальным и конечным значениями Х=2, Х=5 соответственно. Если условие выполняется, то осуществляется переход к блоку №4. Иначе – к блоку №9 (конец программы).
3. Блок №4<ветвления> - начало проверки вхождения переменной X в заданные интервалы, проверят X≤3,5. Если да – в блок № 6 (инициализация переменной Y значением cos2x), если нет - переход к блоку № 5 (инициализация переменной Y значением sin x*Ln x). Осуществляется переход к блоку №7.
4. Блок №7 – вывод значения Y.
5. Блок №8 – добавляет шаг к X :Х=Х+. Осуществляется переход к блоку №3, где определяется, лежит ли X в заданном диапазоне или нет. Если да, то повторить вычисления с блока №4. Если X вышел за заданный интервал, закончить вычисления (переход к блоку №9).
Описание задания № 3.
В задании требуется организовать массив G(A,B) для данных и организовать обработку его элементов согласно заданию. В результате такой обработки необходимо вывести на экран сумму положительных или отрицательных элементов в зависимости от введённых элементов массива.
Описание блок-схемы алгоритма задания № 3.
Блок-схема начинается с блока №1 <Начало>.
1. Блок №2: инициализация нулевыми значениями переменных L1 и L2, количество положительных и отрицательных элементов соответственно и SUM1, SUM2 – сумма положительных и отрицательных элементов, соответственно.
2. Блок №3: Ввод переменных А и В, определяющих размерность массива G(A,B).
3. Блок №4(модификация): осуществляется проверка условия 1<i<A. Если условие выполняется, то осуществляется переход к блоку №5. Иначе – переход к блоку №7.
4. Блок №5(модификация): осуществляется проверка условия 1<j<В. Если условие выполняется, то осуществляется переход к блоку №6, где происходит ввод элемента G[i , j]. Иначе – то осуществляется переход к блоку №4 с увеличенным значением переменной – счётчика кол-ва строк на единицу.
5. Блок №7(модификация): осуществляется проверка условия 1<i<A. Если условие выполняется, то осуществляется переход к блоку №8. Иначе – переход к блоку №15(конец программы).
6. Блок №8(модификация): осуществляется проверка условия 1<j<В. Если условие выполняется, то осуществляется переход к блоку №9.
7. Блок №9: проверяется выполнение условия положительности элемента G[i , j]. Если условие выполняется, то осуществляется переход к блоку №11. Иначе – переход к блоку №10.
8. Блок №10: увеличение значения переменной L2 на единицу; добавление к переменной SUM2 значения элемента G[i , j]. Переход к блоку №12.
9. Блок №11: увеличение значения переменной L1 на единицу; добавление к переменной SUM1 значения элемента G[i , j]. Переход к блоку №12.
10. Блок №12: сравнение значений переменных L1 и L2. Если L1 > L2, то осуществляется переход к блоку №14. Иначе осуществляется переход к блоку №13.
11. Блок №13: осуществляется вывод значения переменной SUM1. Переход к блоку №15.
12. Блок №14: осуществляется вывод значения переменной SUM2. Переход к блоку №15.
Алгоритмические языки высокого уровня.
Программа – это набор машинных команд, которые следует выполнить компьютеру для реализации того или иного алгоритма. Иными словами, программа – это форма представления алгоритма для исполнения его машиной. «Грамматические» правила языка программирования формулируются предельно четко и не допускают вольного расположения отдельных элементов команды и знаков препинания (иначе программа – посредник «не поймет» наши указания). Каждая команда имеет строго определенный синтаксис (правила записи). Команды на языке программирования часто называют операторами или инструкциями. Последовательность таких команд, реализуют тот или иной алгоритм, называют программой на исходном языке или просто исходным текстом (листингом программы).
Существуют два типа программ – посредников, работающих с исходными текстами:
a) Программа – компилятор (от слова compile – составлять, собирать) переводит исходный текст в машинный код и записывает его на диск в форме исполняемого (загрузочного) файла. После этого программа выполняется не зависимо от исходного текста. Раньше программы–компиляторы назывались просто и точно трансляторами (переводчиками).
b) Программа – интерпретатор всегда работает совместно с исходным текстом. Она разбирает каждую инструкцию исходного текста (интерпретирует ее) и немедленно исполняет (т.е. файл на машинного кода не создается). Программа в режиме интерпретации работает гораздо медленнее, чем такая же программа в машинном коде. Это связано с тем, что каждую инструкцию приходится разбирать во время выполнения (а не заранее, как при компиляции). Многие инструкции в программе выполняются многократно, – и при каждом выполнении интерпретируются заново. Поэтому, всюду, где возможно стремятся заменить режим интерпретации режимом компиляции.
Для рассматриваемых нами языков высокого уровня, ведущими фирмами, были написаны программы трансляторы, которые работают по компилирующему принципу. Для более глубокого понимания базовых конструкций языков, кратко рассмотрим упрощенную модель компилятора, показанную на рис. 1.
Рис. 1. Упрощенная модель компилятора.
1. ЛЕКСИЧЕСКИЙ АНАЛИЗАТОР.
Исходная программа на языке высокого уровня (ЯВУ), представляет собой цепочку символов, образуемую последовательным сцеплением всех строк программы. Среди допустимых для языка символов всегда выделяют несколько, так называемых, символов-разделителей, благодаря которым предложения исходной программы разбиваются на отдельные слова. Такие слова в теории компиляции называются лексемами. Например, предложение (оператор)
for i:=1 to n do Writeln(i) ;
будет разбито на лексемы
for, i, :=, 1, to, n, do, Writeln, (, i, ), ;.
Здесь в качестве разделителя используется символ «пробел». Однако можно заметить, что между некоторыми лексемами пробел не стоит. Это связано с тем, что эти лексемы сами являются разделителями и поэтому для отделения их от других лексем специальные символы-разделители использовать не обязательно, хотя и допустимо. Например, то же самое предложение без изменения смысла можно было бы записать так