Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмы и основы программирования - копия.doc
Скачиваний:
24
Добавлен:
26.11.2019
Размер:
669.7 Кб
Скачать

Алгоритмическая структура «выбор»

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

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

На языках программирования Visual Basic и VBA инструкция выбора начинается с ключевых слов Select Case, после которых записывается выражение ( переменная, арифметическое выражение и так далее). После ключевых слов Case заданное выражение сравнивается с определёнными значениями – записываются условия, при истинности одного из которых начинает выполняться серия команд. Заканчивается инструкция ключевыми словами End Select.

Алгоритмическая структура «выбор»

Блок-схема

Языки программирования Visual Basic и VBA

Серия 1

Серия 2

Серия

Case Выражение

Case Условие 1

Серия 1

Case Условие 2

Серия 2

Case Else

Серия

End Select

Алгоритмическая структура «цикл»

В алгоритмическую структуру «цикл» входит серия команд, выполняется многократно. Такая последовательность команд называется телом цикла.

Циклические алгоритмические структуры бывают двух типов:

  • циклы со счётчиком, в которых тело цикла выполняется определённое количество раз;

  • циклы с условием, в которых тело цикла выполняется, пока условие истинно.

В алгоритмической структуре «цикл» серия команд (тело цикла) выполняется многократно.

Алгоритмическая структура «цикл» может быть зафиксирована различными способами:

  • графически – с помощью блок-схемы;

  • на языке программирования, например, на языках Visual Basic и VBA

с использованием специальных инструкций, реализующих циклы типа.

Цикл со счётчиком. Когда заранее известно, какое число повторений тела цикла необходимо выполнить, можно воспользоваться циклической инструкцией (оператором цикла со счётчиком) For … Next.

Блок-схема

Языки программирования Visual Basic и VBA

Тело цикла

F or Счётчик = НачЗнач То КонЗнач Step шаг

Тело цикла

Next Счётчик

Синтаксис оператора ForNext следующий: строка, начинающаяся с ключевого слова For, является заголовком цикла, а строка с ключевым словом Next – концом цикла, между ними располагаются операторы, являющиеся телом цикла.

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

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

Цикл с условием. Часто бывает так, что необходимо повторить тело цикла, но заранее не известно, какое количество раз надо это сделать. В таких случаях количество повторений зависит от некоторого условия. Такой цикл реализуется с помощью инструкции Do… Loop.

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

Проверка условия выхода из цикла проводится с помощью ключевых слов While или Until. Эти слова придают одному и тому же условию противоположный смысл. Ключевое слово While обеспечивает выполнение цикла, пока выполняется условие, то есть пока условие имеет значение «истина». Как только условие примет значение «ложь», выполнение цикла заканчивается. В этом случае условие является условием продолжения цикла.

Цикл с предусловием.

Блок-схема

Языки программирования Visual Basic и VBA

Тело цикла

Do While Условие

Тело цикла

Loop

Do Until Условие

Тело цикла

Loop

Ключевое слово Until обеспечивает выполнение цикла, пока не выполняется условие, то есть пока условие имеет значение «ложь». Как только условие примет значение «истина», выполнение цикла закончится. В этом случае условие является условием завершения цикла.

Условие выхода из цикла можно поставить в конце, после тела цикла. Такой цикл называется циклом с постусловием. Этот цикл реализуется также с помощью инструкции Do Loop.

Проверка условия выхода из цикла проводится с помощью ключевых слов While и Until.

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

Блок-схема

Языки программирования Visual Basic и VBA

Тело цикла

Do

Тело цикла

Loop While Условие

Do

Тело цикла

Loop Until Условие

При создании блок - схемы алгоритма нужно знать следующее

Блок-схема

Наиболее часто употребляемые блочные символы

Название символа

Графическое изображение

Комментарии

Пуск/Останов (блоки начала и конца алгоритма)

Указание на начало или конец алгоритма

Ввод/Вывод (блоки ввода, вывода)

Организация ввода/вывода в общем виде

Процесс (операторные блоки)

Выполнение вычислительного действия или

последовательности действий

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

Условие ( условный блок)

д а нет

Выбор направления выполне-ния алгоритма. Если условие,

записанное внутри ромба, выполняется, то управление передаётся по стрелке «да», в противном случае – по стрелке «нет». Таким образом, реализуется процесс изменения последовательности вычислений в зависимости от выполнения условия

