Тест с ответами: «Алгоритмы»
2. Свойство алгоритма, которое означает, что он задан с помощью таких предписаний, которые исполнитель может воспринимать и по которым может выполнять требуемые действия:
а) массовость
б) понятность +
в) определённость
3. Свойство алгоритма, которое означает, что он всегда приводит к результату через конечное, возможно, очень большое, число шагов:
а) дискретность
б) определённость
в) результативность +
4. Определите, какой фигурой обозначается начало-конец (вход-выход):
а) прямоугольник
б) овал +
в) ромб
5. Определите, какой фигурой обозначается блок ввода-вывода:
а) прямоугольник
б) квадрат
в) параллелограмм +
6. Выберите, какой фигурой обозначается логический блок:
а) овал
б) ромб +
в) прямоугольник
7. Определите, какой фигурой обозначается блок вычислений:
а) прямоугольник +
б) квадрат
в) параллелограмм
8. Отметьте правильный вариант записи условия «х — двузначное число»:
а) (х>=10) И (х <100) +
б) х mod 100 = 99
в) х div 100 = 0
9. Среди четырёх монет есть одна фальшивая. Неизвестно, легче она или тяжелее настоящей. Какое минимальное количество взвешиваний необходимо сделать на весах с двумя чашками без гирь, чтобы определить фальшивую монету:
а) 4
б) 2 +
в) 3
10. Появление алгоритмов связывают с зарождением этой науки:
а) астрономии
б) физики
в) математики +
11. Графический способ представления алгоритма, каждое действие при этом осуществляется рисованием последовательности геометрических фигур, каждая из которых подразумевает выполнение определенного действия алгоритма:
а) фотография
б) блок-схема +
в) картинка
12. Если алгоритм предназначен для исполнения техническим устройством, например станком с числовым программным управлением или компьютером, он представляется в виде:
а) процессора
б) файлов
в) программы +
13. На понятии чего основано решение задач на компьютере?
а) информативности
б) алгоритма +
в) искусственного интеллекта
14. Формульно-словесный способ записи алгоритма характеризуется тем, что описание осуществляется с помощью:
а) слов +
б) цифр
в) специальных знаков
15. Формульно-словесный способ записи алгоритма характеризуется тем, что описание осуществляется с помощью:
а) аксиом
б) специальных знаков
в) формул +
16. При графическом способе описания алгоритма осуществляется с помощью чего:
а) таблиц
б) схем
в) блок-схем +
17. Алгоритм, который записан словесным способом:
а) компьютер
б) рецепт блюда +
в) рисунок
18. Такое описание имеет минимум ограничений и является наименее формализованным:
а) на алгоритмических языках
б) графическое
в) словесное +
19. Наилучшей наглядностью обладают такие способы записи алгоритмов:
а) словесные
б) графические +
в) на алгоритмических языках
20. Графический документ, дающий представление о порядке работы алгоритма:
а) блок-схема +
б) схема
в) таблица
21. Специальное средство, которое предназначено для записи алгоритмов в аналитическом виде:
а) алгоритмические языки +
б) алгоритмические навыки
в) алгоритмические эксперименты
22. Алгоритм, где все действия выполняются последовательно друг за другом и только один раз:
а) одиночный алгоритм
б) линейный алгоритм +
в) не повторяющийся алгоритм
23. Формальные языки, которые предназначены для записи алгоритмов:
а) ритмические языки
б) алгоритмические методы
в) алгоритмические языки +
24. Один из способов записи алгоритмов:
а) отвесный
б) словесный +
в) главный
25. Запись алгоритма на языке программирования (в виде компьютерной программы):
а) графический способ
б) словесный способ
в) программный способ +
26. Набор используемых символов называется так:
а) алфавит +
б) синтаксис
в) семантика
27. Система правил, строго определяющей смысл и способ употребления конструкций языка:
а) алфавит
б) семантика +
в) синтаксис
28. Алгоритм может быть задан таким способом:
а) словесным +
б) устным
в) словесно-графическим
29. Алгоритм может быть задан таким способом:
а) географическим
б) графическим +
в) последовательностью байтов
30. Алгоритм может быть задан данным способом:
а) словесно-графическим
б) формально-устным
в) формально-словесным +
Задание 3. Почему язык программирования Паскаль считается универсальным?
Универсален потому, что он применяется для записи алгоритмов разных задач: вычислительные, обработка текстов, построение графических изображений, поиск информации и так далее).
Состав алфавита Паскаль:
• латинские прописные буквы (A, B, C, …, X, Y, Z);
• латинские строчные буквы ( a, b, c, …, x, y, z);
• арабские цифры (0, 1, 2, …, 7, 8, 9);
• специальные символы (знак подчёркивания; знаки препинания; круглые, квадратные и фигурные скобки; знаки арифметических операций и др.).
Неделимые элементы:
:= (знак присваивания); >= и <> (знак неравно);
(* Текст *) (начало и конец комментария).
Алгоритм. Свойства алгоритмов. Способы записи алгоритмов. Основные структуры алгоритмов.
Алгоритмом называется точное и понятное предписаниe исполнителю совершить последовательность действий, направленных на решение поставленной задачи. Слово «алгоритм» происходит от имени математика Аль Хорезми, который сформулировал правила выполнения арифметических действий. Первоначально под алгоритмом понимали только правила выполнения четырех арифметических действий над числами. В дальнейшем это понятие стали использовать вообще для обозначения последовательности действий, приводящих к решению любой поставленной задачи. Говоря об алгоритме вычислительного процесса, необходимо понимать, что объектами, к которым применялся алгоритм, являются данные. Алгоритм решения вычислительной задачи представляет собой совокупность правил преобразования исходных данных в результатные.
Основными свойствами алгоритма являются:
- детерминированность (определенность). Предполагает получение однозначного результата вычислительного процecca при заданных исходных данных. Благодаря этому свойству процесс выполнения алгоритма носит механический характер;
- результативность. Указывает на наличие таких исходных данных, для которых реализуемый по заданному алгоритму вычислительный процесс должен через конечное число шагов остановиться и выдать искомый результат;
- массовость. Это свойство предполагает, что алгоритм должен быть пригоден для решения всех задач данного типа;
- дискретность. Означает расчлененность определяемого алгоритмом вычислительного процесса на отдельные этапы, возможность выполнения которых исполнителем (компьютером) не вызывает сомнений.
Алгоритм должен быть формализован по некоторым правилам посредством конкретных изобразительных средств. К ним относятся следующие способы записи алгоритмов: словесный, формульно-словесный, графический, язык операторных схем, алгоритмический язык.
Наибольшее распространение благодаря своей наглядности получил графический (блок-схемный) способ записи алгоритмов.
Блок-схемой называется графическое изображение логической структуры алгоритма, в котором каждый этап процесса обработки информации представляется в виде геометрических символов (блоков), имеющих определенную конфигурацию в зависимости от характера выполняемых операций. Перечень символов, их наименование, отображаемые ими функции, форма и размеры определяются ГОСТами.
При всем многообразии алгоритмов решения задач в них можно выделить три основных вида вычислительных процессов:
- линейный;
- ветвящийся;
- циклический.
Линейным называется такой вычислительный процесс, при котором все этапы решения задачи выполняются в естественном порядке следования записи этих этапов.
Ветвящимся называется такой вычислительный процесс, в котором выбор направления обработки информации зависит от исходных или промежуточных данных (от результатов проверки выполнения какого-либо логического условия).
Циклом называется многократно повторяемый участок вычислений. Вычислительный процесс, содержащий один или несколько циклов, называется циклическим . По количеству выполнения циклы делятся на циклы с определенным (заранее заданным) числом повторений и циклы с неопределенным числом повторений. Количество повторений последних зависит от соблюдения некоторого условия, задающего необходимость выполнения цикла. При этом условие может проверяться в начале цикла — тогда речь идет о цикле с предусловием, или в конце — тогда это цикл с постусловием.
Выделяют три наиболее распространенные на практике способа записи алгоритмов:
- словесный (запись на естественном языке);
- графический (запись с использованием графических символов);
- программный (тексты на языках программирования).
Словесный способ – способ записи алгоритма на естественном языке. Данный способ очень удобен, если нужно приближенно описать суть алгоритма. Однако при словесном описании не всегда удается ясно и точно выразить логику действий.
В качестве примера словесного способа записи алгоритма рассмотрим алгоритм нахождения площади прямоугольника
где S – площадь прямоугольника; а, b – длины его сторон.
Очевидно, что a, b должны быть заданы заранее, иначе задачу решить невозможно.
Словестный способ записи алгоритма выглядит так:
- Начало алгоритма.
- Задать численное значение стороны a.
- Задать численное значение стороны b.
- Вычислить площадь S прямоугольника по формуле S=a*b.
- Вывести результат вычислений.
- Конец алгоритма.
Для более наглядного представления алгоритма используется графический способ. Существует несколько способов графического описания алгоритмов. Наиболее широко используемым на практике графическим описанием алгоритмов является использование блок-схем. Несомненное достоинство блок схем – наглядность и простота записи алгоритма.
Каждому действию алгоритма соответствует геометрическая фигура (блочный символ). Перечень наиболее часто употребляемых символов приведен в таблице:
Название символа | Обозначение и пример заполнения |
Пояснения |
Пуск-останов | Начало, завершение алгоритма или подпрограммы | |
Ввод-вывод данных | Ввод исходных данных или вывод результатов | |
Процесс | Внутри прямоугольника записывается действие, например, расчетная формула | |
Решение | Проверка условия, в зависимости от которого меняется направление выполнения алгоритма | |
Модификация | Организация цикла | |
Предопределенный процесс | Использование ранее созданных подпрограмм | |
Комментарий | Пояснения |
- блок Процесс обозначает вычислительный процесс и применяется для обозначения действия или последовательности действий, изменяющих значения переменных или данных
- блок Решение обозначает проверку условия
Если условие выполняется, то есть a>b, то следующим выполняется действие по стрелке «Да». Если условие не выполняется, то осуществляется переход по стрелке «Нет».
- блок Модификация используется для организации циклических (повторяющихся) действий.
В качестве примера графического способа описания алгоритмов с помощью блок-схем запишем алгоритм нахождения площади прямоугольника:
Внутри каждого блока записывается соответствующее действие. Последовательность выполнения задается соединительной линией со стрелочкой.
Последовательность выполнения сверху вниз и слева направо принята за основную.
Если в алгоритме не нарушается основная последовательность, то стрелочки можно не указывать. В остальных случаях последовательность выполнения блоков обозначается стрелочкой обязательно. В нашем примере основная последовательность выполнения – сверху вниз.
Способ записи алгоритмов с помощью блок-схем нагляден и точен для понимания сути алгоритма, тем не менее, алгоритм предназначен для исполнения на компьютере, а язык блок-схем компьютер не воспринимает. Поэтому алгоритм должен быть записан на языке, понятном компьютеру с абсолютно точной и однозначной записью команд.
Таким образом, алгоритм должен быть записан на каком-то промежуточном языке, с точными и однозначными правилами и отличном от естественного языка и языка блок-схем, но понятном компьютеру. Такой язык принято называть языком программирования.
Программный способ записи алгоритма – это запись алгоритма на языке программирования, позволяющем на основе строго определенных правил формировать последовательность предписаний, однозначно отражающих смысл и содержание алгоритма, с целью его последующего исполнения на компьютере.
Алгоритм записанный на языке программирования и выполняется компьютером 9 букв
4. Алгоритмы и языки программирования
4.1. Понятие алгоритма
Понятие алгоритма относится к основным понятиям информатики. Рассмотрим основные понятия, связанные с понятием алгоритма.
Когда речь идет об алгоритме, всегда подразумевается существование некоторого исполнителя, для которого предназначен алгоритм.
Исполнитель – человек или автомат (например, компьютер), который умеет выполнять определенный конечный набор действий.
Предписание – приказ на выполнение действий из указанного конечного набора.
Система предписаний – совокупность допустимых приказов.
Программа – конечная последовательность предписаний с указанием порядка их выполнения.
В случае, когда исполнителем является компьютер, предписание называется командой, а система предписаний называется системой команд компьютера. Разные компьютеры в зависимости от их устройства могут иметь разные системы команд.
Программирование – составление последовательности команд, которая необходима для решения поставленной задачи.
Составлению программы предшествует разработка алгоритма.
Алгоритм – это точное и понятное указание исполнителю совершить конечную последовательность действий, направленных на достижение указанной цели или на решение поставленной задачи.
Любой алгоритм обладает следующими свойствами:
- Дискретность. Выполнение алгоритма разбивается на последовательность элементарных действий – шагов. Каждое действие должно быть закончено исполнителем прежде, чем он перейдет к выполнению следующего действия. Произвести каждое отдельное действие исполнителю предписывает специальное указание в записи алгоритма, называемое командой.
- Точность или детерминированность. Запись алгоритма должна быть такой, чтобы, выполнив очередную команду, исполнитель точно знал, какую команду надо выполнять следующей.
- Понятность. Каждый алгоритм строится в расчете на конкретного исполнителя, который должен быть в состоянии выполнить каждую команду алгоритма в строгом соответствии с ее назначением.
- Результативность.При точном исполнении всех предписаний алгоритма процесс должен завершится за конечное число шагов и при этом должен быть получен какой-либо ответ на поставленную задачу. В качестве одного из возможных решений может быть установление того факта, что задача не имеет решения
- Массовость. помощью одного и того же алгоритма можно решать однотипные задачи и делать это неоднократно. Свойство массовости значительно увеличивает практическую ценность алгоритмов.
Большая ценность алгоритмов заключается в том, что исполнитель может не вникать в смысл того, что он делает, и вместе с тем получать нуж больше знаний, чем от исполнителя.
Простейшие операции, на которые распадается процесс решения задачи, может реализовать автоматическое устройство, специально созданное для выполнения отдельных команд алгоритма в указанной последовательности. Если удается получить алгоритм решения какой-нибудь задачи, появляется возможность создать машину, которая автоматизировала бы ее решение.
Каждый алгоритм предполагает наличие некоторых исходных данных. Например, для медицинского рецепта (алгоритма) исходными данными являются медикаменты, а результатом – флакон с готовым лекарством. Для алгоритма сложения исходными данными являются пара слагаемых, а результатом – их сумма. Для каждого алгоритма существует класс объектов, допустимых в качестве исходных данных. Иногда исходными данными являются материальные объекты, а иногда – числа.
Алгоритм – это правило, следовательно, оно должно быть сформулировано на некотором языке. Исходные данные и искомые результаты также должны быть описаны на некотором языке, возможно отличном от языка, на котором описан алгоритм.
Таким образом, каждый алгоритм связан с двумя языками: на одном он сформулирован сам, предложения другого являются для него допустимыми вариантами исходных данных.
Разработка алгоритма решения задачи называется алгоритмизацией. В процессе алгоритмизации задача сводится к построению последовательности шагов, расположенных в определенном порядке.
Между алгоритмами и программами нет четкого разграничения. Программой обычно называют алгоритм решения задачи, рассчитанный на исполнение его компьютером и записанный с помощью предложений используемого языка программирования.
Алгоритмической структурой называется стандартный способ соединения отдельных шагов алгоритма для выполнения типичной последовательности действий.
В теории алгоритмов доказывается, что любой алгоритм может быть представлен в виде комбинации трех алгоритмических структур: следования, развилки и цикла.
Следование. Представляет собой последовательное выполнение действий (рис. 12).
Рис. 12. Следование.
Развилка. Применяется в случае, когда в зависимости от истинности некоторого логического условия необходимо выполнить то или иное действие (рис. 13).
Действия 1 и 2 могут, в свою очередь, включать в себя другие алгоритмические структуры.
Цикл. Применяется, когда некоторые действия необходимо выполнить несколько раз. Существуют две разновидности цикла.
Цикл До. Применяется, когда некоторые операции надо повторять до тех пор, пока некоторое условие не станет ложным (рис. 14).
Рис. 14. Цикл До.
Под начальными присвоениями подразумеваются операции присвоения исходных значений переменным, используемым в цикле. Многократно повторяемая последовательность действий называется телом цикла.
Цикл Пока. Применяется, когда некоторые операции надо повторять до тех пор, пока некоторое условие не станет истинным (рис. 15).
Рис. 15. Цикл Пока.
4.2. Понятие языка
Естественный язык – социальное средство хранения и передачи информации, одно из самых эффективных средств управления поведением человека. Он неразрывно связан с мышлением и существует в виде речи.
Кроме естественного языка существуют искусственные языки, целенаправленно сконструированные для:
- международного общения (эсперанто, интерлингва);
- автоматической обработки данных с помощью ЭВМ (языки программирования);
- записи информации из определенной области науки и техники (информационные языки).
Основой любого естественного или искусственного языка является алфавит, состоящий из некоторого множества символов или букв. Последовательности букв образуют слова. Однако не любая последовательность букв образует правильное слово с точки зрения данного языка. Совокупность правил, позволяющих строить правильные слова, называется грамматикой.
Слова могут объединяться в более сложные конструкции – предложения. Предложения строятся из слов и более простых предложений по определенным правилам. Совокупность правил, с помощью которых строятся правильные предложения, называется синтаксисом.
Каждому правильному предложению языка приписывается некоторый смысл. Совокупность правил, с помощью которых предложениям ставится в соответствие смысл, называется семантикой.
Естественный язык является универсальным в том смысле, что с его помощью может быть представлена любая информация. Однако он обладает особенностями, делающими его неудобным для записи алгоритмов. Эти особенности следующие:
- зависимость синтаксиса от семантики;
- многозначность смысла предложений;
- расплывчатость смысла предложений и возможность парадоксальных предложений.
Зависимость синтаксиса от семантики заключается в том, что способ построения предложения зависит от его смысла. Например, правильность предложения
Кравченко пришел домой
зависит от того, является ли Кравченко мужчиной или женщиной.
Зависимость синтаксиса от семантики означает, что для распознавания правильности предложения нужно знать его смысл.
Приведем пример многозначности естественного языка:
Я вижу косу.
Здесь слово «коса» может означать сельскохозяйственное орудие, сплетение волос на голове или длинную узкую отмель, идущую вдоль берега.
Пример парадоксального предложения:
Если у состава отцепить последний вагон, то у состава не будет последнего вагона.
4.3. Языки программирования
Искусственные языки, предназначенные для записи программ, называются языками программирования или алгоритмическими языками. Все языки программирования делятся машинно-зависимые и машинно-независимые.
Машинно-зависимые языки зависят от типа компьютера. Каждый компьютер имеет свой собственный язык программирования – машинный язык – и может исполнять программы, записанные только на этом языке. Машинный язык включает в себя набор команд, выполняемых процессором данной конкретной машины. Команды на машинном языке представляют собой набор двоичных знаков.
Программирование на машинном языке сложно и практически не используется. Для упрощения программирования используются машинно-ориентированные языки. Различают два уровня машинно-ориентированных языков:
- языки символического кодирования (мнемокоды);
- макроязыки.
Мнемокод отличается от машинного языка заменой двоичных кодов операций и двоичных адресов операндов буквами или буквенно-цифровыми обозначениями. Перевод мнемокода на машинный язык выполняется с помощью специальной программы, называемой ассемблером. Ассемблер заменяет каждую команду мнемокода соответствующей командой машинного языка. Мнемокод часто называют языком ассемблера.
Макроязык, наряду с символическими аналогами машинных команд, содержит макрокоманды, не имеющие аналогов в машинном языке. При переводе на машинный язык каждая макрокоманда заменяется группой команд машинного языка. Это повышает производительность труда программиста.
Машинно-зависимые языки позволяют в наибольшей степени использовать возможности машины, однако требуют от программиста знания особенностей устройства машины. Эти языки используются для написания специального программного обеспечения.
Машинно-независимые языки не зависят от типа компьютера, на котором они используются. Машинно-независимые языки в отличие от машинно-зависимых называются языками высокого уровня. Они делятся на процедурно-ориентированные и проблемно-ориентированные языки.
Процедурно-ориентированные языки предназначены для описания алгоритмов решения задач и иногда называются универсальными языками программирования. Структура процедурно-ориентированных языков ближе к естественному языку, чем к машинному. Процедурно-ориентированными языками пользуются специалисты, знакомые с математическими формулировками решаемых задач, методами их решения и приемами программирования. Это могут быть как профессиональные программисты, так и специалисты в различных областях, хорошо владеющие программированием и методами решения задач в своей области.
При программировании на процедурно-ориентированных языках не требуется детального знания устройства компьютера. Наиболее широко используемыми языками высокого уровня являются БЭЙСИК, ПАСКАЛЬ, СИ.
Проблемно-ориентированные языки не требуют подробной записи алгоритма решения задачи. Пользователь должен лишь указать последовательность решения задач из ранее подготовленного набора, указать исходные данные и требуемую форму выдачи результата.
4.4. Процесс выполнения программы на ЭВМ
Для того чтобы программа могла быть выполненной, она должна быть помещена в оперативную память компьютера. Туда же должны быть помещены и исходные данные. Как правило, программа вводится в оперативную память с жесткого диска. Исходные данные вводятся с клавиатуры либо также с жесткого диска, куда они должны быть заранее помещены с помощью другой программы. Результаты своей работы программа помещает в определенную область оперативной памяти, откуда они могут быть выведены на какое-либо внешнее устройство, которым может быть жесткий диск, экран дисплея, печатающее устройство (рис.16).
Рис. 16. Распределение памяти при выполнении программы.
Процесс выполнения программы на ЭВМ разбивается на ряд этапов (рис. 17).
Рис.17. Процесс выполнения программы на ЭВМ.
Программа пишется программистом на одном из языков программирования. Процессор ЭВМ может реально выполнять только команды машинного языка. Преобразование исходного текста программы в машинные коды выполняется специальной программой – транслятором. Рассмотренный выше ассемблер является одной из разновидностей транслятора.
Трансляторы бывают двух видов: компиляторы и интерпретаторы.
Компилятор преобразует исходную программу на любом языке высокого уровня в некоторую стандартную форму на машинном языке, называемую объектным модулем.
Интерпретатор преобразует отдельные предложения исходного языка в машинный код и немедленно их исполняет. Интерпретатор не создает объектный модуль.
Преобразование текста на исходном языке, выполняемое транслятором, называется трансляцией. В процессе трансляции проверяется синтаксическая правильность предложений исходной программы и генерируется список обнаруженных ошибок. Объектный модуль формируется лишь при отсутствии синтаксических ошибок.
Некоторые части программы программист не пишет, а ссылается на них из своей программы, например, на программы управления вводом-выводом и пр. Они хранятся на внешнем запоминающем устройстве в библиотеке объектных модулей. Объектный модуль, сформированный компилятором, не может быть выполнен без объединения с этими модулями.
Все объектные модули генерируются в некотором стандартном виде. Поэтому различные части программы можно писать и транслировать независимо, помещая получаемые объектные модули в библиотеку объектных модулей. Это позволит разделить работу по написанию большой программы между несколькими программистами, каждый из которых может писать и отлаживать свою часть программы независимо. Даже если программист пишет программу самостоятельно, имеет смысл разбивать ее на ряд независимых частей, что позволяет вносить изменения в каждую из них, не затрагивая остальных частей.
Компилятор не может указать конкретный адрес оперативной памяти, начиная с которого будет располагаться формируемый объектный модуль, поскольку:
- размер получаемого объектного модуля не может быть заранее известен, поэтому существует опасность наложения в памяти различных модулей или появления неиспользуемых участков памяти;
- к моменту исполнения программы неизвестно, какие еще программы будут находиться в оперативной памяти.
Для решения этой проблемы транслятор формирует так называемые перемещаемые объектные модули. Начальный адрес перемещаемого объектного модуля в оперативной памяти компьютера определяется непосредственно при загрузке программы.
Программа, которая связывает независимо оттранслированные объектные модули в единую программу, называется редактором связей. Редактор связей имеет на входе объектные модули и генерирует на выходе загрузочный модуль, помещаемый на внешнее запоминающее устройство. Загрузочный модуль помещается в оперативную память специальной программой, называемой загрузчиком. Загрузчик определяет адрес загрузки программы в оперативную память исходя из сложившейся ситуации, помещает ее в оперативную память и передает управление на ее первую команду. Одна и та же программа при различных запусках может располагаться в различных местах оперативной памяти.