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

2.2. Понятие алгоритма и программы.

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

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

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

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

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

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

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

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

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

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

- формальном или словесно формульном;

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

- в виде программы на каком-то языке программирования.

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

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

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

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

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

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

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

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

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

Компилятор – осуществляет перевод всей программы на машинный язык, одновременно проверяя ее правильность и оптимизируя ее. Результатом является промежуточный объектный код (тип файла .obj). Затем с помощью сборщика (редактора связей) формируется исполнимый код (тип файла .exe). Запуск загрузочной программы, содержащей исполнимый код, обеспечивает решение задачи.

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

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

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

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

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

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

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

Самый распространенный язык программирования – Basic, второй по популярности Java.