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

Министерство образования Российской Федерации Пермский Государственный технический университет

Кафедра информационных технологий и автоматизированных систем

Викентьева О. Л.

Конспект лекций по курсу «Алгоритмические языки и программирование» (Основы языка С++, I семестр)

Введение

В первом семестре рассматриваются основные конструкции языка Си и базовая технология программирования (структурное программирование).

Структурное программирование – это технология создания программ, позволяющая путем соблюдения определенных правил уменьшить время разработки и количество ошибок, а также облегчить возможность модификации программы.

1.1. Алгоритм и программа

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

Совокупность средств и правил для представления алгоритма в виде пригодном для выполнения вычислительной машиной называется языком программирования, алгоритм, записанный на этом языке, называется программой.

Сначала всегда разрабатывается алгоритм действий, а потом он записывается на одном из языков программирования. Текст программы обрабатывается специальными служебными программами – трансляторами. Языки программирования – это искусственные языки. От естественных языков они отличаются ограниченным числом «слов» и очень строгими правилами записи команд (операторов). Совокупность этих требований образует синтаксис языка программирования, а смысл каждой конструкции – его семантику.

1.2.Свойства алгоритма

1. Массовость: алгоритм должен применяться не к одной задаче, а к целому классу подобных задач (алгоритм для решения квадратного уравнения должен решать не одно уравнение, а все квадратные уравнения).

2. Результативность: алгоритм должен приводить к получению результата за конкретное число шагов (при делении 1 на 3 получается периодическая дробь 0,3333(3), для достижения конечного результата надо оговорить точность получения этой дроби, например, до 4 знака после запятой).

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

4. Дискретность – процесс должен быть описан с помощью неделимых

операций, выполняемых на каждом шаге (т. е. шаги нельзя разделить на более мелкие шаги).

Алгоритмы можно представить в следующих формах:

1) словесное описание алгоритма.

2) графическое описание алгоритма.

3) с помощью алгоритмического языка программирования

1.2. Компиляторы и интерпретаторы

С помощью языка программирования создается текст, описывающий ранее составленный алгоритм. Чтобы получить работающую программу, надо этот текст перевести в последовательность команд процессора, что выполняется при помощи специальных программ, которые называются трансляторами. Трансляторы бывают двух видов: компиляторы и интерпретаторы. Компилятор транслирует текст исходного модуля в машинный код, который называется объектным модулем за один непрерывный процесс. При этом сначала он просматривает исходный текст программы в поисках синтаксических ошибок. Интерпретатор выполняет исходный модуль программы в режиме оператор за оператором, по

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

1.3.Языки программирования

Разные типы процессоров имеют разный набор команд. Если язык программирования ориентирован на конкретный тип процессора и учитывает его особенности, то он называется языком программирования низкого уровня. Языком самого низкого уровня является язык ассемблера, который просто представляет каждую команду машинного кода в виде специальных символьных обозначений, которые называются мнемониками. С помощью языков низкого уровня создаются очень эффективные и компактные программы, т.к разработчик получает доступ ко всем возможностям процессора. Т.к. наборы инструкций для разных моделей процессоров тоже разные, то каждой модели процессора соответствует свой язык ассемблера, и написанная на нем программа может быть использована только в этой среде. Подобные языки применяют для написания небольших системных приложений, драйверов устройств и т. п..

Языки программирования высокого уровня не учитывают особенности конкретных компьютерных архитектур, поэтому создаваемые программы на уровне исходных текстов легко переносятся на другие платформы, если для них созданы соответствующие трансляторы. Разработка программ на языках высокого уровня гораздо проще, чем на машинных языках.

Языками высокого уровня являются:

1. Фортран – первый компилируемый язык, созданный в 50-е годы 20 века. В нем были реализован ряд важнейших понятий программирования. Для этого языка было создано огромное количество библиотек, начиная от статистических комплексов и заканчивая управлением спутниками, поэтому он продолжает использоваться во многих организациях.

2. Кобол – компилируемый язык для экономических расчетов и решения бизнес-задач, разработанный в начале 60-х годов. В Коболе были реализованы очень мощные средства работы с большими объемами данных, хранящихся на внешних носителях.

3. Паскаль – создан в конце 70-х годов швейцарским математиком Никлаусом Виртом специально для обучению программированию. Он позволяет выработать алгоритмическое мышление, строить короткую, хорошо читаемую программу, демонстрировать основные приемы алгоритмизации, он также хорошо подходит для реализации крупных проектов.

4. Бейсик – создавался в 60-х годах также для обучения программированию. Для него имеются и компиляторы и интерпретаторы, является одним из самых популярных языков программирования.

5. Си – был создан в 70- е годы первоначально не рассматривался как массовый язык программирования. Он планировался для замены ассемблера, чтобы иметь возможность создавать такие же эффективные и короткие программы, но не зависеть от конкретного процессора. Он во многом похож на Паскаль и имеет дополнительные возможности для работы с памятью. На нем написано много прикладных и системных программ, а также операционная система Unix.

6. Си++ - объектно-ориентированное расширение языка Си, созданное Бьярном Страуструпом в 1980г.

7. Java – язык, который был создан компанией Sun в начале 90-х годов на основе Си++. Он призван упростить разработку приложений на СИ++ путем исключения из него низкоуровневых возможностей. Главная особенность языка – это то, что он компилируется не в машинный код, а в платформно-независимый байт-код (каждая команда занимает один байт). Этот код может выполняться с помощью интерпретатора – виртуальной Java-машины (JVM).

2.Структура программы на Си++

Программа на языке Си имеет следующую структуру: #директивы препроцессора

. . . . . . . . .

#директивы препроцессора функция а ()

операторы функция в ()

операторы

void main () //функция, с которой начинается выполнение программы операторы

описания

присваивания

функция пустой оператор

составной

перехода

Директивы препроцессора - управляют преобразованием текста программы до ее компиляции. Исходная программа, подготовленная на СИ в виде текстового файла, проходит 3 этапа обработки:

1) препроцессорное преобразование текста;

2) компиляция;

3) компоновка (редактирование связей или сборка).

После этих трех этапов формируется исполняемый код программы. Задача препро-

цессора - преобразование текста программы до ее компиляции. Правила препроцессорной обработки определяет программист с помощью директив препроцессора. Директива начинается с #. Например,

1) #define - указывает правила замены в тексте. #define ZERO 0.0

Означает, что каждое использование в программе имени ZERO будет заменяться

2) #include< имя заголовочного файла> - предназначена для включения в текст программы текста из каталога «Заголовочных файлов», поставляемых вместе со стандартными библиотеками. Каждая библиотечная функция Си имеет соответствующее описание в одном из заголовочных файлов. Список заголовочных файлов определен стандартом языка. Употребление директивы include не подключает соответствующую стандартную биб-

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

После выполнения препроцессорной обработки в тексте программы не остается ни одной препроцессорной директивы.

Программа представляет собой набор описаний и определений, и состоит из набора функций. Среди этих функций всегда должна быть функция с именем main. Без нее программа не может быть выполнена. Перед именем функции помещаются сведения о типе возвращаемого функцией значения (тип результата). Если функция ничего не возвращает, то указывается тип void: void main (). Каждая функция, в том числе и main должна иметь набор параметров, он может быть пустым, тогда в скобках указывается (void).

За заголовком функции размещается тело функции. Тело функции - это последовательность определений, описаний и исполняемых операторов, заключенных в фигурные скобки. Каждое определение, описание или оператор заканчивается точкой с запятой.

Определения - вводят объекты (объект - это именованная область памяти, частный случай объекта - переменная), необходимые для представления в программе обрабатываемых данных. Примером являются

int y = 10 ; //именованная константа float x ; //переменная

Описания - уведомляют компилятор о свойствах и именах объектов и функций, описанных в других частях программы.

Операторы - определяют действия программы на каждом шаге ее исполне-

Пример программы на Си:

#include //препроцессорная директива

Контрольные вопросы

1. Из каких частей состоит программа на С++?

2. Чем определение отличается от объявления?

3. Перечислить этапы создания исполняемой программы на языке С++.

4. Что такое препроцессор?

5. Что такое директива препроцессора? Привести примеры директив препроцессора.

6. Составить программу, которая печатает текст «Моя первая программа на С++»

2. Базовые средства языка СИ++ 2.1.Состав языка

В тексте на любом естественном языке можно выделить четыре основных элемента: символы, слова, словосочетания и предложения. Алгоритмический язык также содержит такие элементы, только слова называют лексемами (элементарными конструкциями), словосочетания – выражениями, предложения – операторами. Лексемы образуются из символов, выражения из лексем и символов, операторы из символов выражений и лексем (Рис. 1.1)

Рис. 1.1. Состав алгоритмического языка Таким образом, элементами алгоритмического языка являются:

Идентификаторы – имена объектов СИ-программ. В идентификаторе могут быть использованы латинские буквы, цифры и знак подчеркивания. Прописные и строчные буквы различаются, например, PROG1, prog1 и Prog1 – три различных идентификатора. Первым символом должна быть буква или знак подчеркивания (но не цифра). Пробелы в идентификаторах не допускаются.

Ключевые (зарезервированные) слова – это слова, которые имеют специальное значение для компилятора. Их нельзя использовать в качестве идентификаторов.

- Знаки операций – это один или несколько символов, определяющих действие над операндами. Операции делятся на унарные, бинарные и тернарную по количеству участвующих в этой операции операндов.

Константы – это неизменяемые величины. Существуют целые, вещественные, символьные и строковые константы. Компилятор выделяет константу в качестве лексемы (элементарной конструкции) и относит ее к одному из типов по ее внешнему виду.

Разделители – скобки, точка, запятая пробельные символы.

2.1.1. Константы в Си++

Константа – это лексема, представляющая изображение фиксированного числового, строкового или символьного значения.

Константы делятся на 5 групп:

Целые;

- вещественные (с плавающей точкой);

Перечислимые;

Символьные;

Строковые.

Компилятор выделяет лексему и относит ее к той или другой группе, а затем вну-

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

Целые константы могут быть десятичными, восьмеричными и шестнадцатеричными. Десятичная константа определяется как последовательность десятичных цифр, начинающаяся не с 0, если это число не 0 (примеры: 8, 0, 192345). Восьмеричная константа – это константа, которая всегда начинается с 0. За 0 следуют восьмеричные цифры (примеры: 016 – десятичное значение 14, 01). Шестнадцатеричные константы – последовательность шестнадцатеричных цифр, которым предшествуют символы 0х или 0Х (примеры: 0хА, 0Х00F).

