- 2 Системы программирования. Интерпретация и компиляция.
- 3 Технология алгоритмического программирования. Основные структуры и средства языка программирования (операторы, функции, процедуры).
- 34. Средства реализации языков программирования.
- 35. Основные парадигмы программирования.
- 36. Основные рекомендации по оптимизации по.
- Тема 2.5. Основные конструкции языков программирования
2 Системы программирования. Интерпретация и компиляция.
Имеются два основных подхода к реализации языков программирования: компиляция и интерпретация. Компилятор переводит программу на языке программирования в машинный код (последовательность команд и данных) конкретного компьютера, на котором будет выполняться программа.
Исполнение этого кода осуществляется под управлением операционной системы и никак не зависит от компилятора. Интерпретатор же является собственно той системой, которая исполняет программу на языке программирования.
Между этими двумя подходами имеется множество промежуточных вариантов: существуют компиляторы, которые компилируют в интерактивном режиме, во время ввода программы. Существуют интерпретаторы, которые компилируют программу в промежуточный код.
Вообще говоря, код, полученный компилятором, будет более эффективным, т. е. программа будет выполняться быстрее. Но полное время, затраченное на проектирование, ввод текста и запуск на выполнение для компилирующей системы, может быть больше, чем для интерпретирующей. Кроме того, компилятор может точно указать место лишь синтаксической ошибки; если же ошибка другого рода, то компилятор может предложить лишь сгенерированный код для определения места вероятной ошибки. Интерпретатор же покажет ошибку в исходном тексте программы.
В самом языке программирования, вообще говоря, не заложен способ его реализации, однако одни языки почти всегда компилируются, например C++, другие, например Smalltalk, почти всегда интерпретируются, Java компилируется в байт-код и затем интерпретируется.
Сейчас практически любая реализация языка представлена как среда разработки, которая включает:
1) компилятор (или интерпретатор);
2) отладчик — специальную программу, которая облегчает процесс поиска ошибок; пользуясь ею, разработчик может выполнять программу “по шагам”, отслеживать изменение значений переменных в процессе выполнения и др.;
3) встроенный текстовый редактор;
4) специальные средства для просмотра структуры программы, классов, модулей и проч.;
5) библиотеку готовых модулей, классов, напри-Q для создания пользовательского интерфейса (окна, кнопки и т. д.).
В 80-е годы активно прорабатывалась идея визуального программирования, основной смысл которой состоит в том, чтобы процесс “сборки” программы осуществлялся на экране дисплея из программных конструкций — картинок. В результате появились среды разработки 4-го поколения (4GL), в которых разрабатываемый программный продукт строится из готовых крупных блоков при помощи мыши. Примерами таких сред являются: Delphi, Visual Age, Visual Java.
3 Технология алгоритмического программирования. Основные структуры и средства языка программирования (операторы, функции, процедуры).
Технология алгоритмического программирования базируется на методе последовательной детализации алгоритмов. Сначала формулируется основной алгоритм, который состоит из “крупных” блоков (команд), часть которых может быть непонятна исполнителю (не входит в его систему команд). В этом случае они записываются как вызовы вспомогательных алгоритмов. Затем происходит детализация, т. е. все вспомогательные алгоритмы подробно расписываются с использованием команд, понятных исполнителю.
Как основной алгоритм, так и вспомогательные алгоритмы могут включать основные алгоритмические структуры: линейную, разветвляющуюся и циклическую. В линейной алгоритмической структуре все команды выполняются в линейной последовательности, одна за другой.
В разветвляющиеся алгоритмы входит условие, в зависимости от выполнения или невыполнения которого выполняется та или иная последовательность команд (серий).
В циклические алгоритмы входит последовательность команд, выполняемая многократно. Такая последовательность команд называется телом цикла.
Алгоритмы могут быть описаны различными способами:
- записаны на естественном языке;
- изображены в виде блок-схемы;
- записаны на алгоритмическом языке;
- закодированы на языке программирования.
Для кодирования алгоритма на языке программирования необходимо знать синтаксис языка, т. е. его основные операторы, типы переменных и др. В школе знакомятся в основном с языком программирования Бейсик.
Язык программирования Basic (Beginner’s All-purpose Symbolic Instruction Code — многоцелевой язык для начинающих) был разработан в 1964 году. Языки программирования, в том числе и Basic, развиваются, обогащаются новыми возможностями, и в результате возникают различные версии языка (Бейсик-Агат, MSX-Basic, QBasic, VisualBasic).
Команды и различные типы алгоритмических структур реализуются на языке программирования с помощью операторов. Каждый оператор имеет свой формат.
В формат операторов, кроме ключевых слов, входят переменные и арифметические выражения. Переменные бывают различных типов, тип переменной определяет, какие значения может принимать эта переменная. В Бейсике переменные могут быть следующих типов: целые (А% = 5), вещественные (А = 3.14), символьные (А$ = «информатика») и массивы DIM А(М, N). Массивы представляют собой одномерные или двумерные таблицы.
Арифметические выражения могут включать в себя: числа, переменные, знаки арифметических выражений, стандартные функции и круглые скобки. Например, арифметическое выражение, которое позволяет определить величину гипотенузы прямоугольного треугольника, будет записываться следующим образом: SQR (А*А + В*В).
Стандартные функции позволяют вычислить значения математических функций, например стандартная функция SIN (X) позволяет вычислить значения математической функции sin х.
Вспомогательные алгоритмы реализуются на Бейсике с помощью подпрограмм. Для перехода на подпрограмму используется специальный оператор, его формат: GOSUB . Возврат из подпрограммы реализуется с помощью оператора RETURN.
В некоторых других языках программирования, в частности в Паскале, вспомогательные алгоритмы реализуются с помощью процедур.
34. Средства реализации языков программирования.
Языки программирования могут быть реализованы как компилируемые или интерпретируемые. Компилятор — это особая программа, которая переводит исходный текст программы в двоичные коды — инструкции процессора. Если программа написана на интерпретируемом языке, то интерпретатор непосредственно выполняет исходный код без предварительного перевода. Компилятор считывает исходный текст, оценивает его в соответствии с синтаксической конструкцией языка и переводит на машинный язык. Компилятор не исполняет программы, он их строит. Для компилируемых программ выделяют две главные фазы жизни: период компилирования и период прогона. Большинство откомпилированных программ будут прогоняться в 4-10 раз быстрее их интерпретированных эквивалентов. Если же программист опытный и думает об оптимизации кода, то он может достичь стократного повышения быстродействия.
Интерпретируемые языки позволяют упростить отладку, дают возможность бегло просмотреть программу, а затем продолжить её исполнение. Программистам нравится в интерпретаторах возможность быстрого получения ответа. К недостаткам относится то, что для работы с интерпретатором необходимо его постоянное нахождение в памяти.
35. Основные парадигмы программирования.
Языки программирования строятся в соответствии с той или иной базовой моделью вычислений и парадигмой программирования. Несмотря на то, что большинство языков ориентировано на императивные модели вычислений, задаваемые фон Неймановской архитектурой ЭВМ, существуют и другие подходы. Существуют так же и другие подходы к разработке языков. Например, языки со стековой архитектурой(Forth, Factor, Postscript). Так же возникли функциональные языки(LISP, Haskel, F#, ML), языки логического программирования(PROLOG). В настоящее время развиваются проблемно-ориентированные, декларативные(языки предикатов), визуальные языки программирования.
36. Основные рекомендации по оптимизации по.
Оптимизация — это модификация системы для улучшения ее эффективности. При проведении оптимизации основной задачей является увеличение производительности системы и уменьшение используемой памяти. Главной задачей существует создание правильного ПО, если ПО не верно решает свои задачи, то не важно какова его эффективность. Существует несколько приемов на создание оптимального ПО:
— выбор алгоритма на базе которого реализована программа;
— обоснованный выбор языка программирования;
— использование оптимизирующего компилятора;
— использование динамических структур для хранения данных;
— не забывать освобождать память;
— учитывать, что выполнение операций с целочисленной арифметикой занимает меньше времени чем с плавающей;
— операции с неявной адресацией выполняются дольше чем прямая адресация;
— необходимо учитывать что при каждом вызове функции затрачивается время на сохранение среды программирования на передачу параметров
и на передачу управления функции;
При составлении математических выражений не рекомендуется использовать смешанные типы данных, так как при смешивании различных типов
данных часто возникает необходимость их преобразования.
Тема 2.5. Основные конструкции языков программирования
Алфавит языка. Алфавит языкаQuick Basic (QB)включает в себя прописные (A-Z) и строчные (a-z) латинские буквы, цифры0-9и специальные символы:
- знаки арифметических операций: + (плюс); — (минус); * (умножение); / (деление); \ (деление нацело); ^ (возведение в степень);MOD (получение остатка от деления целых чисел);
- знаки операций отношения: = (равно); (меньше); > (больше); (меньше или равно); >= (больше или равно); <> (не равно);
- знаки препинания и разделители:, (запятая); . (точка); : (двоеточие); ; (точка с запятой); ‘ (апостроф); () (круглые скобки); _ (подчеркивание); пробел;
- символы объявления типа данных: %; &; !; # ; $.
- внутреннее представление данных в памяти компьютера;
- операции и функции, которые можно применять к величинам этого типа;
- множество значений, которые могут принимать величины этого типа.
- Объявлениетипа переменной с помощью суффикса, то есть с помощью соответствующего символа (суффикса), добавляемого к имени переменной при каждой ссылке на нее, например,k%,factorial&,summa!,integral#,str$ .
- Объявлениетипа переменнойпо первой букве ее именис помощью оператора DEF, имеющего следующий формат:
- Явное объявлениетипа переменной в операторе DIM: