- •Конспект лекций по курсу «Информатика» для студентов очной и заочной форм обучения.
- •Базовые положения
- •§.1. Физическое устройство и разумная деятельность мозга
- •§2. Самодостаточная эвм
- •2.1. Память (оперативная память)
- •2.2. Процессор
- •2.3. Программа
- •2.4. Жизненный цикл «Самодостаточной эвм»
- •§3. Язык процессора – базовый язык эвм
- •§4. Реальная эвм. Периферийные устройства
- •§5. Язык программирования. Программа транслятор
- •§6. Язык программирования Pascal
- •6.1. Базовые типы числовых информационных объектов
- •6.2. Явные константы
- •6.3. Оператор описания var
- •Var и1, и2, и3, . . . . ,Иn: Итипа;
- •6.5. Операторы консольного ввода информации
- •6.5.1. Стандартные форматы вывода числовой информации.
- •6.6. Логические переменные
- •6.7. Операторы управления программой
- •6.7.1. Условный оператор if then
- •If Условие then Оператор ;
- •6.7.2. Условный оператор выбора if then else
- •6.8. Метки операторов. Оператор безусловного перехода
- •6.9. Циклические вычисления. Операторы зацикливания
- •Организация циклических вычислений операторами if then goto
- •Программа вычисления корня по формуле Герона.
- •6.9.3. Оператор цикла for to
- •6.9.4. Оператор цикла for downto
- •6.9.5. Оператор цикла while
- •6.9.6. Программа вычисления длины дуги кривой
- •7. Массивы переменных
- •7.1. Программа нахождения экстремальных значений
- •7.2. Программа решения системы линейных алгебраических уравнений
- •8. Сортировка информации
- •8.1. Элементы формальной логики, теории множеств и операций
- •8.2. Упорядоченные структуры информационных объектов
- •8.3. Алгоритм сортировки «поплавок»
- •8.3.1. Программа сортировки массива «на месте»
- •8.3.2. Программа сортировки «индексов» массива
- •8.4. Алгоритм быстрого поиска информации в линейно упорядоченном массиве
- •8.4.1. Программа поиска в отсортированных массивах.
- •9. Символьные переменные
- •9.1.Строковые переменные
- •9.1.1. Программа написания чисел прописью
- •10. Клавиатурное управление эвм
- •§.11. Информационные объекты класса – изображение
- •11.1. Устройство функционированиемонитора
- •11.2. Процедурный язык управления графическим экраном
- •11.3. Оцифровка и масштабирование реальных изображений (чертежей) для последующего их вывода на экран
- •11.4. Пример построения фрагмента графика функции
- •11.5. Ввод и обработка информации в форме изображений
- •§12. Информационные объекты класса – подпрограммы
- •12.1. Подпрограммы типа procedure
- •12.1.1. Пример оформления подпрограммы-процедуры
- •12.2. Подпрограммы класса function
- •12.2.1.Пример оформления подпрограммы-функции
- •12.3. Процедурные языки программирования
- •12.4. Библиотечные модули Unit
- •§13. Динамическое распределение оперативной памяти эвм
- •13.1. Программа использующая динамические переменные
- •§14. Переменные типа record
- •§15. Внешняя память эвм. Работа с файлами
- •15.1. Процедурный язык обработки файлов
- •15.2.Программа “ Жизненный путь файла “
- •15.3. Текстовые файлы
- •§16. Элементы объектно-ориентированного программирования
- •Основная рекомендуемая литература.
§5. Язык программирования. Программа транслятор
Опр. Язык программирования (ЯП) – язык написания инструкций для процессора ЭВМ, лексика которого максимально приближена к выразительным возможностям естественного языка.
Вместо числовых кодов базовых операций обработки и числовых адресов базовых информационных объектов обработки программист использует символьные (текстовые) имена. Вместо жесткого синтаксиса команд базового языка процессора (ГС, ГСС, ГССС и т.д.), позволяющем описывать в одном предложении только одну операцию, программист получает возможность описывать одним оператором несколько действий, причем структура (синтаксис) предложений практически соответствует общепринятой форме записи математических выражений.
И наконец, самое главное – определяющей характеристикой ЯП является возможность его саморазвития, т.е. ЯП (высокого и сверхвысокого уровня) позволяют программисту создавать (вводить в язык) новые информационные объекты (ИО) и новые операции обработки (ОО) информационных объектов.
Опр. Конструктивный метод языковых новообразований основан на объединении нескольких стандартных или ранее созданных ИО или ОО в единое целое, с наделением этого новообразования уникальным именем.
Примеры:
- упорядоченная последовательность чисел (базовых ИО) образует новый ИО – вектор,
- операция скалярного умножения векторов – это новая ОО, образованная упорядоченной последовательностью умножений с сложений чисел, т.е. базовых ОО.
Языки программирования, использующие сложные ИО и ОО существенно сокращают тексты программ, однако, требуют от программиста значительных усилий для изучения многочисленных свойств, особенностей и спецификаций, характеризующих сложные ИО и ОО. Описание же нововведенных ОО и ИО, обычно ориентированное на широкий круг пользователей, дается на естественном языке с использованием терминов и понятий, прагматика (смысл) которых допускает расширенное толкование, вплоть до противоположного... В результате: используя сложные ОО и ИО можно получить результат, который совершенно не соответствует ожиданиям или просто не понятен.
Опр. Транслятор – специальная программа ЭВМ, которая
а) реализует перевод инструкций с ЯП на базовый язык процессора,
б) обнаруживает и сообщает программисту о допущенных им всех синтаксических и некоторых прагматических ошибках.
Пример обнаруживаемой прагматической ошибки: a = b + 5 – 5 .
Автоматический перевод с ЯП на БЯЭ возможен, т.к. оба эти языка являются командными: их семантика (смысл для исполнителя) однозначно предопределяется синтаксисом (структурой предложений). Следовательно, для перевода смысла команды необходимо просто заменить, а точнее – пересчитать, одни стандартные последовательности символов на другие.
Механизм перевода (трансляции):
а) сложные ИО и ОО языка программирования разделяются на упорядоченные последовательности базовых ИО и ОО, понятных процессору,
б) символьные имена ИО языка программирования заменяются на числовые адреса оперативной памяти,
в) символьные имена ОО языка программирования заменяются на числовые коды базовых (элементарных) операций обработки.
Определяющей особенностью всех языков программирования является то, что они предназначены для общения программиста именно с программой-транслятором. Целью этого общения является создание инструкций (программы) для автомата – процессора. Поэтому, лексика ЯП включает не только возможность описания прямых инструкций процессору, т.е. команд требующих прямого (дословного) перевода на базовый язык процессора (БЯЭ), но и инструкций, предназначенных именно и только программе – транслятору. В таких инструкциях содержатся указания - как именно следует переводить те или иные выражения на БЯЭ.
Опр. Предложения (операторы, команды) ЯП «дословно переводимые» с ЯП на БЯЭ принято называть исполнимыми операторами программы.
Опр. Предложения (операторы, команды) ЯП, которые поясняют специфику перевода, принято называть операторами описания.
Очевидно, что операторы описания всегда должны предшествовать исполнимым операторам, иначе, смысл последних будет просто не понятен: сначала объясни «что это такое», а только потом командуй «что с этим делать».
Начинающий программист должен накрепко запомнить:
а) транслятор «знает» синтаксис языка программирования лучше любого прикладного программиста (разработчики трансляторов специалисты наивысшей квалификации!) поэтому указанная транслятором ошибка – именно твоя ошибка!
б) транслятор не контролирует прагматику (алгоритмическую целесообразность) переводимой им программы. Автоматизировать эти действия, на сегодняшнем уровне развития наук, не возможно. Поэтому: синтаксически грамотно написанная программа может быть абсолютно бессмысленной.