В зависимости от значения целой константы компилятор по-разному представит ее

в памяти компьютера (т. е. компилятор припишет константе соответствующий тип данных).

Вещественные константы имеют другую форму внутреннего представления в памяти компьютера. Компилятор распознает такие константы по их виду. Вещественные константы могут иметь две формы представления: с фиксированной точкой и с плавающей точкой. Вид константы с фиксированной точкой:[цифры].[цифры] (примеры: 5.7, . 0001, 41.).Вид константы с плавающей точкой: [цифры][.][цифры]E|e[+|-][цифры] (приме- ры:0.5е5, .11е-5, 5Е3). В записи вещественных констант может опускаться либо целая, либо дробная части, либо десятичная точка, либо признак экспоненты с показателем степени.

Перечислимые константы вводятся с помощью ключевого слова enum. Это обычные целые константы, которым приписаны уникальны и удобные для использования обозначения. Примеры: enum { one=1, two=2, three=3,four=4};

enum {zero,one,two,three} – если в определении перечислимых констант опустить знаки = и числовые значения, то значения будут приписываться по умолчанию. При этом самый левый идентификатор получит значение 0, а каждый последующий будет увеличиваться на 1.

enum { ten=10, three=3, four, five, six};

enum {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Satur-

Символьные константы – это один или два символа, заключенные в апострофы. Символьные константы, состоящие из одного символа, имеют тип char и занимают в памяти один байт, символьные константы, состоящие из двух символов, имеют тип int и занимают два байта. Последовательности, начинающиеся со знака \ , называются управляющими, они используются:

- Для представления символов, не имеющих графического отображения, например:

\a – звуковой сигнал,

\b – возврат на один шаг, \n – перевод строки,

\t – горизонтальная табуляция.

- Для представления символов: \ , ’ , ? , ” (\\, \’ ,\? ,\”).

- Для представления символов с помощью шестнадцатеричных или восьмеричных кодов (\073, \0хF5).

Строковая константа – это последовательность символов, заключенная в кавычки.

Внутри строк также могут использоваться управляющие символы. Например: “\nНовая строка”,

“\n\”Алгоритмические языки программирования высокого уровня \”” .

2.2. Типы данных в Си++

Данные отображают в программе окружающий мир. Цель программы состоит в обработке данных. Данные различных типов хранятся и обрабатываются по-разному. Тип данных определяет:

1) внутреннее представление данных в памяти компьютера;

2) множество значений, которые могут принимать величины этого типа;

3) операции и функции, которые можно применять к данным этого типа.

В зависимости от требований задания программист выбирает тип для объектов программы. Типы Си++ можно разделить на простые и составные. К простым типам относят типы, которые характеризуются одним значением. В Си++ определено 6 простых типов данных:

int (целый)

char (символьный)

wchar_t (расширенный символьный) bool (логический) float(вещественный)

double (вещественный с двойной точностью)

Существует 4 спецификатора типа, уточняющих внутреннее представление и диапазон стандартных типов

short (короткий) long (длинный) signed (знаковый)

unsigned (беззнаковый)

2.2.1. Тип int

Значениями этого типа являются целые числа.

Размер типа int не определяется стандартом, а зависит от компьютера и компилятора. Для 16-разрядного процессора под него отводится 2 байта, для 32-разрядного – 4 байта.

Если перед int стоит спецификатор short, то под число отводится 2 байта, а если спецификатор long, то 4 байта. От количества отводимой под объект памяти зависит множество допустимых значений, которые может принимать объект:

short int - занимает 2 байта, следовательно, имеет диапазон –32768 ..+32767;

long int – занимает 4 байта, следовательно, имеет диапазон –2 147 483 648..+2 147 483 647

Тип int совпадает с типом short int на 16-разрядных ПК и с типом long int на 32разрядных ПК.

Модификаторы signed и unsigned также влияют на множество допустимых значений, которые может принимать объект:

unsigned short int - занимает 2 байта, следовательно, имеет диапазон 0 ..65536; unsigned long int – занимает 4 байта, следовательно, имеет диапазон 0..+4 294 967

2.2.2. Тип char

Значениями этого типа являются элементы конечного упорядоченного множества символов. Каждому символу ставится в соответствие число, которое называется кодом символа. Под величину символьного типа отводится 1 байт. Тип char может использоваться со спецификаторами signed и unsigned. В данных типа signed char можно хранить значения в диапазоне от –128 до 127. При использовании типа unsigned char значения могут находиться в диапазоне от 0 до 255. Для кодировки используется код ASCII(American Standard Code foe International Interchange). Символы с кодами от 0 до 31 относятся к служебным и имеют самостоятельное значение только в операторах ввода-вывода.

Величины типа char также применяются для хранения чисел из указанных диапазо-

2.2.3. Тип wchar_t

Предназначен для работы с набором символов, для кодировки которых недостаточно 1 байта, например Unicode. Размер этого типа, как правило, соответствует типу short. Строковые константы такого типа записываются с префиксом L: L“String #1”.

