- •Конспект лекций по курсу «Информатика» для студентов очной и заочной форм обучения.
- •Базовые положения
- •§.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. Элементы объектно-ориентированного программирования
- •Основная рекомендуемая литература.
12.3. Процедурные языки программирования
Оператор вызова подпрограммы «на выполнение» имеет весьма лаконичную форму:
ИмяP(P1, P2 , … Pn ); ,где
ИмяP – имя подпрограммы (процедуры),
P1, P2 , … Pn – перечень (через разделители - запятые) названий фактических параметров, т.е. имен информационных объектов чье содержимое (информация) используется в вызываемой подпрограмме, или вырабатывается внутри самой вызываемой подпрограммы.
Синтаксис (структура) этого оператора полностью совпадает с синтаксисом предложений «внутреннего языка ЭВМ» (см. §3):
КодО Адр1 Адр2 Адр3 , где
КодО – числовой код (номер) простейшей (базовой) операции обработки,
Адр1 Адр2 - адреса (числовые имена!) ячеек - аргументов,
Адр3 - адрес ячейки, куда следует поместить результат операции,
что соответствует структуре:
Глагол Существительное Существительное . . . Существительное.
Семантика оператора «вызов процедуры» озвучивается фразой: выполни подпрограмму ИмяP и фактическими параметрами P1, P2 ,… Pn !
Прагматика оператора «вызов процедуры» передается одним или несколькими предложениями естественного языка:
в простом случае - «сложи число А с числом B результат помести в C»,
в сложном – «нарисуй в нижеуказанном месте экрана, нижеуказанные фигуры, нижеуказанным цветом, сохранив старое изображение в нижеуказанном месте оперативной памяти».
Указанная специфика структуры (синтаксиса) оператора «вызов процедуры» позволяет ввести понятие – процедурные подъязыки программирования. Процедурные языки используются для управления периферийными устройствами самодостаточной ЭВМ, т.е.:
для ввода информации c клавиатуры, это комплекс процедур: Read, ReadLN, ReadKey,
для вывода информации на экран процедуры: Write, WriteLN,
для обслуживания графического экрана процедуры: SetColor, Line, Bar, OutTextXY и т.д.,
для обслуживания файлов процедуры: Assign, Reset, Close и т.д.
Для эффективного использования процедурного языка программирования, от программиста требуется только прагматическое (смысловое, предметно-понятийное) представление о том «что требуется сделать», и совершенно не обязательно понимать «какие именно элементарные операции выполняет при этом процессор». Главное, программист должен понимать: какие исходные данные (входная информация процедуры) должны быть обязательно переданы в процедуру, а какие переменные (выходная информация) будут обязательно заполнены (вычислены) самой процедурой.
12.4. Библиотечные модули Unit
Подпрограммы общего назначения удобно размещать в отдельном файле специальной структуры – unit.tpu (библиотека подпрограмм).
Структурная организация библиотечного модуля иллюстрируется следующим примером:
Unit Uname; {оператор задающий название библиотечного модуля - Uname,
Текстовый файл обязательно должен иметь тоже название uname.pas,
После компиляции этого модуля автоматически будет создан
объектный файл с именем uname.tpu, который обычно
и передается сторонним пользователям.}
{В самом начале модуля размещается блок описания информационных объектов, которые доступны (могут быть использованы) сторонними пользователями модуля uname.tpu}
Interface {специальная операторная скобка фиксирующая начало блока описаний
информационных объектов и операций по их обработке доступных стороннему
пользователю модуля uname.tpu }
Uses Graph, Crt; {подключение к данному модулю используемых им
других библиотечных модулей}
Type T3= array [1..3] of real; {описание «стандартных для данного
библиотечного модуля» структур информационных объектов,
В переменных этого типа должна размещаться информация о координатах
векторов}
Function Spr(Var a, b: T3): real; {подпрограмма-функция, вычисляющая
скалярное произведение векторов из пространства R3.
Входные параметры: a, b: T3 – координаты перемножаемых векторов,
Выходной параметр: Spr: real – их скалярное произведение}
Function ModV(Var a: T3): real; { подпрограмма-функция, вычисляющая
модуль вектора из пространства R3.
Входной параметр: a: T3 – координаты вектора,
Выходной параметр: ModV: real – его модуль (длина)}
Procedure Vpr(Var a, b, c: T3); {подпрограмма-процедура, вычисляющая
векторное произведение векторов.
Входные параметры: a, b: T3 – координаты перемножаемых векторов,
Выходной параметр: с: Т3l – вектор- результирующий вектор}
{нижеследующая информация библиотечного модуля не доступна
стороннему пользователю модулем uname.tpu}
Implementation {специальная операторная скобка фиксирующая начало блока
описаний информационных объектов и операций по их обработке,
которые доступны только из текстового файла uname.pas }
Function Spr(Var a, b: T3): real; {полная копия оператора из блока Interface }
Var i: integer; R: real; {описание рабочих переменных подпрограммы}
Begin
R:=0; {обнуление рабочей переменной для накопления сумм произведений}
For i:=1 to 3 do R:=R+ a[i]*b[i]; {вычисление скалярного произведения}
Spr:=R {перепись возвращаемого результата в специальную ячейку Spr }
End; {конец описания подпрограммы-функции Spr }
Function ModV(Var a: T3): real; {полная копия оператора из блока Interface }
Begin
ModV:=Sqrt(Spr(a,a)); {вычисление результата}
End; {конец описания подпрограммы-функции ModV }
Procedure Vpr(Var a, b, c: T3); {полная копия оператора из блока Interface }
Begin
C[1]:=a[2]*b[3]- a[3]*b[2]; { покомпонентное вычисление}
C[2]:=a[3]*b[1]- a[1]*b[3]; {результирующего вектора}
C[3]:=a[1]*b[2]- a[2]*b[1];
End; {конец описания подпрограммы-процедуры Vpr}
Begin End. {Обязательное завершение библиотечного модуля}