- •Конспект лекций по курсу «Информатика» для студентов очной и заочной форм обучения.
- •Базовые положения
- •§.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. Элементы объектно-ориентированного программирования
- •Основная рекомендуемая литература.
6.2. Явные константы
Опр. Явной константой называется информационный объект, содержимое которого совпадает с названием.
Тип констант определяется содержимым константы, т.е. ее названием, т.е. ее формой записи.
Примеры числовых констант: 23.078 (тип real) 67 (тип byte)
2345 (тип word) -309 (тип integer) 35.78E3 (тип real, число 35780)
-67.04D-4 (тип double, число –0.006704).
Содержимое констант не может быть изменено в процессе выполнения программы.
6.3. Оператор описания var
Операторы VAR относятся к классу команд-описаний, т.е. изначально предназначены для общения именно с программой-транслятором. Назначение этих операторов – сообщить переводчику: как следует понимать имена собственные (идентификаторы), которые придумывает сам программист.
Синтаксис оператора VAR:
Var и1, и2, и3, . . . . ,Иn: Итипа;
Примеры:
Var c, Aa, Wes: real;
Var i, Nomer, ii, iii: integer;
Пояснение структуры оператора:
Var – ключевое слово оператора, которое необходимо для распознавания данного типа операторов. Var - зарезервированное слово языка Pascal. За ключевым словом обязательно следует символ-разделитель «пробел».
И1, И2, И3, . . . . ,Иn – перечень идентификаторов, т.е. имен собственных придуманных программистом для вводимых им информационных объектов. Символом-разделителем в перечне является запятая. Эстетика оформления требует чтобы после каждого знака препинания ставился пробел. Завершает перечень описываемых переменных обязательный символ-разделитель «двоеточие».
Итипа – описание типа, т.е. побитной структуры перечисленных информационных объектов. Тип может задаваться либо одним именем (зарезервированное или ранее описанное слово-идентификатор), либо целым стандартизированным предложением-описанием.
Все операторы (предложения-команды) языка Pascal завершаются символом-разделителем «точка с запятой». Символ «;» следует воспринимать, как знак восклицания «!», которым завершаются все команды, т.е. предложения естественного языка, написанные в повелительном наклонении.
Семантика (варианты звуковой транскрипции) операторов из приведенных примеров (передача смысла команд для транслятора, но лексикой естественного языка):
- Выделить а оперативной памяти место для размещения трех информационных объектов (ИО, т.е. переменных) с именами c, Aa, Wes, размер и структура которых имеют стандартное имя real!
- Разместить в оперативной памяти ИО i, Nomer, ii, iii стандартного типа integer!
Работа транслятора: каждому идентификатору соотнесен адрес фрагмента памяти известного размера.
Прагматика оператора Var (целесообразность или смысл, вкладываемый в команду ее создателем, который может быть полезен только для другого программиста, желающего детально разобраться в программе) оформляется в виде развернутых пояснений смысла каждого из описываемых информационных объектов. Текст пояснений, который размещается в фигурных скобках, транслятором игнорируется.
Пример возможных комментариев:
{ c-длина гипотенузы }
(* Aa-площадь квадратной ячейки сетки *)
Все языки программирования высокого уровня характеризуются «избыточностью синтаксиса», т.е. необходимостью написания многих «лишних» слов и различных символов-разделителей. Это объясняется тем, что в таких текстах человеку-программисту проще визуально обнаруживать свои ошибки. Для передачи транслятору только одной семантики, вполне хватило бы сокращенных структур команд, которые используют только ключевые слова и разделители-пробелы. Например, вышеописанные операторы могли бы выглядеть так:
Var c Aa Wes real i Nomer ii iii integer
Что очень тяжело для визуального восприятия человеком!
6.4. Оператор присвоения :=
Опр. Выражением языка программирования называется чередующаяся последовательность из информационных объектов обработки (ИО) и операций по их обработке (ОО).
Примеры выражений:
a + b
a * (b - c) + a
(a + sin(a)) / ((b - cos( a + 2.4)) * 7)
Аналог понятия «выражение на ЯП» – алгебраическое выражение.
Свойства выражений:
1. Выражение - всегда фрагмент (только часть) предложения.
2. Смыслом выражения является результат выполнения указанных операций над указанными объектами:
2.1. результатом всегда только один информационный объект,
2.2. результат имеет известный тип, однозначно определяемый типами входящих в выражение ИО и ОО,
2.3. результат не имеет уникального имени, т.е. размещается где-то в оперативной памяти по адресу известному процессору, но недоступному программисту.
В выражениях допускается использование систем вложенных круглых скобок, уточняющих реальную очередность выполнения операций, которые записаны последовательным текстом.
Опр. Оператором присвоения называется команда процессору, заставляющая его вычислить указанное выражение и поместить результат в указанное место оперативной памяти.
Команда присвоения – типичный исполнимый оператор, т.е. предложение-команда предназначенная именно для процессора и переводимая с ЯП на базовый язык процессора «дословно».
Работа транслятора:
Сообразно указанному в описании типу переменных подбираются соответствующие базовые операции обработки,
При необходимости, разнотипные переменные приводятся (преобразуются) к общему типу,
Сложные (многооперационные) выражения разделяются на последовательность стандартных бинарных операций.
Синтаксис оператора присвоения:
Ирез := выражение ;
Идентификатор Ключевое Конец
результата слово оператора
Пример:
m := v * Ro ;
Звуковая транскрипция семантики (передача естественным языком смысла команды, который понимает процессор): перемножить содержимое информационных объектов с именами v и Ro и поместить результат в ИО с именем m.
Прагматика:
{ вычисляется масса тела по заданной плотности -Ro и объему-v }
Типичные синтаксические ошибки, допускаемые начинающими программистами в операторах присвоения:
использование неописанных переменных,
пропуск символов операций (обычно знака умножения),
несовпадение количества открывающих и закрывающих скобок,
несоответствие типа операции типу объекта обработки (например, вещественное число нельзя целочисленно делить),
несоответствие типа результата выражения и типа переменной, куда его следует поместить (например, вещественные числа, даже если они не имеют дробной части, нельзя записать в переменные типа integer без специальной команды-округления).
Семантически ошибки, т.е. невозможность выполнения процессором указанных действий в операторах присвоения, проявляются только на этапе выполнения программы: при реальном выполнении указанных в операторе действий над конкретными содержимым указанных объектов обработки.
Причина типичных семантических ошибок (у начинающих программистов): использование переменных, значения которых к моменту выполнения оператора еще не определены.
Поскольку, все ИО обрабатываемые ЭВМ имеют конечные размеры (занимают стандартные фрагменты памяти), а стандартные операции по их обработке могут порождать информацию, которая не помещается в стандартный фрагмент памяти. Например, результат перемножения двух целых чисел может превосходить значение 32000, что фатально для процессора, т.к. не может быть размещено в отведенном для результата фрагменте памяти.
Опр. ошибками времени исполнения называются ошибки программы, проявляющиеся непосредственно и только при выполнении программы.
Единственное, чем может ЭВМ помочь программисту в таких ситуациях сообщить:
в каком операторе произошла ошибка,
какая базовая операция обработки не может быть выполнена.
Ошибки времени исполнения - самые сложные для исправления, т.к. причины их возникновения весьма разнообразны:
выбранная математическая модель просто не соответствует реальному объекту, поэтому физически разумные, «нормальные» числовые значения исходных параметров порождают катастрофические результаты в вычислениях,
используется плохой алгоритм (численный метод) решения, математически верно сформулированной задачи,
технические ошибки в переводе математических формул на язык программирования,
технические ошибки при наборе текста программ.