2.2.4. Тип bool

Тип bool называется логическим. Его величины могут принимать значения true и false. Внутренняя форма представления false – 0, любое другое значение интерпретируется как true.

2.2.5. Типы с плавающей точкой.

Внутреннее представление вещественного числа состоит из 2 частей: мантиссы и порядка. В IBM-совместимых ПК величины типа float занимают 4 байта, из которых один разряд отводится под знак мантиссы, 8 разрядов под порядок и 24 – под мантиссу.

Величины типы double занимают 8 байтов, под порядок и мантиссу отводятся 11 и 52 разряда соответственно. Длина мантиссы определяет точность числа, а длина порядка его диапазон.

Если перед именем типа double стоит спецификатор long, то под величину отводится байтов.

2.2.6. Тип void

К основным типам также относится тип void Множество значений этого типа – пу-

2.3. Переменные

Переменная в СИ++ - именованная область памяти, в которой хранятся данные определенного типа. У переменной есть имя и значение. Имя служит для обращения к области памяти, в которой хранится значение. Перед использованием любая переменная должна быть описана. Примеры:

Общий вид оператора описания:

[класс памяти]тип имя [инициализатор];

Класс памяти может принимать значения: auto, extern, static, register. Класс памяти определяет время жизни и область видимости переменной. Если класс памяти не указан явно, то компилятор определяет его исходя из контекста объявления. Время жизни может быть постоянным – в течение выполнения программы или временным – в течение блока. Область видимости – часть текста программы, из которой допустим обычный доступ к переменной. Обычно область видимости совпадает с областью действия. Кроме того случая, когда во внутреннем блоке существует переменная с таким же именем.

Const – показывает, что эту переменную нельзя изменять (именованная константа). При описании можно присвоить переменной начальное значение (инициализация). Классы памяти:

auto –автоматическая локальная переменная. Спецификатор auto может быть задан только при определении объектов блока, например, в теле функции. Этим переменным память выделяется при входе в блок и освобождается при выходе из него. Вне блока такие переменные не существуют.

extern – глобальная переменная, она находится в другом месте программы (в другом файле или долее по тексту). Используется для создания переменных, которые доступны во всех файлах программы.

static – статическая переменная, она существует только в пределах того файла, где определена переменная.

register - аналогичны auto, но память под них выделяется в регистрах процессора. Если такой возможности нет, то переменные обрабатываются как auto.

int a; //глобальная переменная void main(){

int b;//локальная переменная

extern int x;//переменная х определена в другом месте static int c;//локальная статическая переменная a=1;//присваивание глобальной переменной

int a;//локальная переменная а

a=2;//присваивание локальной переменной::a=3;//присваивание глобальной переменной

int x=4;//определение и инициализация х

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

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

Имя переменной должно быть уникальным в своей области действия.

Описание переменной может быть выполнено или как объявление, или как определение. Объявление содержит информацию о классе памяти и типе переменной, определение вместе с этой информацией дает указание выделить память. В примере extern int x; - объявление, а остальные – определения.

2.4.Знаки операций в Си++

Знаки операций обеспечивают формирование выражений. Выражения состоят из операндов, знаков операций и скобок. Каждый операнд является, в свою очередь, выражением или частным случаем выражения – константой или переменной.

Унарные операции

& получение адреса операнда

* Обращение по адресу (разыменование)

- унарный минус, меняет знак арифметического операнда

++ Увеличение на единицу:

префиксная операция - увеличивает операнд до его использо-

постфиксная операция увеличивает операнд после его исполь-

int a=(m++)+n; // a=4,m=2,n=2

int b=m+(++n);//a=3,m=1,n=3

уменьшение на единицу:

префиксная операция - уменьшает операнд до его использова-

постфиксная операция уменьшает операнд после его использо-

вычисление размера (в байтах) для объекта того типа, который

имеет операнд

имеет две формы

sizeof выражение

sizeof(float)//4

sizeof(1.0)//8, т. к. вещественные константы по умолчанию



Алгоритм. Школьный алгоритмический язык.

Алгоритм - точное и понятное предписание исполнителю совершить последовательность действий, направленных на решение поставленной задачи.

  • Название "алгоритм" произошло от латинской формы имени среднеазиатского математика аль-Хорезми - Algorithmi. Алгоритм - одно из основных понятий информатики и математики.


Исполнитель алгоритма - это некоторая абстрактная или реальная (техническая, биологическая или биотехническая) система, способная выполнить действия, предписываемые алгоритмом.

  • Исполнителя хаpактеpизуют:

  • среда;

  • элементарные действия;

  • система команд;

  • отказы.

  • Среда (или обстановка) - это "место обитания" исполнителя.

  • Система команд . Каждый исполнитель может выполнять команды только из некоторого строго заданного списка - системы команд исполнителя. Для каждой команды должны быть заданы условия применимости (в каких состояниях среды может быть выполнена команда) и описаны результаты выполнения команды.

  • После вызова команды исполнитель совершает соответствующее элементарное действие .

  • Отказы исполнителя возникают, если команда вызывается при недопустимом для нее состоянии среды.