Начало цикла с параметром

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

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

Предопределённый процесс

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

Печать сообщений

Вывод результатов на печать

Условия, которые требуют проверки при составлении блок-схемы.

Из каждого прямоугольника и параллелограмма (кроме конца алгоритма) должна выходить только одна стрелка.

В каждый прямоугольник и параллелограмм (кроме начала алгоритма) должна входить хотя бы одна стрелка.

В каждый ромб должна входить хотя бы одна стрелка, а выходить из него – две стрелки, помеченные словами «да» и «нет».

Знакомство с разработкой непосредственно программ необходимо начинать с терминологии.

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

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

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

Языки программирования являются разнообразными знаковыми системами для записи алгоритмов и выполняют две основные взаимосвязанные задачи:

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

  2. формируют концепции, используемые программистов при составлении программы.

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

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

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

Все существующие системы программирования обычно делят на машинно-ориентированные и машинно-независимые.

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

  • машинный язык, представляющий собой двоичные команды для конкретного процессора ЭВМ,

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

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

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

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

От этих недостатков избавлены машинно-независимые языки (высокого уровня), которые делятся на следующие виды:

  • процедурно-ориентированные (средства записи процедур или алгоритмов обработки информации для определенного круга задач) – Fortran, Basic, Pascal, C,

  • проблемно-ориентированные (средства для новых классов задач, например, в экспертных системах и системах искусственного интеллекта) - Lisp, Prolog,

  • объектно-ориентированные (средства развития процедурных и проблемных языков для классов предметных областей) – Visual Basic (аналог Basic), Delphi (аналог Pascal), Visual Fortran (аналог Fortran), С++, Prolog++.

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

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

Трансляторы подразделяются на два основных вида программ:

- интерпретаторы, проверяющие и выполняющие исходный код построчно по шагам,

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

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

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

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

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

Таблица 1 – Алфавит языков программирования

Символы

Наименование

A - Z, a - z

Заглавные и прописные буквы

0 - 9

цифры

пробелы

!

Восклицательный знак

#

диез

%

Знак процента

&

Знак амперсанда

$

Знак доллара

«

Двойные кавычки

Апостроф (одинарная кавычка)

.

точка

,

запятая

?

Вопросительный знак

;

Точка с запятой

:

двоеточие

+

Знак плюс

-

Знак минус

*

Знак Asterisk

/

Наклонная черта (слеш)

\

Обратная наклонная черта (обратный слеш)

^

Знак вставки

=

Знак равенства

<

Знак меньше

>

Знак больше

( )

Левая и правая скобки

_

Знак подчеркивания

̃̃

˜

Тильда

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

Например, одним из важнейших ключевых слов, дающих указание компьютеру на выведение информации на экран, в языке Basic служит обычно оператор Print (печать), а в Pascal – оператор Write (писать), для ввода информации с клавиатуры оператор Read (читать). Обычно ключевые слова и операторы объединяются в группы по своему функциональному назначению.

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

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

Величина – это отдельный информационный объект, имеющий имя, значение и тип.

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

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

В общем случае, величины (обычно переменные) разделяют на следующие типы:

- целые (целочисленные),

- вещественные,

- символьные,

- логические.

В большинстве языков программирования типы величин необходимо объявлять (определять) непосредственно перед записью программы, и обычно для объявления используется символ «двоеточие» (:).

Пример записи (объявления) величины или так называемый формат:

<имя величины> : <тип величины>

Символьные переменные иначе называют текстовыми или строковыми (от английского слова string). Для строковых переменных существуют следующие понятия:

- длина строки,

- пустая строка,

- конкатенация.

Длина строки (текста) – число символов, составляющих текст, включая пробелы и знаки препинания.

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

Конкатенация – объединение (склеивание) двух последовательностей в одну. Ее можно толковать как последовательное сложение символов текста (строк).

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

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

В программировании существует такое важное понятие, как команда или оператор присваивания.

Оператор (команда) присваивания – команда исполнителя, в результате которой переменная получает новое имя.

Формат команды присваивания (знаки := используются не во всех языках):

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

Оператор присваивания применяется для наименования как числовых, так и текстовых данных.

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

