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

Применение очередей

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

Способы описания алгоритмов

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

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

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

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

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

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

Какую последовательность действий нужно выполнить, чтобы позвонить по телефону автомату?

  1. Вставить телефонную карточку.

  2. Снять трубку.

  3. Набрать номер.

Машинный код

Машинный код (также употребляются термины собственный код, или платформенно-ориентированный код, или родной код, или нативный код — от англ. native code) — система команд конкретной вычислительной машины, которая интерпретируется непосредственно микропроцессором или микропрограммами данной вычислительной машины.

Каждая модель процессора имеет свой собственный набор команд, хотя во многих моделях эти наборы команд сильно перекрываются. Говорят, что процессор A совместим с процессором B, если процессор A полностью «понимает» машинный код процессора B. Если процессор A знает несколько команд, которых не понимает процессор B, то B несовместим с A.

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

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

Блок-схемы можно раcсматривать как графическую альтернативу псевдокоду. В отличие от стандартизации синтаксиса языков программирования, на синтаксис псевдокода обычно не устанавливается стандартов, так как последний непосредственно не компилируется в исполняемую программу. Поэтому можно сказать, что обычно автор каждый публикации применяет свой оригинальный псевдокод, однако чтобы быть максимально понятным читателям, авторы публикаций содержащих псевдокод, как правило, заимствуют нужные им конструкции из какого-либо языка программирования. Зачастую источником псевдокода служат несколько языков, и таким образом псевдокод часто не содержит специфических признаков конкретного языка программирования. Кроме того, математические выражения часто включаются в псевдокод в том виде, как их принято записывать в математике, а не в языках программирования, а некоторые фрагменты псевдокода могут быть фразами естественного языка (русского, английского и т. д.). Однако при этом конструкции некоторых языков программирования чаще используются для псевдокода. Так, например, очень часто используется синтаксис, похожий на синтаксис языка Паскаль. Это объясняется тем, что Паскаль создавался как язык, ориентированный на задачи обучения программированию, и поэтому синтаксис этого языка особенно приспособлен для восприятия человеком. Часто используются и другие языки: Си, Алгол, Фортран и другие.

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

Таблица 1- Основные блоки

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

Обозначение

Функции

Процесс

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

Ввод-вывод (данные)

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

Условие

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

Продолжение таблицы 1- Основные блоки

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

Обозначение

Функции

Предопределённый (типовой) процесс

Использование ранее созданных и отдельно написанных программ (подпрограмм)

Документ

Вывод данных на бумажный носитель.

Магнитный диск

Ввод-вывод данных, носителем которых служит магнитный диск

Пуск-останов

Начало, конец, прерывание процесса обработки данных.

Соединитель

Указание связи между прерванными линиями, соединяющими блоки

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

Рассмотрим линейный алгоритм, представленный в таблице 2.

Таблица 2 - Способы описания линейного алгоритма

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

Таблица 3 - Способы описания разветвляющегося алгоритма

Рассмотрим циклический алгоритм нахождения суммы первых натуральных нечетных чисел до n. Представим запись алгоритма тремя способами: в виде блок-схемы, в виде псевдокодов и на языке программирования Pascal. Пример представлен в таблице 4.

Блок-схема состоит из следующих базовых структур:

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

  • простая команда.

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

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

Таблица 4 - Способы описания циклического алгоритма