Основные свойства алгоритмов следующие:

  • Понятность для исполнителя - т.е. исполнитель алгоритма должен знать, как его выполнять.

  • Дискретность (прерывность, раздельность) - т.е. алгоритм должен представлять процесс решения задачи как последовательное выполнение простых (или ранее определенных) шагов (этапов).

  • Определенность - т.е. каждое правило алгоритма должно быть четким, однозначным и не оставлять места для произвола. Благодаря этому свойству выполнение алгоритма носит механический хаpактеp и не требует никаких дополнительных указаний или сведений о решаемой задаче.

  • Результативность (или конечность). Это свойство состоит в том, что алгоритм должен приводить к решению задачи за конечное число шагов.

  • Массовость . Это означает, что алгоритм решения задачи pазpабатывается в общем виде, т.е. он должен быть применим для некоторого класса задач, различающихся лишь исходными данными. При этом исходные данные могут выбираться из некоторой области, которая называется областью применимости алгоритма.


Формы представления алгоритмов:

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

  • графическая (изображения из графических символов);

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

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


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

  • Например. Записать алгоритм нахождения наибольшего общего делителя (НОД) двух натуральных чисел. Алгоритм может быть следующим:

  • задать два числа;

  • если числа равны, то взять любое из них в качестве ответа и остановиться, в противном случае продолжить выполнение алгоритма;

  • определить большее из чисел;

  • заменить большее из чисел разностью большего и меньшего из чисел;

  • повторить алгоритм с шага 2.


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

  • Такое графическое представление называется схемой алгоритма или блок-схемой .


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

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

  • Примером псевдокода является школьный алгоритмический язык в русской нотации (школьный АЯ),


Основные служебные слова


Общий вид алгоритма:

  • алг название алгоритма (аргументы и результаты)

  • дано условия применимости алгоритма

  • надо цель выполнения алгоритма

  • нач описание промежуточных величин

  • последовательность команд (тело

  • алгоритма)


Часть алгоритма от слова алг до слова нач называется заголовком нач и кон - телом алгоритма.

  • Часть алгоритма от слова алг до слова нач называется заголовком , а часть, заключенная между словами нач и кон - телом алгоритма.

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


Команды школьного АЯ

  • Оператор присваивания . Служит для вычисления выражений и присваивания их значений переменным. Общий вид: А:= В , где знак ":=" означает команду заменить прежнее значение переменной, стоящей в левой части , на вычисленное значение выражения, стоящего в правой части .

  • Например, a:=(b+c)*sin(Pi/4); i:=i+1.

  • Для ввода и вывода данных используют команды

  • ввод имена переменных

  • вывод имена переменных, выражения, тексты.

  • Для ветвления применяют команды если и выбор , для организации циклов - команды для и пока


Пример записи алгоритма на школьном АЯ

  • алг Сумма квадратов (арг цел n, рез цел S)

  • дано | n > 0

  • надо | S = 1*1 + 2*2 + 3*3 + ... + n*n

  • нач цел i

  • ввод n; S:=0

  • нц для i от 1 до n S:=S+i*i

  • вывод "S = ", S


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

  • 1. Базовая структура следование .


2. Базовая структура ветвление .

  • Структура ветвление существует в четырех основных вариантах:

  • если-то;

  • если-то-иначе;

  • выбор;

  • выбор-иначе.


2. Базовая структура ветвление .


2. Базовая структура ветвление .


3. Базовая структура цикл .

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


Какие понятия используют алгоритмические языки

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


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

  • Имена (идентификаторы) - употpебляются для обозначения объектов пpогpаммы (пеpеменных, массивов, функций и дp.).

  • Опеpации . Типы операций:

  • аpифметические опеpации + , - , * , / и дp. ;

  • логические опеpации и, или, не ;

  • опеpации отношения , = , = , ;

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

  • Данные - величины, обpабатываемые пpогpаммой . Имеется тpи основных вида данных: константы, пеpеменные и массивы .

  • Константы - это данные, которые зафиксированы в тексте программы и не изменяются в процессе ее выполнения.

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

    • числовые 7.5, 12;
    • логические да (истина), нет (ложь);
    • символьные "А", "+";
    • литеpные "abcde", "информатика", "" (пустая строка).
  • Пеpеменные обозначаются именами и могут изменять свои значения в ходе выполнения пpогpаммы. Пеpеменные бывают целые, вещественные, логические, символьные и литерные .

  • Массивы - последовательности однотипных элементов, число которых фиксировано и которым присвоено одно имя. Положение элемента в массиве однозначно определяется его индексами (одним, в случае одномерного массива, или несколькими, если массив многомерный). Иногда массивы называют таблицами.