Отрицательные числа имеют знак минус, числа без знака считаются положительными.

Дробная часть числа от целой отделяется, как правило, точкой, а не запятой.

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

Примеры записи числовых данных:

Целое положительное число– 15238,

Целое отрицательное число– -15238,

Действительное число – 15238.325,

Действительное большое число – 5689000000.0 = 5.689 * 109 = 5.689Е+9,

Действительное малое число – 0.000000419 = 4.19 * 10-9 = 4.19Е-9.

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

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

Над числовыми данными совершаются вычисления – действия, которые обозначаются соответствующими арифметическими операторами. Арифметические операторы обозначаются знаками арифметических действий, размещаемыми на клавиатуре компьютера. Данные знаки помещены в таблице 2.

Таблица 2 – Арифметические действия, применяемые в программировании.

Знаки

Арифметические операторы

Приоритет

+

сложение

низкий

-

вычитание

низкий

*

умножение

высокий

/

деление

высокий

^

возведение в степень

Самый высокий

Арифметические операторы, как показано в таблице 2, имеют разные приоритеты исполнения: оператор высокого приоритета выполняется раньше низкого, а операторы одного приоритета выполняются последовательно слева направо. Самый высокий приоритет у арифметического оператора – возведения в степень.

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

Пример записи арифметического выражения:

5,02 5.0^2*17.0/ (3.5+4.0-2.3)

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

  1. целочисленное деление – (нахождение целого при делении),

  2. нахождение остатка от деления.

Целочисленное деление обозначается знаком обратного слеша \ или используется ключевое слово DIV.

Например, 14:5 – это 2 целых, и остаток 4.

14 DIV 5 равно 2.

Округление в данной операции неприменимо.

Для нахождения остатка используется ключевое слово MOD.

14 MOD 5 равно 4.

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

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

  • запись и редактирование текста программ,

  • запуск программ на выполнение,

  • сохранение программ в виде файлов на диске.

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

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

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

В дальнейшем можно открыть текстовый файл программы, отредактировать его и модифицировать программный исполняющий файл.

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

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

- автоматически в тексте программы с помощью описанных выше операторов присваивания,

- с использованием клавиатуры вручную.

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

При этом в процессе выполнения программы совершаются следующие действия:

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

  2. программа приостанавливает работу и ждет, когда вы наберете какие-либо значения на клавиатуре. Для окончания ввода обычно нажимается клавиша ENTER.

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

В языке BASIC оператор ввода обозначается ключевым словом INPUT, язык PASCAL обычно использует оператор READ(), т. е. указание компьютеру «Читай».

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

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

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

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

  • числовые функции,

  • текстовые функции,

  • функции определения ошибок,

  • функции для работы с экраном и форматирования текста,

  • функции для работы с файлами,

  • функции для работы с внешними устройствами,

  • функции для доступа к памяти компьютера.

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

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

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

sinx → sin (x),

cosx → cos (x),

tgx → tan (x),

Абсолютное значение (модуль) числа обозначается:

|x| → abs (x),

Экспонента числа:

exexp (x),

Квадратный корень из числа:

sqr (x), и т. д.

Таким образом, математическое выражение x2 +3 ex +cos(x+1) - |sin(x-2)| в языках программирования представляется в виде следующей последовательности:

x^2 + 3*exp(x) + cos(x+1) –abs(sin(x+2)).

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

Блок-схема данного линейного алгоритма показана на рисунке 4.

Пример 1. Вычислить при x=2,3

В общем случае, алгоритм решения имеет следующее описание:

Начало

ввести ‘x:=2.3’

y:=(x^3 +5*x+cos(x+1))/(x-exp(x))

напечатать (‘y=’;y)

конец.

Рисунок 4 – Блок-схема простейшего линейного алгоритма.

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

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

Для этого кроме операторов ввода используют операторы вывода (например, те же PRINT или WRITE), а также стандартные функции, которые позволяют выводить информацию на экран в любой форме и получать результат, отличающийся от простого использования знаков препинания. Так, например, в языке BASIC можно применять дополнительные возможности оператора PRINT, при которых обеспечивается вывод данных в виде колонки или одной строкой, таблицей или с пробелами. Стандартная функция TAB может установить позицию, с которой информация будет выводиться на экран, а функция SPC позволяет разделять результата вывода пробелами.

