- •Конспект лекций по курсу «Информатика» для студентов очной и заочной форм обучения.
- •Базовые положения
- •§.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. Элементы объектно-ориентированного программирования
- •Основная рекомендуемая литература.
8.4.1. Программа поиска в отсортированных массивах.
Задача: поиск ближайших (слева и справа) чисел к заданному числу b, из массива чисел {ai} отсортированных «по возрастанию».
Program N9;
Var a: array[1..1000] of real;
i, j, N, K, Imin, Imax: integer; b: real;
Begin
N:=678; b:=35.67; {программное присвоение количества используемых
элементов массива и объекта поиска}
{заполнение массива a[] случайными, но упорядоченными
по возрастанию положительными числами }
a[1]:=Random(70);
for i:=2 to N do a[i]:=a[i-1]+Random(70);
K:=Raund(Ln(N)/Ln(2)); { K- количество требуемых проверок}
{проверка частных случаев расположения b }
if b<a[1] then begin Writeln(‘b<a[1], где a[1]=’, a[1]:6:0); Exit end;
if b>a[N] then begin Writeln(‘b>a[N], где a[N]=’, a[N]:6:0); Exit end;
Imin:=1; Imax:=N;
for j:=1 to K do
begin
i:=(Imax+Imin) div 2;
if b<a[i] then {a[i]-правая граница области локализации b} Imax:=i
else {a[i]-левая граница области локализации b } Imin:=i;
end;
Writeln(‘число b=’,b:10:3,’ находится между числами ’,
a[Imin]:10:0,’ и ‘,a[Imax]:10:0);
End.
9. Символьные переменные
Опр: Символ - специальный рисунок (значок, иероглиф) используемый для изображения фрагмента (только части!) информации в письменной форме некоего языка (естественного, алгорифмического, программирования).
Определяющее свойство: Символ – базовый, т.е. неделимый и не упрощаемый, элемент письменного языка.
В памяти ЭВМ символы кодируются (номеруются) натуральными числами, а соответствующие пронумерованным символам рисунки содержатся в специальных справочниках - кодовых таблицах.
Стандартные таблицы типа ANSI содержат по 256 символов. Числовой код такого символа занимает ровно один байт памяти.
Поскольку, периферийные устройства ЭВМ (клавиатура, монитор и принтер) могут использовать разные таблицы ANSI, порядок расположения в них одних и тех же символов, должен быть обязательно согласован!
Расширенный стандарт кодирования UNICODE содержит 65536 символов. Код каждого символа из такой таблицы занимает ровно два байта памяти, т.е. описывается числами от 0 до 65535.
В кодовых таблицах символы условно упорядочены: буквы располагаются в алфавитном порядке, цифры по возрастанию. Обычно, в начале кодовой таблицы расположены специальные символы, далее цифры, за ними – заглавные буквы латинского алфавита, затем – строчные буквы латинского алфавита, затем – буквы кириллицы и т.д.
Тип символьных (литерных) переменных в языке Pascal именуется зарезервированным символом Char. Информационные объекты типа Char занимают в оперативной памяти ЭВМ ровно один байт.
Пример: Var a, b, cc: char;
Звуковая транскрипция оператора: создать в оперативной памяти переменные с именами a, b и cc для размещения в них информации типа Char.
Над литерными переменными не предусмотрены бинарные операции порождения. Фразы “сложить два символа” или “перемножить два символа” – бессмысленны.
Стандартная обработка литерных переменных, в языке Pascal, ограничена операциями: ввода-вывода, сравнения, присвоение и преобразование типа.
Опр. Символ, заключенный в простые кавычки, или натуральное число, которому предшествует специальный значок # (решетка), являются литерными константами.
Примеры записи и озвучания (семантики) операторов:
сс:=а;{в переменную сс скопировать содержимое переменной а!}
cc:=’?’; {в литерную переменную сс внести символ “?” ! }
cc:=#98; {в переменную сс внести символ с числовым кодом 98! (напомню, что код 98 соответствует символу “b”)}.
Над переменными типа Char, которые упорядочены сообразно их числовым кодам, допустимы все операции сравнения: =, < >, >, >=, <, <=.
Например: ‘a’ < ‘b’– поскольку числа 97<98 , а 97 и 98 – это коды (номера) символов “a” и “b”.
Консольный ввод символьных переменных реализуется стандартными процедурами Read и ReadLN.
Пример: Read (a, cc);
Семантика: внести в переменные a и cc коды символов, которые указанны на клавишах нажимаемых пользователем!
Если пользователь нажимает последовательно четыре следующие клавиши: <T> <Enter> <Q> <Enter>, то в переменную а будет помещен код символа ”T”, в переменную cc код символа “Q”. Курсор останется в той позиции экрана, где завершился процесс ввода, т.е. сразу за буквой Q.
Эту же информацию можно ввести последовательно нажимая три клавиши <T> <Q> <Enter>.
Типичная ошибка при вводе символьной информации – использование символа-пробела в качестве разделителя между другими «значимыми» символами: символ-пробел такой же значимый символ как и все прочие (его код 32), но он не имеет рисунка-иероглифа.
Для вывода на экран используются процедуры Write и WriteLN.
Пример: writeln (cc, a, cc:3);
Семантика: вывести (распечатать) на экран символы, коды которых содержатся в литерных переменных cc, a, cc, после печати курсор сместить в начало следующей строки экрана! Для вывода информации (содержимого) последней переменной отвести три позиции экрана.
Результат выполнения этого оператора: QT _ _ Q.
Преобразование типов переменных.
Получение числового кода (символа), т.е. порядкового номера символа в кодовой таблице.
Пример: Var i:byte;... i:=ord(‘a’);
Поскольку символ а зарегистрирован в кодовой таблице под номером 97, т. е. в переменную i будет помещено число 97.
Создание символьной переменной по заданному номеру в кодовой таблице.
Пример: a:=chr(107);
Поскольку под номером 107 в кодовой таблице зарегистрирован символ “k”, то в переменную а будет помещен символ именно символ буквы k.
Литерные переменные являются базовыми элементами для образования сложно структурированных символьных переменных: слов, предложений и текстов.