Выpажения

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

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

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

  • Арифметические выражения служат для определения одного числового значения . Например, (1+sin(x))/2. Значение этого выражения при x=0 равно 0.5, а при x=p/2 - единице.

  • Логические выражения описывают некоторые условия, которые могут удовлетворяться или не удовлетворяться . Таким образом, логическое выражение может принимать только два значения - "истина" или "ложь" (да или нет ). Рассмотрим в качестве примера логическое выражение x*x + y*y "истина", а при x=2, y=2, r=1 - "ложь" .

  • Значения строковых (литерных) выражений - текcты . В них могут входить литерные константы, литерные переменные и литерные функции, разделенные знаком операции сцепки. Например, А + В означает присоединение строки В к концу строки А. Если А = "куст " , а В = "зеленый" , то значение выражения А+В есть "куст зеленый" .

  • Операторы (команды). Оператор - это наиболее крупное и содержательное понятие языка: каждый оператор представляет собой законченную фразу языка и определяет некоторый вполне законченный этап обработки данных. В состав опеpатоpов входят:

  • ключевые слова;

  • данные;

  • выpажения и т.д.

  • Операторы подpазделяются на исполняемые и неисполняемые. Неисполняемые опеpатоpы пpедназначены для описания данных и стpуктуpы пpогpаммы, а исполняемые - для выполнения pазличных действий (напpимеp, опеpатоp пpисваивания, опеpатоpы ввода и вывода, условный оператор, операторы цикла, оператор процедуры и дp.).


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


Таблица стандартных функций школьного алгоритмического языка


  • В качестве аргументов функций можно использовать константы, переменные и выражения. Например: sin(3.05) min(a, 5)

  • sin(x) min(a, b)

  • sin(2*y+t/2) min(a+b, a*b)

  • sin((exp(x)+1)**2)

  • min(min(a,b),

  • min(c,d))


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

  • Нельзя опускать знак умножения между сомножителями и ставить рядом два знака операций.

  • Индексы элементов массивов записываются в квадратных (школьный АЯ, Pascal) или круглых (Basic) скобках.

  • Для обозначения переменных используются буквы латинского алфавита.

  • Операции выполняются в порядке старшинства : сначала вычисление функций, затем возведение в степень, потом умножение и деление и в последнюю очередь - сложение и вычитание.

  • Операции одного старшинства выполняются слева направо . Например, a/b*c соответствует a/b*c. Однако, в школьном АЯ есть одно исключение из этого правила: операции возведения в степень выполняются справа налево. Так, выражение 2**(3**2) в школьном АЯ вычисляется как 2**(3**2) = 512. В языке QBasic аналогичное выражение 2^3^2 вычислясляется как (2^3)^2 = 64. А в языке Pascal вообще не предусмотрена операция возведения в степень, в Pascal x^y записывается как exp(y*ln(x)), а x^y^z как exp(exp(z*ln(y))*ln(x)).


Примеры записи арифметических выражений


Типичные ошибки в записи выражений:

  • a+sin x

  • (a+b)/c**3



Примеры записи логических выражений, истинных при выполнении указанных условий.


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


  • a+b/c+1;

  • a**b**c/2;

  • a/b/c/d*p*q;

  • 4/3*3.14*r**3;

  • d*c/2/R+a**3;


Любой язык программирования изобилует разнообразными ключевыми словами, функциями или классами. Как правило, все они используют английский язык, на котором описываются методы или аргументы. В некоторых средах и вовсе встречаются просто сокращения машинных функций. Это в значительной степени затрудняло освоение разработки на начальных этапах. С целью повысить скорость понимания была создана серия специальных алгоритмических языков программирования, которые состояли из понятных и доступных слов и их сочетаний, ясных даже неподготовленному человеку.

Немного истории

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

Большую роль в переходе от машинного языка к более подходящему человеку сыграл язык программирования низкого уровня ассемблер. В нем использовались мнемонические значения и символы. Это упростило задачу разработчика, так как теперь из комбинаций управляющих инструкций и числовых кодов он мог более продуктивно выстраивать свои алгоритмы. Несмотря на всю свою гибкость и мощность, язык все также был сложен в освоении.

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

С созданием первого алгоритмического языка программирования — алгола - дело освоения алгоритмов значительно ускорилось.

Что представляет собой алгоритм

Если уйти от сухой теории и определений, то алгоритм — это последовательность действий, направленных на решение поставленной задачи. Несмотря на всю витиеватость выражения, с этим понятием человек сталкивается повседневно. Например, чтобы попить чай, нужно выполнить следующую последовательность:

  1. Поставить чайник на плиту.
  2. Дождаться его закипания.
  3. Налить кипяток в воду.
  4. Опустить чайный пакет в чашку.
  5. Добавить необходимое количество сахара, молока или мёда.

Данная последовательность весьма упрощена, однако представляет собой самый простой алгоритм.

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

Свойства и особенности алгоритмического языка

Алгоритмический — формальный язык, на котором описываются алгоритмы, предполагаемые для выполнения на вычислительных машинах. Как правило, он не привязан к какой-либо архитектуре машины. Это помогает значительно повысить и ускорить написание кода. Как яркий пример - алгоритмический язык бейсик. Паскаль и си также оказались популярными, так как обладали простым синтаксисом и скоростью изучения.

Структура реализована таким образом, что процедуры, описанные в коде, выполняются одна за другой. То есть один алгоритм — одна задача. Это похоже на создание функций или методов в языках С и Java.

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

Различия между машинными и алгоритмическими языками

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

Поэтому формальный язык или алгоритмический был создан с большим количеством понятных человеку ключевых слов и имён.