Можно также использовать оператор PRINT USING, который позволяет:

  • размещать числа в колонках, выравнивая их по десятичной точке,

  • выводить часть текстовой информации,

  • ставить знак $ сразу перед числом,

  • выводить любое число в экспоненциальной форме,

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

В языке PASCAL также существуют дополнительные возможности для форматирования вывода информации на экран.

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

Для пояснения текстов в программах используются комментарии, которые размещаются в листинге программы или включаются в текст выводимой на экран информации при выполнении программы с помощью специальных разделяющих знаков. Например, в BASIC комментарии разделяются апострофом или оператором REM, в PASCAL кавычками, и выводятся на экран с применением операторов вывода. Без вывода на экран при выполнении программы комментарии игнорируются, однако они содержат полезные сведения при рассмотрении листинга программы.

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

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

- константы,

- переменные,

- массивы,

- файлы.

Константы – это фиксированные одиночные числовые ли текстовые значения, которые не могут изменяться в ходе выполнения программы.

Как правило, константы определяются в начале программы и обозначаются ключевым словом const. Например, в PASCAL обозначим –pi= const . в данном случае pi – это число π, которое можно считать равным 3,14.

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

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

В общем случае, условные операторы позволяют выбирать различные варианты выполнения программ. К ним относятся оператор безусловного перехода (GO TO), условного перехода (IF - THEN), сложные структурные операторы (IF - THEN – ELSE и SELECT - CASE).

Оператор IF (ЕСЛИ) применяется для создания многоуровневых проверок – с использование вложенных операторов IF или с использованием многоуровневых построений с данными операторами.

Условный структурный оператор IF - THEN – ELSE (ЕСЛИ…ТОГДА, ИНАЧЕ…) включает в себя целый блок действий.

Формат данного условного оператора:

IF <условие – логическое выражение> THEN операторы 1 ELSE операторы 2.

При этом если условие истинно, то выполняются операторы 1, если ложно - операторы 2.

Структурный оператор SELECT – CASE проверяет логическое действие («истина» или «ложь») и определяет оператор, который выполняется следующим.

Формат данного оператора имеет вид:

SELECT CASE <выражение>

CASE <условие> операторы 1

CASE <условие> операторы 2

CASE ELSE операторы 3

CASE ELSE операторы 4

END CASE SELECT

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

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

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

Операторы сравнения могут выдавать один из двух результатов: «истина» или «ложь». Операторы сравнения, принятые в языках программирования, представлены в таблице 3.

Таблица 3 – Операторы сравнения в программировании.

Знак

Значение операции

Пример

=

равно

4=4

<>

не равно

5<>6

>

больше

8>7

<

меньше

3<6

>=

больше или равно

9>=9

<=

меньше или равно

8<=9

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

Таблица 4 – Логические операторы в программировании.

Имя оператора

Наименование операции

AND

Конъюнкция (логическое умножение)

OR

Дизъюнкция (логическое сложение)

NOT

Инверсия (логическое отрицание)

EQV

Эквивалентность

IMP

Импликация

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

Пример 2. Вывести на экран компьютера сообщение о возрасте пользователя, который вводит свой год рождения с клавиатуры. Для этого построить блок-схему алгоритма, при котором, если возраст пользователя (YOUR AGE) меньше 7 лет, то выводится сообщение: «Вы ребенок», если меньше 18 лет – «Вы подросток», меньше 21 года – «Вы юноша», больше 21 года – «Вы взрослый». При этом вывести данные о возможных ошибках (когда вводится данные, меньше 0).

Решение. В блок-схеме используются последовательно операторы IF, в которых закладываются условия:

Блок 1. Проверка условия: ЕСЛИ меньше 0, то вывод «ошибка», больше 0, переход к следующему блоку.

Блок 2. Проверка условия: ЕСЛИ меньше и равно 7, то вывод «Вы ребенок», больше 7, переход к следующему блоку.

Блок 3. Проверка условия: ЕСЛИ меньше 18, то вывод «Вы подросток», больше и равно 18, переход к следующему блоку.

Блок 4. Проверка условия: ЕСЛИ меньше 21, то вывод «Вы юноша», больше и равно 21, то вывод сообщения «Вы взрослый».

Блок-схема данного алгоритма представлена на рисунке 5.

