Читаем без скачивания Информатика: конспект лекций - Ирина Козлова
Шрифт:
Интервал:
Закладка:
Графический способ представления алгоритмов оказывается более компактным и наглядным по сравнению со словесным. При данном виде представления алгоритм изображается в виде последовательности связанных между собой функциональных блоков, каждый из которых соответствует выполнению некоторого числа действий.
Для графического представления алгоритм использует изображение в виде последовательности связанных между собой функциональных блоков, каждый из которых соответствует выполнению одного или нескольких действий. Это графическое представление называется схемой алгоритма, или блок-схемой.
В блок-схеме каждый из типов действий (ввод исходных данных, вычисление значений выражений, проверка условий, управление повторением действий, окончание обработки и т. п.) соответствует геометрической фигуре, представленной в виде блочного символа. Блочные символы соединены линиями переходов, которые определяют очередность выполнения действий.
Псевдокод является системой обозначений и правил, которая предназначена для единообразной записи алгоритмов. Он занимает промежуточное место между естественным и формальным языками. С одной стороны, псевдокод похож на обычный естественный язык, поэтому алгоритмы могут на нем записываться и читаться как обычный текст. С другой стороны, в псевдокоде используются некоторые формальные конструкции и математическая символика, благодаря чему запись алгоритма приближается к общепринятой математической записи.
В псевдокоде не применяются строгие синтаксические правила для записи команд, которые присущи формальным языкам, что облегчает запись алгоритма на стадии его проектирования и дает возможность использовать более широкий набор команд, рассчитанный на абстрактного исполнителя. Однако в псевдокоде чаще всего имеются некоторые конструкции, присущие формальным языкам, что облегчает переход от записи на псевдокоде к записи алгоритма на формальном языке. Например, в псевдокоде, также каки в формальных языках, существуют служебные слова, смысл которых определен раз и навсегда. Их выделяют в печатном тексте жирным шрифтом, а в рукописном тексте подчеркивают. Единый или формальный подход к определению псевдокода не существует, поэтому используются различные псевдокоды, отличающиеся набором служебных слов и основных (базовых) конструкций.
Программная форма представления алгоритмов иногда характеризуется некоторыми структурами, состоящими из отдельных базовых (основных) элементов. При данном подходе к алгоритмам изучение основных принципов их конструирования следует начинать с этих базовых элементов. Их описание осуществляется с использованием языка схем алгоритмов и алгоритмического языка.
9.2. Системы программирования
Машинно-ориентированные языки относятся к машинно-зависимым языкам программирования. Основные конструктивные средства таких языков позволяют учитывать особенности архитектуры и принципов работы определенной ЭВМ, т. е. они имеют те же возможности и требования к программистам, что и машинные языки. Однако в отличие от последних они требуют предварительной трансляции на машинный язык составленных с их помощью программ.
Данными видами языков программирования могут быть: автокоды, языки символического кодирования и ассемблеры.
Для машинно-независимых языков не требуется полного знания специфики компьютеров. С их помощью можно записывать программу в виде, допускающем ее реализацию на ЭВМ с различными типами машинных операций, привязка к которым возлагается на соответствующий транслятор.
Причина бурного развития и применения высокоуровневых языков программирования заключается в быстром росте производительности ЭВМ и хронической нехватке программистских кадров.
Промежуточное место между машинно-независимыми и машинно-зависимыми языками отводится языку Си. Он создавался при попытке объединения достоинств, присущих языкам обоих классов. Данный язык обладает рядом особенностей:
• максимально использует возможности конкретной вычислительной архитектуры; из-за этого программы на языке Си компактны и работают эффективно;
• позволяет налучшим образом использовать огромные выразительные средства современных языков высокого уровня.
Языки разделяют на процедурно-ориентированные и проблемно-ориентированные.
Процедурно-ориентированные языки, например Фортран, Кобол, Бейсик, Паскаль, наиболее часто используются для описания алгоритмов решения широкого класса задач.
Проблемно-ориентированные языки, в частности РПГ, Лисп, АПЛ, GPSS, применяются для описания процессов обработки информации в более узкой, специфической области.
Объектно-ориентированные языки программирования позволяют разрабатывать программные приложения для большого круга разнообразных задач, имеющих общность в реализуемых компонентах.
Рассмотрим методы использования языков программирования.
Интерпретация представляет собой пооператорную трансляцию и последующее выполнение оттранслированного оператора исходной программы. Существует два основных недостатка метода интерпретации:
1) интерпретирующая программа должна располагаться в памяти ЭВМ на протяжении всего процесса выполнения исходной программы. Другими словами, она должна занимать некоторый установленный объем памяти;
2) процесс трансляции одного и того же оператора повторяется такое число раз, которое должна исполнять эта команда в программе. Это приводит к резкому снижению производительности работы программы.
Трансляторы-интерпретаторы являются достаточно распространенными, так как они поддерживают диалоговый режим.
Процессы трансляции и выполнения при компиляции разделяются во времени: сначала исходная программа в полном объеме переводится на машинный язык, после чего оттранслированная программа может многократно исполняться. Для трансляции методом компиляции необходим неоднократный «просмотр» транслируемой программы, т. е. трансляторы-компиляторы являются многопроходными. Трансляция методом компиляции носит название объектного модуля, который представляет собой эквивалентную программу в машинных кодах. Необходимо, чтобы перед исполнением объектный модуль обрабатывался специальной программой ОС и преобразовывался в загрузочный модуль.
Применяют также трансляторы интерпретаторы-компиляторы, объединяющие в себе достоинства обоих принципов трансляции.
9.3. Классификация языков программирования высокого уровня
Высокоуровневые языки используются в машинно-независимых системах программирования. Такие системы программирования в сравнении с машинно-ориентированными системами предстают более простыми в использовании.
Языки программирования высокого уровня подразделяют на процедурно-ориентированные, проблемно-ориентированные и объектно-ориентированные.
Процедурно-ориентированные языки применяются для записи процедур или алгоритмов обработки информации на каждом определенном круге задач. К ним относятся:
а) язык Фортран (Fortran), название которого происходит от слов Formulae Translation – «преобразование формул». Фортран представляет собой один из старейших языков программирования высокого уровня. Длительность его существования и применения можно объяснить простотой структуры данного языка;
б) язык Бейсик (Basic), который расшифровывается как Beginner's All-purpose Symbolic Instruction Code, что в переводе означает – «многоцелевой символический обучающий код для начинающих», разработан в 1964 г. как язык для обучения программированию;
в) язык Си (С), применяемый с 1970-х гг. как язык системного программирования специально для написания ОС UNIX. В 1980-е гг. на основе языка С был разработан язык C++, практически включающий в себя язык С и дополненный средствами объектно-ориентированного программирования;
г) язык Паскаль (Pascal), который назван в честь французского ученого Б. Паскаля, начал применяться с 1968–1971 гг. Н. Виртом. При создании Паскаль использовался для обучения программированию, но со временем стал широко применяться для разработки программных средств в профессиональном программировании.
Проблемно-ориентированные языки используются для решения целых классов новых задач, возникших в связи с постоянным расширением области применения вычислительной техники:
а) язык Лисп (Lisp – List Information Symbol Processing), который был изобретен в 1962 г. Дж. Маккарти. Первоначально он применялся как средство для работы со строками символов. Лисп употребляется в экспертных системах, системах аналитических вычислений и т. п.;