Ключевые слова

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

  • Алг . С этого ключевого слова начинается любой алгоритм. В нем описывается название и в скобках указывается, какие аргументы он принимает для вычисления, и что должно получиться в результате.
  • Арг . Обозначает аргументы алгоритма. Отражает тип и название значения, которое будет использован в коде.
  • Рез . Данное ключевое слово служит для обозначения типа и имени переменной, в которую будет необходимо поместить результат вычисления.
  • Нач. Означает непосредственное начало выполнения алгоритма. Длится до ключевого слова кон. Весь промежуток от "нач" до "кон" называется телом текущего алгоритма.
  • Кон. Сообщает о том, что выполнение алгоритма окончено.
  • Дано . Говорит о некоторых особенностях и нюансах использования алгоритма или об ограничениях. Например, здесь можно указать, что длины сравниваемых строк должны быть одинаковыми. Использование ключевого слова "дано" необязательно.
  • Надо . Более подробное описание того, что должно получиться в результате выполнения алгоритма. Так же, как и "дано", может опускаться, но для построения более понятного и подробного кода его использование рекомендуется.

Список данных ключевых слов относится к заголовку и обозначению тела алгоритма. А вот так выглядят лексемы для переменных:

  • Цел . Тип переменной целых чисел. Диапазон их должен варьироваться от -32768 до 32767.
  • Вещ . Вещественные числа. Например, с экспонентой или дробной частью.
  • Лог . Это ключевое слово означает, что будет использована переменная логического типа, способная принимать только "да" или "нет".
  • Сим. Сюда входят значения с одиночными символами, например, «а», «3».
  • Лит . Строковые переменные, которые могут содержать целые текстовые строки.
  • Таб . Обозначает таблицу с данными определённого типа. Представляет собой аналог массива из других языков программирования.

Дополнительные служебные слова

Следующий список слов используется для организации механизмов ветвления и циклов.

  • Для . Применяется для перебора всех значений определённого диапазона. Используется для циклов, т. е. непрерывного выполнения каких-либо процедур с данными.
  • От и до . Указывает, какой именно диапазон значений нужно перебрать в цикле типа "для".
  • Пока . Также служит для перебора нескольких значений. Используется для работы до тех пор, пока не выполнится определённое условие.
  • Нц и кц . "Нц" в алгоритмическом языке означает начало тела цикла, а "кц" - конец. Между этими двумя ключевыми словами встраиваются необходимые для вычисления процедуры.
  • Если. С помощью этого слова реализуется структура ветвления. Таким образом можно определить ход программы в нужном направлении, учитывая условия.
  • То, иначе . Два слова, работающих в паре с "если". Также выстраивают механизм ветвления.
  • Выбор . Удобный инструмент для осуществления ветвления из нескольких значений одного типа. Работает в паре с ключевым словом "при" и "иначе".
  • Все . Означает окончание механизма ветвления.
  • Ввод . Данное ключевое слово позволяет пользователю вводить значения переменных в ходе работы программы для их последующей обработки.
  • Вывод. Производит вывод данных на экран.

Основные структуры языка

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

Структура следования

При проектировании такого вида структуры выполнение кода происходит непосредственно строка за строкой. Общий пример можно выразить таким образом:

алг Сумма двух чисел (арг цел a, b, рез цел S)

вывод «S = », S

В данном примере происходит вычисление суммы двух чисел, введённых пользователем. В начале слово "алг" показывает, что алгоритм начинается, и кратко описывает, что именно он делает. В скобках определяются аргументы, необходимые для работы программы, и переменная, которая послужит контейнером для хранения результатов. Далее идёт ключевое слово "нач", показывающее непосредственное начало выполнения выражений и процедур. Рядом с "нач" можно определить и некоторые промежуточные переменные.

В теле алгоритма ключевое слово "ввод" принимает от пользователя данные и записывает их в переменные. Затем они складываются, и их сумма присваивается S. Перед концом алгоритма результат работы программы выводится на экран посредством ключевого слова "вывод". Данная запись на алгоритмическом языке типична и для многих других сред программирования.

Структура ветвления

Ход программы не всегда должен выполняться строка за строкой. Иногда нужно определить или изменить значение некой переменной в зависимости от ситуации. Например, при условии, что х = 0, не осуществлять деление на х.

Алгоритмический язык программирования для этого использует несколько вариантов конструкций и ключевые слова "если", "то", "иначе" или "выбор". После "если" устанавливается условие, по которому будет определяться критерий перехода в другую ветвь. Например, так:

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

иначе у = 0

То есть в случае, когда х будет не равен нулю, у также обнулится вне зависимости от значения, которое он имел до этого.

Более удобным средством для осуществления множественного выбора является конструкция "выбор". Она позволяет перебрать несколько условий. При срабатывании одного из них будет выполнено указанное для него действие.

при х = 0: у = 0

при х = 1: у = 1

при х = 2: у = 2

Данный пример демонстрирует зависимость переменной у от х. Программа пробегает по всем данным и сравнивает текущее значение х с указанным в условии. При нахождении соответствия выполняет следующее за ним действие. Эту конструкцию можно также комбинировать с ключевым словом "иначе" для более гибких решений, когда ни одно из условий не отработало.

Циклы

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

Ключевое слово "пока" позволяет организовать цикл, в котором определённое действие будет повторяться до тех пор, пока не удовлетворится некое условие. Например:

нц пока х <= 3

В данном примере у будет увеличиваться до тех пор, пока х не станет больше 3. Для того чтобы цикл не был бесконечным, х нужно в каждом проходе изменить в большую сторону, например на 1, что и делает вторая строка кода.

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

