Цель работы – ознакомление с особенностями программирования алгоритмов разветвленной структуры, а также использования различных операторов перехода.
2.1 Алгоритмы разветвленной структуры. Операторы перехода и выбора
Ветвящимся (разветвленным) называется алгоритм, в котором в зависимости от исходных данных или промежуточных результатов вычисления реализуется по одному из нескольких заранее предусмотренных (возможных) направлений, называемых ветвями вычислений.
Оператор условного перехода реализует разветвление алгоритма и применяется, когда в зависимости от условия необходимо выполнить либо одно, либо другое действие. В качестве условий используются логические отношения. Логические отношения представляют собой записи равенств и неравенств: , =, =,<> (не равно), AND (логическое «и»), OR (логическое «или»). В Паскале оператор условного перехода имеет две конструкции (таблица D1).
В Паскале принят порядок выполнения операторов согласно их следованию в программе. Если необходимо обойти какую-то группу операторов, то используется оператор безусловного перехода, который в блок-схеме отображается в виде стрелки, а не отдельного блока (таблица D1). Метка, используемая в операторе, показывает, что дальнейшая работа должна проводиться в другой части программы, с той строки, на которую она указывает и должна быть предварительно описана в разделе Label(например, Goto NM;). Этот оператор используется только в исключительных ситуациях, поскольку такие переходы разрушают связи между структурой программы и структурой вычислений, что приводит к потере ясности программы и затрудняет задачу верификации (доказательства правильности составления программы).
Базовые алгоритмические структуры
Кроме оператора безусловного перехода, в Турбо Паскале 7.0 иногда используются четыре безусловные функции:
— Break – позволяет досрочно закончить цикл;
— Continue – позволяет начать новую итерацию цикла, не дожидаясь окончания предыдущей итерации;
— Exit – позволяет завершить работу текущего программного блока (программу, процедуру);
— Halt(n) – позволяет завершить работу программы с кодом завершения n.
К операторам разветвляющейся структуры относится также оператор выбора (варианта), позволяющий программировать сложные ветвления, когда имеется несколько (обычно равновероятных) вариантов действия (таблица D1).
2.2 Примеры решений задач разветвленной структуры
2.2.1 Вычислить |
Program primer2_1; Label m1; Var i, n:integer; x, y:real; Begin Write(‘Введи N’); Read(n); i:=1; m1: Write(‘Введи x’); Read(x); If x=0)and(x <=1) then y:=0 else y:=sin (x); write (‘Y=’,y:10:3); i:=i+1; if i<=n then goto m1 end. |
Рисунок 2.1 — Блок-схема алгоритма и программа разветвленной структуры
2.2.2 В старояпонском календаре принят 60-летний цикл, состоящий из пяти 12-летних малых циклов. Малые циклы обозначаются названиями цвета. Внутри каждого малого цикла годы носят названия животных. Определить название заданного года нашей эры по японскому календарю. Так как в данном случае блок-схема получается достаточно громоздкой, ниже приведена только программа решения задачи.
Var year, i, k : integer;
Write (‘Введите год’); Read (year); Write (‘- the year of the ‘);
i := (year-3) mod 12; k := (3010 – year) mod 60 div 12;
Источник: arhivinfo.ru
Алгоритмы разветвленной структуры
Блок-схемой называется наглядное графическое изображение алгоритма, когда отдельные его этапы изображаются при помощи различных геометрических фигур — блоков, а связи между этапами (последовательность выполнения этапов) указываются при помощи стрелок, соединяющих эти фигуры. Блоки сопровождаются надписями. Типичные действия алгоритма изображаются следующими геометрическими фигурами:
Блок начала-конца алгоритма (рис. 1.1). Надпись на блоке: «начало» («конец»).
Блок ввода-вывода данных (рис. 1.2). Надпись на блоке: слово «ввод» («вывод» или «печать») и список вводимых (выводимых) переменных.
![]() |
|
Рис. 1.1. Блок начала-конца алгоритма | Рис. 1.2. Блок ввода-вывода данных |
Блок решения или арифметический (рис. 1.3). Надпись на блоке: операция или группа операций.
Условный блок (рис. 1.4). Надпись на блоке: условие. В результате проверки условия осуществляется выбор одного из возможных путей (ветвей) вычислительного процесса. Если условие выполняется, то следующим выполняется этап по ветви «+», если условие не выполняется, то выполняется этап по ветви «–».
Линейный алгоритм — это такой, в котором все операции выполняются последовательно одна за другой (рис. 1.5).
Рис. 1.5 Размещение блоков в линейном алгоритме |
Рассмотрим несколько примеров линейных алгоритмов .
ПРИМЕР 1.1. Зная длины трех сторон треугольника, вычислить площадь и периметр треугольника.
Пусть a, b, c — длины сторон треугольника. Необходимо найти S — площадь треугольника, P — периметр.
Для нахождения площади можно воспользоваться формулой Герона:
, где r — полупериметр
Входные данные: a, b, c.
Выходные данные: S, P.
Блок-схема алгоритма представлена на рис. 1.6.
Рис. 1.6. Алгоритм примера 1.1 |
Рассмотрим несколько примеров построения алгоритмов разветвленной структуры.
Пример. Есть детский сад, в котором много детей. Тренер из балетной школы хочет набрать детей в балетную школу. Подойдут только дети не старше трех лет.
Пример. Исследование медицинских данных детей от 7 до 10 лет. (самотоятельно)
Пример. Вычислить y=(a+b)/c, c=a-b
Пример. Вычислить y=(2x+3)/(z-1), z=4-x. (самостоятельно)
ПРИМЕР 1.2. Известны коэффициенты a, b, и с квадратного уравнения. Вычислить корни квадратного уравнения.
Входные данные: a, b, c.
Выходные данные: x1, x2.
d – дискрименант, вычисляется пл формуле.
Все известные в школе формулы и все вычислительные процедуры высшей математики (интегралы, sin и т.д.), запрограммировано в компьютере.
Рис. 1.9. Алгоритм решения квадратного уравнения |
ПРИМЕР 1.3. Найти наибольшее из трех чисел.
Входные данные: a, b, c.
Выходные данные: m.
Рис. 1.10. Алгоритм примера 1.3 |
Пояснения к блок-схеме: вводится дополнительная переменная m, в которой хранится текущее значение наибольшего (максимального) числа. Далее каждое следующее число сравнивается с переменной m и если значение сравниваемого числа оказывается больше, то оно запоминается в переменную m.
ПРИМЕР 1.4. Модель платья окрашена в три базовых цвета: красный, синий, зеленый. Подсчитать частоту встречаемости каждого цвета в модели.
Каждый цвет закодирован: красный – 1, синий – 2, зеленый – 3.
Входные данные: cvet
Выходные данные kol_red, kol_blue, kol_green
Рис. 1.11. Алгоритм примера 1.4.
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:
Источник: studopedia.ru
Алгоритмы разветвленной структуры
Алгоритмы разветвленной структуры применяются, когда в зависимости от некоторого условия необходимо выполнить либо одно, либо другое действие. В блок-схемах разветвленные алгоритмы изображаются так, как показано на рис. 1.10 — 1.11.
Рис. 1.10 Фрагмент алгоритма | Ри |
Циклический алгоритм – это алгоритм, предусматривающий многократное повторение одного и того же действия над новыми данными.
Цикл называется арифметическим, если число повторений цикла известно заранее или может быть вычислено.
Цикл для которого нельзя указать число повторений, и проверка окончания которого происходит по достижению нужного условия, называется
итерационным. Блок-схемы базовой структуры
Начальная стадия разработки — Период времени со старта разработки до выхода стадии Альфа (или до любой другой, если стадии Альфа нет). Также так называются программы, не вышедшие еще в стадию альфа или бета, но прошедшие стадию разработки, для первичной оценки функциональных возможностей в действии.
Альфа.Внутреннее тестирование — Стадия начала тестирования программы в целом специалистами-тестерами, обычно не разработчиками программного продукта, но, как правило, внутри организации или сообществе разрабатывающих продукт.
Публичное тестирование — Стадия активного бета-тестирования и отладки программы, прошедшей альфа-тестирование (если таковое было
Релиз-кандидат или RC (Пре-релиз или Pre — стадия-кандидат на то, чтобы стать стабильной. Программы этой стадии прошли комплексное тестирование, благодаря чему были исправлены все найденные критические ошибки.
Релиз, который готов получить звание релиз-кандидата. В этом релизе могут быть ещё ошибки.
Основная статья: Релиз (программное обеспечение)
Релиз или RTM (англ. release to manufacturing промышленное издание) — издание продукта, готового к тиражированию. Это стабильная версия программы, прошедшая все предыдущие стадии, в которых исправлены основные ошибки.
Компилятор-это транслятор текста на машинный язык, который считывает исходный текст. Он оценивает его в соответствии с синтаксической конструкцией языка и переводит на машинный язык.
Интерпрета?ция — пооператорный (покомандный, построчный) анализ, обработка и тут же выполнение исходной программы или запроса
Главным квалификационным признаком языков и, следовательно, систем программирования является принадлежность к одному из оформившихся к настоящему времени стилейпрограммирования, каждому из которых соответствует своя собственная модель вычислений.
Языки программирования | |||
Процедурные | Функциональные | Логические | Объектно-ориентированные |
Ведущими разработчиками систем программирования в настоящее время являются фирмы Microsoft и Borland International.
Рассмотрим некоторые языки программирования в порядке увеличения их уровня.
Двоичный язык- в настоящее время программистами не применяется
Шестнадцатеричный язык-упрощение за счет представления четырех двоичных цифр одной шестнадцатеричной. Язык Ассемблера — предназначен для представления в удобочитаемой символической форме программ, написанных на машинном языке.
Язык Макроассемблера — расширение языка Ассемблера
Язык Basic . Разработан в 1964 г. для использования новичками.
Язык Fortranразработан в 1956 г.Приспособлен к ведению сложных
Язык Pascal разработан в 1970 г. В Паскале полностью реализована концепция структурного программированияне только путем упорядочения связей между фрагментами программы, но и за счет структуризации
Алфавит и словарь языка программирования Паскаль. Программа формируется из предложений, состоящих из лексем и разделителей, которые в свою очередь формируются из конечного набора литер, образующих алфавит языка Pascal. Этот язык состоит из букв латинского алфавита (прописных – А, В, С, D … X, Y, Z, строчных – а, b, с … x, у, z), арабских цифр (0, 1, 2, 3,4, 5, 6, 7,8,9) и специальных символов.
Использование строчных букв эквивалентно построению соответствующих конструкций из прописных букв и применяется для стилистического оформления программы. Иными словами, регистр при написании программ роли не играет.
Правила составления идентификаторов.
- Идентификатор начинается с буквы, или знака подчеркивания.
- Содержит только буквы, цифры или знак подчеркивания.
- Между двумя идентификаторами должен стоять разделитель.
- Максимальная длина 127 символов. Все символы значимы.
- Идентификатор не может повторять зарезервированное слово.
- Если идентификатор пользователя повторяет стандартный, то действие стандартного идентификатора – отменяется.
Примеры пользовательских идентификаторов: x, s, s23, asd_sd45.
Константы указываются в специальном разделе, который называетсяConst.
В качестве констант в языке программирования Pascal могут использоваться:
- Целые числа. Они записываются со знаком или без знака и могут иметь значение от – 2 147 483 648 до + 2 147 483 647.
- Вещественные числа записываются со знаком или без знака с использованием десятичной точки или экспоненциальной части, которая начинается с символа «e», за которым следует десятичный порядок.
- Шестнадцатеричные числа, которые состоят из шестнадцатеричных цифр со знаком доллара «$» впереди.
- Типизированные константы
- при описании типизированных констант явно указывается их тип;
- типизированные константы могут менять свое значение по ходу выполнения программы также как обычные переменные;
- типизированные константы описываются в разделе CONST и также, как простые константы, получают при описании (начальное) значение;
Переменная – именованный элемент программы, который может менять свое значение. Перед употреблением переменная должна быть объявлена в разделе переменных var. При объявлении должен быть указан тип переменной, задающий размер памяти для нее. Переменные могут быть:
- Глобальные. Объявляются в главной программе
- Локальные. Действуют в пределах подпрограммы, где они объявлены
- Динамические. Создаются при исполнении программы в динамической памяти. Переменные получают значения с помощью операторов присвоения.
Целые типы определяют константы,переменные и функции,значения
которых реализуются множеством целых чисел, допустимых в данной ЭВМ.
Над целыми операндами можно выполнятьследующие арифметические
операции: сложение,вычитание, умножение, деление, получение остатка
от деления. Знаки этих операций:
Результат арифметической операции над целыми операндами есть вели-
чина целого типа. Результат выполнения операции деления целых величин
есть целая часть частного.Результат выполненияоперации получения
остатка от деления — остаток от деления целых. Например:
17 div 2 = 8, 3 div 5 = 0.
17 mod 2 = 1, 3 mod 5 = 3.
Операции отношения, примененные к целым операндам, дают результат
логического типа TRUE или FALSE ( истинаили ложь ).
Действительные типы определяет теданные, которые реализуются
подмножеством действительных чисел, допустимых в данной ЭВМ.
Тип Real определен в стандартном ПАСКАЛЕ иматематическим сопро-
цессором не поддерживается.
Остальные действительные типы определены стандартом IEEE 457 и ре-
ализованы на всех современных компьютерах.
Для их использования при наличии сопроцессора илипри работе на
ЭВМ типа 80486 необходимо компилировать программу с ключом , а
при отсутствии сопроцессора — с ключами .
Тип Comp хотяи относится к действительным типам,хранит только
длинные целые значения.
Над действительными операндами можно выполнять следующие арифмети-
ческие операции, дающие действительный результат:
сложение + , вычитание — ,умножение * ,деление / .
Символьный тип (Char) определяет упорядоченную совокупность симво-
лов, допустимых в данной ЭВМ. Значение символьной переменной или
константы — это один символ из допустимого набора.
Символьная константа может записываться в тексте программы тремя
-как один символ, заключенный в апострофы, например:
-с помощью конструкции вида #K, где K — код соответствущего симво-
ла, при этом значение K должно находиться в пределах 0..255;
-с помощью конструкции вида ^C, где C — код соответствущего управ-
ляющего символа, при этом значениеC должно быть на 64 больше
кода управляющего символа.
Адресныйтип (Pointer) определяет переменные, которые могут содер-
жать значенияадресов данных или фрагментов программы.Для хранения
адреса требуются два слова (4 байта), одно из них определяет сегмент,
Работа с адресными переменными (указателями) будетрассмотрена
позже, сейчасотметим, что для получения значения адреса какой-либо
В языке Паскаль существуют следующие структурированные типы:
6.1. МассивТип-массив представляет собой фиксированное количество упорядоченных однотипных компонент, снабженных индексами. Он может быть одномерным и многомерным. Чтобы задать тип-массив, используется зарезервированное слово array, после которого следует указать тип индекса (индексов) компонент (в квадратных скобках) и далее после слова of — тип самих компонент:6.2.
Строка типа string В Turbo Pascal тип-строка (стандартный тип string) — последовательность символов произвольной длины (до 255 символов). Строку можно рассматривать как массив символов, однако в связи с широким использованием строк и некоторыми особенностями по сравнению со стандартными массивами они выделены в отдельный тип данных.У типа-строки в квадратных скобках может быть указан его размер 6.4.
ЗаписьТип-запись включает ряд компонент, называемых полями, которые могут быть разных типов. При задании типа-записи после зарезервированного слова record следует перечислить все поля типа-записи с указанием через двоеточие их типов и завершить задание типа словом end. Поля отделяются друг от друга точкой с запятой. Количество полей записи может быть любым.
6.5. МножествоВ языке Паскаль типом-множеством называется множество-степень исходного множества объектов порядкового типа, т. е. множество всевозможных сочетаний объектов исходного множества.Число элементов исходного множества в Turbo Pascal не может быть больше 256, а порядковые номера элементов (т. е. значение функции Ord) должны находиться в пределах от 0 до 255.6.6. ФайлТип-файл представляет собой последовательность компонент одного типа, расположенных на внешнем устройстве (в стандарте языка за основу взято расположение данных на магнитных лентах). Компоненты могут быть любого типа, за исключением типа-файла (или содержащего компоненты типа-файла) и типа-объекта. Число компонент в файле не объявляется.Для задания типа-файла следует использовать зарезервированные слова file и of, после чего указать тип компонент файла.
Кроме стандартных типов данных Паскаль поддерживает скалярные типы, определенные самим пользователем. К ним относятся перечислимые типы (когда непосредственно, в разделе описания типов, заранее записываются все значения для переменных этого типа) и интервальные (когда задаются границы диапазона значений для данной переменной), указательные тип (кроме Pointer), структурированные типы и процедурные типы.
Данные этих типов занимают в памяти один байт, поэтому скалярные пользовательские типы не могут содержать более 256 элементов. Их применение значительно улучшает наглядность программы, делает более легким поиск ошибок, экономит память.
Перечислимый тип данных задается непосредственно перечислением всех значений, которые может принимать переменная данного типа. При описании отдельные значения указываются через запятую, а весь список заключается в круглые скобки.
Интервальный тип позволяет задавать две константы,определяющие границы диапазона значений для каждой переменной.Обе константы должны принадлежать одному и тому же стандартному типу (кроме real).
Указательные типы — их значениями являются адреса памяти. В отличие от стандартного указательного типа Pointer, пользовательский тип определяет множество значений, которые указывают на динамические переменные определенного типа , называемого базовым типом. Указатель на какой-либо тип может быть описан до объявления самого типа:
Процедурный тип позволяет объявлять переменные, которым допускается присваивание имен процедур, функций и методов, а также передавать такие переменные и имена в качестве параметров. Описание процедурных типов имеет такой же синтаксис, как и объявление процедур и функций:
Статьи к прочтению:
- Алгоритмы создания цепочек
- Алгоритм lru (выталкивание дольше всего не использовавшейся страницы)
Сетевой адаптер
Похожие статьи:
- Алгоритм линейной структуры Алгоритмизация вычислительных процессов Основные понятия об алгоритмизации задач Этапы решения задач на компьютере Процесс преобразования исходных данных…
- Программирование алгоритмов линейной структуры Лабораторная работа №1 Введение в язык Паскаль Контрольные вопросы: 1. Что такое алгоритмический язык? 2. Какие языки программирования вы знаете? 3….
Источник: csaa.ru