Рисунок 5 - Блок-схема разветвляющегося алгоритма примера 2.

Пример 3. Вводятся последовательно значения трех переменных А, В, С. Вывести на экран наименьшее из этих трех чисел.

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

Блок 1. Вводится число А.

Блок 2. Присваиваем А значение MIN - А:= MIN.

Блок 3. Вводится число В.

Блок 4. Сравниваем MIN и В. Проверка условия: ЕСЛИ MIN меньше В, то присваиваем MIN:= MIN, MIN больше В, то присваиваем В:= MIN.

Блок 5. Вводится число С.

Блок 6. Сравниваем MIN и С. Проверка условия: ЕСЛИ MIN меньше С, то присваиваем MIN:= MIN, MIN больше С, то присваиваем С:= MIN.

Блок 7. Выводим на экран значение MIN.

Блок-схема данного алгоритма представлена на рисунке 6.

Рисунок 6 - Блок-схема разветвляющегося алгоритма примера 3.

Пример 4. Чему будет равно значение переменной S после выполнения фрагмента программы, представленной на блок-схеме рисунка 7.

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

Рисунок 7 -Блок-схема фрагмента разветвляющегося алгоритма примера 4.

Так, по приведенному рисунку алгоритма выявлены следующие действия над соответствующими данными:

  1. Вводится постоянная величина M, равная 10.

  2. Автоматически присваиваются переменным следующие значения –a:=10, b:=1, c:=2.

  3. Вводится переменная S, равная 4.

  4. Ставится условие, что переменная c должна быть меньше или равной постоянной M.

  5. При выполнении данного условия переменным должны присваиваться следующие значения – a:=b, b:=c, c:=a+b, S:=S+c, а также организуется программный счетчик подсчета количества шагов – c:=c-1.

  6. Если условие не выполняется, то переменной S присваивается значение S:=S-c.

  7. В результате фрагмента алгоритма значение переменной S выводится на экран.

Вычислительная таблица примера представлена в таблице 6.

Таблица 6. –Вычислительный процесс примера 4.

Вводимые величины M=10, a:=10, b:=1, c:=2, S:=4

Шаг 1

Значения

Условие выполнения цикла

c<=M

c=2, M=10

True

a:=b, b:=c, c:=a+b, S:=S+c, c:=c-1

False

S:=S-c

Выполняемые действия и результаты a:=1, b:=2, c:=1+2=3, S:=4+3=7, c:=3-1=2

Шаг 2

Значения

Условие выполнения цикла c<=M

c=2, M=10

True

a:=b, b:=c, c:=a+b, S:=S+c, c:=c-1

False

S:=S-c

Выполняемые действия и результаты a:=2, b:=2, c:=2+2=4, S:=7+4=11, c:=4-1=3

Шаг 3

Значения

Условие выполнения цикла c<=M

c=3, M=10

True

a:= b, b:=c, c:=a+b, S:=S+c, c:=c-1

False

S:=S-c

Выполняемые действия и результаты a:= 2, b:=3,

c:=2 +3=5, S:=11+5=16, c:=5-1=4

Шаг 4

Значения

Условие выполнения цикла c<=M

c=4, M=10

True

a:=b, b:=c, c:=a+b, S:=S+c, c:=c-1

False

S:=S-c

Выполняемые действия и результаты a:=3, b:=4, c:=3+4 =7, S:=16+7=23, c:=7-1=6

Шаг 5

Значения

Условие выполнения цикла c<=M

c=6, M=10

True a:=b, b:=c, c:=a+b, S:=S+c, c:=c-1

Выполняемые действия и результаты a:=4, b:=6, c:=4+6=10, S:=23+10=33, c:=10-1=9

Шаг 6

Значения

Условие выполнения цикла c<=M

c=9, M=10

True a:=b, b:=c, c:=a+b, S:=S+c, c:=c-1

Выполняемые действия и результаты a:=6, b:=9, c:=6+9=15, S:=33+15=48, c:=15-1=14

Шаг 7

Значения

Условие выполнения цикла c<=M

c=14, M=10

False S:=S-c

Выполняемые действия и результаты S:=S-c=48-14=34

Выводимые результаты S=34

Ответ: S=34.

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

1. ввод,

2. вывод,

3. ветвление (полное и неполное),