Синтаксис его выглядит так:

нц для х от 1 до 3

Служебные слова "от" и "до" показывают диапазон значений, которые необходимо перебрать. Таким образом в первой итерации х = 1, в результате прохода у приобретёт также значение 1. Дальше управление опять перейдёт в начало, и х теперь будет равен 2, соответственно, у станет 3.

Используя совместные конструкции циклов и ветвления, можно выстраивать простейшие алгоритмы для решения лёгких задач и получения знаний о работе языков программирования.

Стандартные функции

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

  • абсолютный модуль — abs(x);
  • корень квадратный — sqrt(x);
  • натуральный и десятичный логарифмы — ln(x) и lg(x);
  • минимум и максимум двух чисел — min(x,y), max (x,y);
  • синус, косинус, тангенс, котангенс — sin(x), cos(x), tg(x), ctg(x).

Данные стандартные возможности позволяют избежать создания «велосипеда», помогая реализовать простейшие функции штатными средствами.

Логические выражения

Логические выражения отражают, удовлетворяет ли некая операция условию. Например, х > 0 будет иметь значение "истина" при х, равном 1, 2, 25 или любом другом числе больше нуля. Алгоритмический язык содержит логические выражения, которые помимо стандартных математических операций могут использовать следующие ключевые слова и операторы:

  • И. Означает, что выражения, между которыми находится ключевое слово, должны удовлетворять определённому условию: (х>0) и (у>0);
  • Или . Одно из выражений может не удовлетворять условию, например, (х>0) или (у>0);
  • Не . «Переворачивает» логическое значение выражения. Например, такая конструкция не (х>0), означает, что х все же должен быть не больше нуля.

Также присутствуют операторы сравнения - <, >, =, которые могут сочетаться, создавая выражения типа больше или равно.

Небольшая программа для алгоритмического языка

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

Составляющие алгоритмического языка имеют в своем составе множество ключевых слов. Первое, с чего начинается программа, это объявление об алгоритме — алг.

алг Возведение числа в квадрат ()

В скобках нужно указать аргумент, который будет представлять собой значение от пользователя и результат. Также не стоит забывать про объявление типов этих данных.

Теперь машина будет знать, что взаимодействовать ей придется с переменной типа целое число, а результатом ее работы будет S.

Первое, что нужно сделать, осуществить ввод данных. Это производится с помощью ключевого слова "ввод".

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

вывод «S = », S

Алгоритмический язык, команды которого позволяют реализовать присвоение, записываются в виде:=. Тем самым в переменную S попадает значение произведения х на самого себя. Строка с выводом показывает результат на экране. Ну и завершается все это ключевым словом "кон". Полный код теперь будет выглядеть так:

алг Возведение числа в квадрат (арг цел х, рез цел S)

вывод «S = », S

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

алг Возведение числа в квадрат и расчёт их суммы (арг цел х, рез цел S)

дано | х > 0

надо | S = 1*1 + 2*2+ … + x*x

нач цел а

ввод х; S:=0

нц для а от 1 до х

вывод «S = », S

В этом варианте используется цикл, промежуточная переменная а и краткое указание к задаче в разделах "дано" и "надо". Теперь, если передать программе некое число, она возведёт его в квадрат и выведет сумму квадратов всех чисел, ему предшествующих.

Использование и развитие алгоритмических языков

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

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

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

Учебный алгоритмический язык - это средство для записи алгоритмов в виде, промежуточном между записью алгоритма на естественном (человеческом) языке и записью на языке ЭВМ (языке программирования).

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

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

Запись алгоритма на учебном алгоритмическом языке состоит из заголовка и тела алгоритма. Тело алгоритма заключается между ключевыми словами нач и кон и представляет собой последовательность команд алгоритма. Заголовок включает название алгоритма, отражающее его содержание, списки исходных данных (аргументов) и результатов.

Признаком заголовка алгоритма является ключевое слово алг .

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

алг название алгоритма

aрг список исходных данных

рез список результатов

последовательность команд алгоритма

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

Записывается она так:

<переменная> := <выражение>

Знак «: =» читается «присвоить».

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

1) значение выражения, записанного в правой части команды присваивания, вычисляется с использованием текущих значений всех величин, входящих в это выражение;

2) переменной присваивается новое вычисленное текущее значение. При этом предшествующее значение переменной уничтожается.

Следовательно, команда b: = а + b означает, что к предыдущему текущему значению величины b прибавляется значение переменной а и полученный результат становится новым текущим значением величины b.

Этот пример иллюстрирует три основных свойства присваивания:

1) пока переменной не присвоено значение, она остается не определенной;

2) значение, присвоенное переменной, сохраняется в ней вплоть до выполнения следующего присваивания этой переменной нового значения;

3) новое значение, присвоенное переменной, заменяет ее предыдущее значение.

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

действие 1

действие 2

. . . . . . . . .

действие n

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



1. если-то;

если условие

то действия

2. если-то-иначе;

если условие

то действия 1

иначе действия 2

выбор

при условие 1: действия 1

при условие 2: действия 2

. . . . . . . . . . . .

при условие N: действия N

{иначе действия N+1 }

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