- •1. Системы счисления
- •Десятичная система счисления
- •Двоичная система счисления
- •Восьмеричная и шестнадцатеричная системы счисления
- •Перевод чисел из любой системы счисления в десятичную
- •Перевод чисел из десятичной системы счисления в любую другую
- •2. Алгебра логики
- •2.1. Логические операции
- •Инверсия
- •Конъюнкция
- •Дизъюнкция
- •Эквиваленция (равнозначность)
- •Импликация
- •Антиконъюнкция
- •Антидизъюнкция
- •2.2. Нормальные формы
- •Конъюнктивная нормальная форма
- •Дизъюнктивная нормальная форма
- •3. Применение средств алгебры логики для описания функционирования устройств компьютера
- •Логические схемы
- •Построение логических схем
- •4. Практическая работа 1. Системы счисления
- •Вопросы для самоконтроля
- •5. Практическая работа 2. Алгебра логики
- •Решение логических задач средствами алгебры логики
- •Индивидуальное задание к модулю 1. Построение логических схем по заданным булевым выражениям
- •Приложение 1. Практическое занятие 1 «Системы счисления»
- •Приложение 2. Практическое занятие 2 «Алгебра логики»
- •Приложение 3. Индивидуальное задание. Модуль №1
- •Приложение 4
- •6. Введение в алгоритмизацию
- •7. Знакомство со средой Турбо Паскаль
- •7.1. Общие сведения
- •7.2. Запуск Турбо-Паскаля на выполнение
- •7.4. Работа с текстовым редактором Турбо-Паскаля
- •Клавиши перемещения курсора
- •Работа с блоками текста
- •8. Основы алгоритмизации
- •8.1. Алгоритм
- •8.2. Алгоритмические структуры
- •Самоконтроль
- •9.1. Алфавит языка
- •9.2. Арифметические выражения и правила их записи
- •Знаки операций
- •Операции div и mod
- •9.3. Типы данных
- •Целые типы
- •Логический тип
- •Символьный тип
- •Строковый тип
- •Вещественный тип
- •9.4. Стандартные функции
- •9.5. Структура программы на языке Паскаль
- •9.6. Описательная часть программы
- •9.7. Исполнительная часть программы
- •9.8. Оператор присваивания
- •9.9. Операторы ввода-вывода
- •Оператор ввода
- •Оператор вывода
- •9.10. Комментарии в программе
- •Самоконтроль
- •Задание
- •Пример программы линейной структуры
- •Приложение 1. Таблица вариантов задания №2
- •10. Ветвления
- •10.1. Операторы условия и перехода
- •Логический оператор
- •Операции отношения
- •Логические операции
- •10.2. Оператор выбора
- •Самоконтроль
- •Задание
- •Пример программы разветвленной структуры
- •Приложение 1. Таблица вариантов задания 3
- •11.2. Оператор цикла с постусловием
- •11.3. Оператор цикла с предусловием
- •11.4. Вложенные циклы
- •11.5. Оператор прерывания цикла
- •Самоконтроль
- •Задание
- •Пример программы циклической структуры
- •Приложение 1. Таблица вариантов задания 4
- •12. Операции с индексированными переменными
- •12.1. Массивы одномерные
- •12.2. Описание массивов
- •Ввод элементов массива
- •Вывод элементов массива
- •12.3. Обработка одномерных массивов
- •Самоконтроль
- •Задание
- •Пример программы обработки одномерного массива
- •Приложение 1. Таблица вариантов задания 5
- •13. Двумерные массивы
- •13.1. Матрицы
- •13.2. Описание двумерного массива
- •Ввод элементов двумерного массива
- •Вывод элементов двумерного массива
- •13.3. Обработка двумерных массивов
- •Самоконтроль
- •Задание
- •Пример программы обработки двумерного массива
- •Приложение 1. Таблица вариантов задания 6
- •Структура программы, содержащей процедуру (функцию)
- •14.2. Процедуры
- •14.3. Вложенные процедуры
- •Директива forward
- •14.4. Функции
- •Самоконтроль
- •Задание
- •Пример программы с использованием подпрограмм
- •Приложение 1. Таблица вариантов задания 7
- •15. Обработка строк текста
- •15.1. Символьные переменные
- •Фрагмент таблицы ASCII-кодов букв латинского алфавита
- •Фрагмент таблицы ASCII-кодов букв русского алфавита
- •15.2. Функции обработки символьных переменных
- •15.3. Строковые переменные
- •15.4. Функции обработки строковых переменных
- •15.5. Процедуры обработки строковых переменных
- •15.6. Примеры обработки строковых переменных
- •Самоконтроль
- •16. Структурированные типы данных
- •Записи
- •Самоконтроль
- •Задание
- •Пример программы использования массива записей
- •Приложение 1
- •Приложение 2. Таблица вариантов ИДЗ 2
Для описания символьных переменных используют слово char и они занимают 1 байт памяти.
var c:char;
Над символьными переменными допустимы только две операции: присвоение и сравнение. При сравнении символов сравниваются их коды.
Символьные константы задаются в апострофах: c:=‘A’;
Фрагмент таблицы ASCII-кодов букв латинского алфавита
|
A |
65 |
a |
97 |
Коды малых букв от |
|
|
|
|
|
заглавных отличаются на 32. |
|
B |
66 |
b |
98 |
|
|
|
|
|
|
|
|
… |
… |
… |
… |
|
|
|
|
|
|
|
|
Z |
90 |
z |
122 |
|
Фрагмент таблицы ASCII-кодов букв русского алфавита |
|||||
|
|
|
|
|
|
|
A |
128 |
а |
160 |
Коды малых букв от |
|
B |
129 |
б |
161 |
заглавных отличаются на 32. |
|
… |
… |
… |
… |
|
|
П |
143 |
п |
175 |
|
|
|
|
|
|
|
|
P |
144 |
р |
224 |
Коды малых букв от |
|
… |
… |
… |
… |
заглавных отличаются на 80. |
|
Я |
159 |
я |
239 |
|
|
|
|
|
|
|
|
Е |
240 |
е |
241 |
|
|
|
|
|
|
|
15.2. Функции обработки символьных переменных
chr(x:byte):char - возвращает символ, соответствующему коду x. Например:
writeln( chr(65) );
Результат на экране:
заглавная буква A латинского алфавита.
ord(c:char):byte
возвращает число, соответствующее коду символа c. Например:
writeln( ord(‘A’) );
Результат на экране:
число 65 – код заглавной буквы A латинского алфавита.
upcase (c:char):char –
преобразует малые буквы латинского алфавита в заглавные. Например:
98
writeln( upcase(‘a’) );
Результат на экране:
заглавная буква A латинского алфавита.
Если аргументом этой функции окажется не малая буква латинского алфавита, то эта функция никаких действий не выполнит.
pred(c:char):char -
возвращает предшествующий символ.
Например: writeln( pred('B') );
Результат на экране:
заглавная буква A латинского алфавита, код которой на 1 меньше кода буквы B.
succ(c:char):char -
возвращает последующий символ. Например:
writeln( succ(‘A’) );
Результат на экране:
заглавная буква B латинского алфавита, код которой на 1 больше кода буквы A.
Задача.
Вывести на экран таблицу ASCII-кодов.
program ASCII; var
i: byte; begin
for i:=1 to 255 do writeln (chr(i),'=',i); end.
Тип char в программах на Паскале часто используют для хранения вводимых с клавиатуры ответов на запросы меню.
Для этого используют функцию readkey. Работу этой функции обеспечивает модуль Crt. Приведем пример использования:
Program char; uses
crt; begin repeat
…
ch:= readkey
until (ch='n') or (ch='N'); end.
99
Цикл действий продолжается до тех пор, пока не будет введено с клавиатуры 'n' или 'N'.
15.3. Строковые переменные
Строковые переменные используются для хранения любой цепочки символов и занимают 255 байт памяти. Для описания строковых переменных используют служебное слово string.
а) var s:string; b) var
t:string[20];
По умолчанию под строковую переменную s будет отведено 255 байт памяти (вариант а), а под строковую переменную t будет отведено 20 байт (вариант b).
Строковые константы задаются в апострофах: S:=’Москва’;
Ввод строковых переменных осуществляется с помощью оператора - readln, а вывод - writeln.
var S:string; begin readln(s);
…
Ввод цепочки символов завершается нажатием Enter. Если количество введенных символов превышает 255, то «хвост» отбрасывается, и в переменную попадают только первые 255 символов.
Над строковыми переменными допустимы три операции: присвоение, сравнение и «слияние».
Существует два способа обработки строковых переменных: обработка всей строки как единого целого;
строковые переменные можно рассматривать как одномерный массив символов (элементов типа char) и применять к ним функции символьных переменных.
Операция слияния: d:= 'Москва - столица'; a:= 'России';
d + a 'Москва - столица России'
15.4. Функции обработки строковых переменных
length(s:string):byte - подсчитывается фактическая длина строки, включая пробелы и знаки препинания.
Например:
…
s:=’Москва’;
100
wrtiteln(length(s));
Результат на экране:
Число 6, количество символов в сломе Москва.
copy(s:string,i,n):string -
копируется фрагмент строки s.
Где s - переменная, из которой копируется фрагмент; i - позиция, с которой копируется;
n - количество копируемых символов.
Если i и n - вне пределов строки, сообщения об ошибке не будет. Если i>length(s ) результат - строка нулевой длины.
Если n >length(s ) результат - фрагмент от i до конца строки. Например:
…
s:='электрификация'; b:=copy(s,8,3)+copy(s,12,3); writeln(s);
…
Результат на экране: фикция
pos(t:string,s:string):byte -
осуществляет поиск подстроки t в строке s.
Результатом этой функции является позиция вхождения t в s. Если подстрока не найден - результат 0.
Например:
…
t:='ритм'; s:='алгоритм'; k:=pos(t,s); wrieln(‘k=’,k);
Результат на экране: k=5
15.5. Процедуры обработки строковых переменных
insert(t,s,i);
- вставить подстроку t в строку s начиная, начиная с позиции i. Например:
…
s:='ритм'; insert(‘алго’,s,1); wrieln(s);
101