Алгоритмы и языки программирования
Алгоритм — это точно определенная последовательность действий, которые необходимо выполнить над исходной информацией, чтобы получить решение задачи.
Понятие алгоритма — одно из важнейших понятий математики, так как назначением математики и является, в частности, разработка рациональных алгоритмов решения задач. Существует раздел математики — теория алгоритмов, занимающийся разработкой методов и форм построения алгоритмов решения задач. Алгоритм решения задачи на вычислительной машине — это разновидность математического алгоритма.
Основными свойствами правильно построенного алгоритма являются:
Результативность — алгоритм должен давать конкретное конструктивное решение, а не указывать на возможность решения вообще;
Релевантность — алгоритм должен соответствовать сущности задачи и формировать верные, не допускающие неоднозначного толкования решения;
Реалистичность — возможность реализации алгоритма при заданных ограничениях: временных, программных, аппаратных;
Массовость — алгоритм должен быть воспроизводимым, пригодным для решения всех задач определенного класса на всем множестве допустимых значений исходных данных;
детерминированность (определенность) — алгоритм должен содержать набор точных и понятных указаний, не допускающих неоднозначного толкования;
дискретность — допустимость расчленения алгоритма на отдельные этапы с возможностью последовательной их реализации на машине;
экономичность — алгоритм должен обеспечивать необходимую и достаточную точность решения задачи.
Алгоритм должен быть понятен (доступен) пользователю и/или машине. Доступность пользователю означает, что он обязан отображаться посредством конкретных формализованных изобразительных средств, понятных пользователю. В качестве таких изобразительных средств используются следующие способы их записи: словесный, формульный, табличный, операторный, графический, макроязык программирования:
при словесном способе записи содержание последовательных этапов алгоритма описывается в произвольной форме на естественном языке;
формульный способ основан на строго формализованном аналитическом задании необходимых для исполнения действий;
табличный способ подразумевает отображение алгоритма в виде таблиц, использующих аппарат реляционного исчисления и алгебру логики для задания подлежащих исполнению взаимных связей между данными, содержащимися в таблице;
операторный способ базируется на использовании для отображения алгоритма условного набора специальных операторов: арифметических, логических, печати, ввода данных и т. д.; операторы снабжаются индексами и между ними указываются необходимые переходы, а сами индексированные операторы описываются чаще всего в табличной форме;
графическое отображение алгоритмов в виде блок-схем — самый распространенный способ. Графические символы, отображающие выполняемые процедуры, стандартизованы. Наряду с основными символами используются и вспомогательные, поясняющие процедуры и связи между ними;
алгоритмы могут быть записаны и в виде команд какого-либо языка программирования. Если это макрокоманды, то алгоритм читаем и пользователем-программистом, и вычислительной машиной, имеющей транслятор с соответствующего языка.
Языки, представляющие алгоритмы в виде последовательности читаемых программистом (не двоично-кодированных) команд, называются алгоритмическими языками. Алгоритмические языки подразделяются на машинно-ориентированные, процедурно-ориентированные и проблемно-ориентированные.
Машинно-ориентированные языки (МК — мнемокоды, ЯСК — языки символического кодирования, автокоды, ассемблеры) относятся к языкам программирования низкого уровня — программирование на них наиболее трудоемко, но позволяет создавать оптимальные программы, максимально учитывающие функционально-структурные особенности конкретного компьютера. Программы на этих языках позволяют создавать, при прочих равных условиях, наиболее короткие и быстродействующие машинные программы. Кроме того, знание основ программирования на машинно-ориентированном языке позволяет специалисту подробнейшим образом разобраться с архитектурой компьютера. Именно последнее обстоятельство в большей степени и обусловливает целесообразность ознакомления с машинно-ориентированным языком, каковым и является язык ассемблер, при изучении вычислительных систем. Большинство команд машинно-ориентированных языков при трансляции (переводе) на машинный (двоичный) язык генерируют одну машинную команду (исключение составляют только макрокоманды обращения к внешним устройствам компьютера).
Процедурно-ориентированные и проблемно-ориентированные языки относятся к языкам высокого уровня, использующим макрокоманды. Макрокоманда при трансляции генерирует много машинных команд: для процедурно-ориентированной макрокоманды это соотношение в среднем «1 к десяткам машинных команд», а для проблемно-ориентированной команды это «1 к сотням машинных команд». Процедурно-ориентированные языки программирования являются самыми используемыми (Basic, Pascal, C++, PL, ALGOL, COBOL и еще десятки популярных языков). В этом случае программист должен описывать всю процедуру решения задачи, тогда как проблемно-ориентированные языки (их называют также непроцедурными) позволяют лишь формально идентифицировать проблему и указать состав, структуры представления и форматы входной и выходной информации для задачи.
Все языки программирования, и языки машинно-ориентированные, и языки высокого уровня, для их восприятия компьютером требуют наличия программ перевода — трансляторов на машинный язык.
Трансляторы бывают двух типов: трансляторы-компиляторы и трансляторы-интерпретаторы.
Компиляторы при трансляции переводят на машинный язык сразу всю программу и затем хранят ее в памяти машины в двоичных кодах. Интерпретаторы каждый раз при исполнении программы заново преобразуют в машинные коды каждую макрокоманду и передают ее для непосредственного выполнения компьютеру. В памяти интерпретируемые программы хранятся в виде исходных макрокоманд и поэтому в любой момент читаемы человеком.
Откомпилированные двоично-кодированные программы практически человеком не читаемы. Но их можно вызвать в специальную программу-отладчик (DEBUG и его разновидности), которая переведет эти программы на язык ассемблер, то есть сделает их «человекочитаемыми» (еще один довод в пользу изучения языка ассемблер).
Итак, алгоритм непосредственно воспринимается и исполняется компьютером, если он представлен в двоичном коде на машинном языке.
Алгоритм решения задачи, заданный в виде последовательности команд на языке вычислительной машины (в кодах машины), называется машинной программой.
Команда машинной программы (иначе, машинная команда) — это элементарная инструкция машине, выполняемая ею автоматически без каких либо дополнительных указаний и пояснений.
Машинная команда состоит из двух частей: операционной и адресной.
-
КОП
Адреса
Операционная часть команды (КОП — код операции) — это группа разрядов в команде, предназначенная для представления кода операции машины.
Адресная часть команды (адреса) — это группа разрядов в команде, в которых записываются коды адреса (адресов) ячеек памяти машины, предназначенных для оперативного хранения информации, или иных объектов, задействованных при выполнении команды. Часто эти адреса называются адресами операндов, то есть чисел, участвующих в операции.
По количеству адресов (а1, а2, а3, ), записываемых в команде, команды делятся на безадресные, одно-, двух- и трехадресные.
Типовая структура трехадресной команды:
КОП | а1 | а2 | а3 |
а1 и а2 — адреса ячеек (регистров), где расположены, соответственно, первое и второе числа, участвующие в операции, а3 — адрес ячейки (регистра), куда следует поместить число, полученное в результате выполнения операции.
Типовая структура двухадресной команды:
КОП | а1 | а2 |
а1 — это обычно адрес ячейки (регистра), где хранится первое из чисел, участвующих в операции, и куда после завершения операции должен быть записан результат операции; а2 — обычно адрес ячейки (регистра), где хранится второе участвующее в операции число.
Типовая структура одноадресной команды:
КОП | а1 |
где а1 в зависимости от модификации команды может обозначать либо адрес ячейки (регистра), в которой хранится одно из чисел, участвующих в операции, либо адрес ячейки (регистра), куда следует поместить число — результат операции.
Безадресная команда содержит только код операции, а информация для нее должна быть заранее помещена в определенные регистры или ячейки памяти машины (обычно в ячейки стековой памяти).
Наибольшее применение в ПК нашли двухадресные команды.
Пример двухадресной команды, записанной на языке символического кодирования (ЯСК):
СЛ | 0103 | 5102 |
Эту команду следует расшифровать так: СЛожить число, записанное в ячейке 0103 памяти, с числом, записанным в ячейке 5102, а затем результат (то есть сумму) поместить в ячейку 0103.
В кодах машины любая команда содержит только двоичные цифры записанных объектов.
- Введение
- Раздел «Создание и эволюция эвм» Глава 1. Научные предпосылки создания эвм
- Управление и информация
- Информация и ее свойства
- Экономическая информация
- Три формы адекватности информации
- Меры информации
- Синтаксические меры информации
- Семантическая мера информации
- Прагматическая мера информации
- Показатели качества информации
- Репрезентативность
- Содержательность
- Достаточность
- Доступность
- Актуальность
- Своевременность
- Точность
- Достоверность
- Устойчивость
- Защищенность
- Полезность
- Информатика
- Наука информатика
- Информационные технологии
- Индустрия информатики
- Вопросы для самопроверки
- Глава 2. История создания вычислительной техники
- Механические счетные машины
- Электромеханические счетные машины
- Электронные вычислительные машины
- Вопросы для самопроверки
- Глава 3. Эволюция эвм
- Вопросы для самопроверки
- Глава 4. Основные классы вычислительных машин
- Большие компьютеры
- Серверы и рабочие станции
- Рабочие станции
- Серверы
- Малые компьютеры
- Микрокомпьютеры
- Персональные компьютеры
- Наколенные компьютеры
- Компьютеры-блокноты (ноутбуки)
- Нетбуки
- Планшетные компьютеры
- Райтеры
- Электронные книги Ридеры
- Карманные компьютеры
- Периферийные устройства кпк
- Коммуникаторы (смартфоны)
- Электронные секретари
- Электронные записные книжки
- Вычислительные системы
- Многомашинные и многопроцессорные вс
- Высокопараллельные многопроцессорные вычислительные системы
- Ассоциативные и потоковые вс
- Ассоциативные вычислительные системы
- Потоковые вычислительные системы
- Суперкомпьютеры
- Кластерные суперкомпьютеры
- Вопросы для самопроверки
- Раздел 2. «Информационно-логические основы построения эвм» Глава 5. Представление информации в эвм
- Представление чисел с фиксированной и плавающей запятой
- Алгебраическое представление двоичных чисел
- Прочие системы счисления
- Двоично-десятичная система счисления
- Шестнадцатеричная система счисления
- Выполнение арифметических операций в компьютере
- Особенности выполнения операций над числами с плавающей запятой
- Выполнение арифметических операций над числами, представленными в дополнительных кодах
- Особенности выполнения операций в обратных кодах
- Выполнение арифметических операций в шестнадцатеричной системе счисления
- Особенности представления информации в пк
- Вопросы для самопроверки
- Глава 6. Логические основы построения эвм
- Основы алгебры логики
- Логический синтез вычислительных схем
- Электронные технологии и элементы
- Полевые транзисторы
- Планарные микросхемы
- Электронные и логические схемы
- Триггер
- Регистр
- Дешифратор
- Логические операции, выполняемые в компьютере
- Or (или) — логическое сложение
- Xor (исключающее или)
- Not (не) — операция отрицания
- Вопросы для самопроверки
- Раздел 3 Архитектура персонального компьютера Глава 7. Основные блоки эвм и их назначение
- Структурная схема эвм
- Микропроцессор
- Системная шина
- Основная память
- Внешняя память
- Источник питания
- Внешние устройства
- Дополнительные интегральные микросхемы
- Элементы конструкции пк
- Функциональные характеристики эвм
- Производительность, быстродействие, тактовая частота
- Разрядность микропроцессора и кодовых шин интерфейса
- Типы системного и локальных и внешних интерфейсов
- Емкость оперативной памяти
- Виды накопителей на жестких магнитных дисках
- Тип и емкость накопителей на гибких магнитных дисках
- Наличие, виды и емкость кэш-памяти
- Аппаратная и программная совместимость с другими типами компьютеров
- Возможность работы в многозадачном режиме
- Надежность
- Глава 8. Микропроцессоры
- Микропроцессоры типа cisc
- Микропроцессоры Over Drive
- Микропроцессоры Pentium
- Микропроцессоры Pentium Pro
- Микропроцессоры Pentium mmx и Pentium II
- Микропроцессоры Pentium III
- Микропроцессоры Pentium 4
- Эффективные технологии в мп Intel
- Архитектура Intel Net Burst
- Многоядерные микропроцессоры
- Микропроцессоры линейки core
- Процессоры Core Penryn
- Микропроцессоры типа risc
- Микропроцессоры типа vliw
- Физическая и функциональная структура микропроцессора
- Устройство управления
- Арифметико-логическое устройство
- Микропроцессорная память
- Универсальные регистры
- Сегментные регистры
- Регистры смещений
- Регистр флагов
- Статусные флаги
- Управляющие флаги
- Интерфейсная часть мп
- Вопросы для самопроверки
- Глава 9. Системные платы и чипсеты
- Разновидности системных плат
- Чипсеты системных плат
- Чипсет i965 (Broadwater)
- Глава 10. Интерфейсная система пк
- Шины расширений
- Локальные шины
- Интерфейсы pci
- Интерфейс agp
- Периферийные шины
- Интерфейсы ide/ata
- Интерфейс scsi
- Интерфейс rs 232
- Интерфейс ieee 1284
- Универсальные последовательные интерфейсы
- Последовательная шина usb
- Стандарт ieee 1394
- Последовательный интерфейс sata
- Последовательный интерфейс sas
- Семейство последовательных интерфейсов pci Express
- Прикладные программные интерфейсы
- Беспроводные интерфейсы
- Интерфейсы IrDa
- Интерфейс Bluetooth
- Интерфейс wusb
- Семейство интерфейсов WiFi
- Семейство интерфейсов WiMax
- Интерфейс WiBro
- Прочие интерфейсы
- Вопросы для самопроверки
- Глава 11. Основная память пк
- Статическая и динамическая оперативная память
- Основная память
- Физическая структура основной памяти
- Оперативные запоминающие устройства
- Виды модулей оперативной памяти
- Типы оперативной памяти
- Постоянные запоминающие устройства
- Логическая структура основной памяти
- Вопросы для самопроверки
- Глава12. Внешние запоминающие устройства
- Размещение информации на дисках
- Адресация информации на диске
- Накопители на жестких магнитных дисках
- 0,85" Винчестеры Toshiba
- Дисковые массивы raid
- Накопители на гибких магнитных дисках
- Накопители на оптических дисках
- Неперезаписываемые оптические диски cd-rom
- Оптические диски с однократной записью
- Оптические диски с многократной записью
- Оптические универсальные диски dvd
- Маркировка скоростных характеристик cd и dvd
- Эффективные технологии хранения информации на cd и dvd
- Многослойный cd
- Millipede-диск
- Флуоресцентные оптические диски
- Особенности организации флуоресцентных дисков
- Прочие технологии
- Накопители на магнитооптических дисках
- Накопители на магнитной ленте
- Устройства флэш-памяти
- Твердотельные накопители на базе флэш-памяти
- Вопросы для самопроверки
- Глава 13. Видеотерминальные устройства
- Видеомониторы на элт
- Монохромные мониторы
- Цветные мониторы
- Виды развертки изображения на мониторе
- Цифровые и аналоговые мониторы
- Размер экрана монитора
- Вертикальная (кадровая) развертка
- Строчная развертка
- Разрешающая способность мониторов
- Частотная полоса пропускания
- Эргономичность электронно-лучевых мониторов
- Видеомониторы на плоских панелях
- Мониторы на жидкокристаллических индикаторах
- Tmos – мониторы
- Плазменные мониторы
- Электролюминесцентные мониторы
- Светоизлучающие мониторы
- Мониторы на основе «электронной бумаги»
- Стереомониторы
- Видеоконтроллеры
- Вопросы для самопроверки
- Глава 14. Внешние устройства пк
- Клавиатура
- Графический манипулятор мышь
- Принтеры
- Матричные принтеры
- Струйные принтеры
- Лазерные принтеры
- Термопринтеры
- Твердочернильные принтеры
- Сервисные устройства
- Сетевые принтеры
- С канеры
- Типы сканеров
- Форматы представления графической информации в пк
- Форматы растровой графики
- Д игитайзеры
- Основные характеристики дигитайзеров
- Плоттеры
- Типы плоттеров
- Вопросы для самопроверки
- Глава 15. Средства мультимедиа
- Системы речевого ввода и вывода информации
- Системы распознавания речи
- Системы, ориентированные на распознавание отдельных слов, команд и вопросов
- Системы распознавания предложений и связной речи
- Системы идентификации по образцу речи
- Механизм распознавания речи
- Системы синтеза речи
- Компьютерные средства обеспечения звуковых технологий
- Звуковые платы (карты)
- Компьютерные средства обеспечения видеотехнологий
- Вопросы для самопроверки
- Раздел 4. Компьютерные сети Глава 16. Основы построения компьютерных сетей
- Классификация и архитектура компьютерных сетей
- Виды компьютерных сетей
- Модель взаимодействия открытых систем
- Локальные вычислительные сети
- Виды локальных вычислительных сетей
- Одноранговые локальные сети
- Серверные локальные сети
- Корпоративные компьютерные сети
- Глобальная информационная сеть Интернет
- Протоколы, используемые в сети
- Программное обеспечение компьютерных сетей
- Информационное обеспечение сетей
- Вопросы для самопроверки
- Глава 17.Техническое обеспечение компьютерных сетей
- Серверы и рабочие станции
- Рабочие станции
- Серверы
- Маршрутизаторы и коммутирующие устройства
- Методы коммутации
- Коммутация сообщений
- Коммутация пакетов
- Методы маршрутизации
- Варианты адресации компьютеров в сети
- Методы маршрутизации, используемые в сетях
- Модемы и сетевые карты
- Модемы для аналоговых каналов связи
- Протоколы передачи данных
- Модемы для цифровых каналов связи
- Сетевые карты
- Линии и каналы связи
- Цифровые каналы связи
- Раздел 5. Программное управление Глава 18. Программное управление — основа автоматизации вычислительного процесса После изучения главы вы должны знать:
- Алгоритмы и языки программирования
- Состав машинных команд
- Пример программы на яск
- Программное обеспечение компьютера
- Системное программное обеспечение
- Операционные системы компьютеров
- Прикладное программное обеспечение
- Прикладные программы для офиса
- Корпоративные прикладные программы
- Режимы работы компьютеров
- Однопрограммный режим
- Многопрограммный режим
- Система прерываний программ в пк
- Адресация регистров и ячеек памяти в пк
- Относительная адресация
- Стековая адресация
- Вопросы для самопроверки
- Глава 19.Элементы программирования на языке Ассемблер
- Основные компоненты языка ассемблер Алфавит языка
- Константы (числа и строки) Только целые числа
- Строки (литералы)
- Команды (операторы)
- Директивы (псевдооператоры)
- Модификаторы
- Адресация регистров и ячеек памяти в Ассемблере
- Непосредственная адресация
- Прямая адресация регистров мпп
- Адресация ячеек оп
- Основные команды языка ассемблер
- Команды пересылки данных
- Арифметические команды
- Команды сложения, вычитания и сравнения
- Команды приращения
- Команды умножения
- Команды деления
- Логические команды
- Команды безусловной передачи управления
- Команды перехода к подпрограмме и выхода из подпрограммы
- Команда перехода к подпрограмме: call opr
- Команда выхода из подпрограммы
- Команды условной передачи управления
- Команды условной передачи управления для беззнаковых данных
- Команды условной передачи управления для знаковых данных
- Команды условной передачи управления для прочих проверок
- Команды управления циклами
- Команды прерывания
- Основные директивы ассемблера
- Директивы определения идентификаторов
- Директивы определения данных
- Директивы определения сегментов и процедур
- Директивы управления трансляцией
- Программирование процедур работы с устройствами ввода-вывода
- Программирование работы с дисплеем
- Видеооперации с прерыванием 21h dos
- Программирование работы с клавиатурой
- Некоторые аспекты создания исполняемых программ
- Процедуры формирования программы
- Структура программы на языке ассемблера для создания файла exe
- Программа вычисления квадратного корня
- Основные сведения о листинге программы
- Последовательность работы пк при выполнении программы
- Краткие сведения об отладчике программ debug
- Основные команды отладчика debug
- Вопросы для самопроверки
- Заключение. Перспективы развития информационных систем
- Литература