4. цикл (с предусловием, с постусловием и с параметром).

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

Операторы циклов (или повторений) – это операторы, которые обеспечивают повторение одних и тех же действий.

Существует несколько разновидностей операторов циклов. Одним из наиболее часто встречающихся операторов является оператор с параметром (со счетчиком) или оператор FOR.

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

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

Начало цикла: для <параметр цикла> от <начальное значение> до <конечное значение> <тело оператора цикла> конец цикла,

где <параметр цикла> - имя переменной, являющейся параметром цикла, значение которой меняется при повторении действий, <начальное значение> и <конечное значение> - соответствующие начальные (меньшее) и конечное (как правило, большее), значение данной переменной. Здесь предполагается, что изменение происходит с шагом, равным 1, а <тело оператора цикла> - это повторяющиеся операторы.

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

Для языка программирования PASCAL цикл с параметром I имеет следующие основные форматы:

  1. for I:=Iн to Iк do <тело цикла>

  2. for I:=Iн down to Iк do <тело цикла>,

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

Рисунок – Блок-схема цикла с оператором - параметром.

Пример 5. Вывести целые числа от 10 до 20 на экран компьютера.

Решение. Используем оператор с параметром i, при этом начальное значение оператора i равно 10, конечное 20. Блок-схема представлена на рисунке 9, при этом считаем, что, параметр цикла i – целое число.

Рисунок 9 – Блок-схема алгоритма решения примера.

Если необходимо, можно изменить шаг параметра в цикле, тогда значение переменной в примере нужно записать i: = i + [шаг].

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

Начало цикла: для <параметр цикла> от 1 до 10 <действия в цикле> конец цикла.

При этом переменная <параметр цикла> в теле оператора цикла вообще не используется, и она играет роль счетчика количества повторений.

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

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

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

Начало цикла: пока <условие> <тело оператора цикла> конец цикла,

где <условие> – условие, при котором выполняется <тело оператора цикла>. На рисунке 10 показана блок-схема такого цикла.

Рисунок 10 – Блок-схема цикла с оператором-предусловием.

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

DO LOOP WHILE <условие>

Для языка PASCAL формат цикла имеет вид:

While < условие – логическое выражение> do <тело цикла>.

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

  1. Определите действия, при котором нужно выполнять повторяющиеся действия;

  2. запишите в операторе цикла условие, противоположное найденному действию.

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

С данным оператором также организуют пустые циклы для реализации паузы в программе.

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

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

Начало цикла: <тело оператора цикла> при <условие> конец цикла,

где <условие> – условие, при котором прекращает действие <тело оператора цикла>. На рисунке 11 показана блок-схема такого цикла.

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

DO UNTIL <условие>….LOOP.

Рисунок 11 – Блок-схема цикла с оператором-постусловием.

Для языка PASCAL формат цикла имеет вид:

repeat <тело цикла> until < условие – логическое выражение> .

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

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

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

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

  • не переопределять переменную параметра (счетчика) внутри цикла – т. е. не присваивать ей других значений во время выполнения цикла;

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

  • не передавать управление внутрь цикла.

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

  • внутренний цикл должен заканчиваться раньше, чем внешний;

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

Пример 6. Организация циклических процессов.

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

Решение. Вводим следующие обозначения:

I - значение индекса элемента массива по строке,

J - значение индекса элемента массива по столбцу,

A(I,J) - имя элемента массива.

Условие нахождения требуемого элемента массива A(I,J) =I+J,

m - количество элементов массива с требуемыми свойствами.

Для составления блок-схемы алгоритма определяем следующие циклы:

- ввод элементов двумерного массива с использованием параметрических циклов по I и J,

- цикл проверки условия нахождения требуемого элемента массива - A(I,J) =I+J с определением их количества m,

- проверка количества найденных элементов, т. е. m>0,

- цикл вывода на экран требуемых элементов массива,

Выражения, выводимые на экран:

- элементы массива, у которых значение элемента равно сумме значений индексов массива,

- таких чисел в массиве нет.

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

Также необходимо применить два раза оператор ЕСЛИ для проверки существования элементов с заданными условиями и для вывода на экран найденных элементов.

С учетом вышесказанного блок-схема данного алгоритма приведена на рисунке 12.

Рисунок 12 – Блок-схема циклического алгоритма примера 6.