
- •Информация. Количество информации. Энтропия. Формула Шеннона.
- •Кибернетика. Кибернетические системы. Формальное описание кс.
- •Основные понятия логики. Простые и сложные высказывания.
- •Основы формальной логики. Основные логические операции: отрицание, конъюнкция, дизъюнкция, импликация, эквиваленция. Таблицы истинности.
- •Принципы фон Неймана организации эвм. Структурная схема эвм фон Неймана. Первые эвм: eniac, edvac. Эвм Лебедева. Их технические характеристики.
- •Операционная система, назначение. Требования, предъявляемые к современным ос: расширяемость, переносимость, совместимость, надёжность, безопасность, производительность.
- •Ос как система управления ресурсами: многозадачность, мультипроцессорность.
- •Ос как система управления ресурсами: кэш - память (принцип действия).
- •Ос как система управления ресурсами: файлы, файловая система и файловая структура.
- •Логическая и физическая организация файловой системы, программы навигации по фс.
- •Секторы, дорожки, кластеры, каталоги. Fat- таблица размещения файлов.
- •Три типа информационных моделей данных. Реляционная модель данных. Поля, записи. Основные свойства.
- •Реляционная алгебра. Операции join(соединение), select(выбор), project(проектирование). Ключ – кандидат, первичный ключ. Функциональная зависимость. Полная декомпозиция. Теорема Хита.
- •Топология лвс. Основные сетевые устройства, их назначение.
- •Семь уровней модели osi. Понятие протокола и интерфейса.
- •Нейронные сети. Модель нейрона. Персептрон. Нейронные сети. Задача распознавания образов.
- •Основные элементы языка Turbo Pascal’e.: алфавит, символы, лексемы, выражения и операторы.
- •Основные типы данных в Turbo Pascal’e. 7.0.
- •Логический тип данных. Представление основных логических операций в Turbo Pascal’e.
- •Целый тип данных Turbo Pascal’e. Функции для работы с данными целого типа.
- •Вещественный тип данных. Функции для работы с данными вещественного типа.
- •Символьный типы данных. Функции для работы с данными символьного типа. Символьный тип
Целый тип данных Turbo Pascal’e. Функции для работы с данными целого типа.
byte |
1 байт |
нет |
0 .. 255 (0 .. 28-1) |
word |
2 байта |
нет |
0 .. 65535 (0 .. 216-1) |
integer |
2 байта |
есть |
-32768 .. 32767 (-215 .. 215-1) |
shortint |
1 байт |
есть |
-128 .. 127 (-27 .. 27-1) |
longint |
4 байта |
есть |
-2147483648 .. 2147483647 (-231 .. 231-1) |
Тип |
Размер |
Знак |
Диапазон значений |
Операции с данными целого типа
сложение |
+ |
вычитание |
- |
умножение |
* |
частное от деления |
div |
остаток от деления |
mod |
Операции отношения:
> < = <= >= <>
Поразрядные операции:
and, or, xor, not
Операции сдвига: shl, shr
Стандартные процедуры и функции (для переменных порядкового типа)
inc |
inc(x) — увеличить х на 1 inc(x, 3) — увеличить х на 3 |
|
dec |
dec(x) — уменьшить х на 1 dec (x, 3) — уменьшить х на 3 |
|
ord |
ord(F) – вычисляет порядковый номер F |
|
chr |
Chr(N) – возвращает символ с порядковым номером N, где N : byte. |
|
pred и succ |
возвращают предыдущее и последующее значения соответственно |
|
Low и High |
возвращают наименьшее и наибольшее значения величин данного типа. |
|
Имя процедуры или функции |
Пояснения
|
Вещественный тип данных. Функции для работы с данными вещественного типа.
Вещественные типы Внутреннее представление вещественного числа состоит из двух частей — мантиссы и порядка; каждая часть имеет знак.
Существует несколько вещественных типов, различающихся точностью и диапазоном представления данных.
Точность числа определяется количеством бит, отведённых для записи мантиссы, а диапазон — количеством бит для записи порядка.
Функции для работы с данными вещественного типа
Имя |
Описание |
Примеры |
Randomize |
Исп. для генерирования случайных чисел. |
|
Random Random(N) |
Равном. распр. случ. число [0;1] или [0;N] |
|
Pi |
Число “ПИ” |
|
Trunc(x) |
Отбрасывает дробную часть x |
Tranc(-3.1) = -3 Tranc(5.9) = 5 |
Round(x) |
Округление до ближайшего целого |
Round(3.9)=4; Round(6.5)=7; |
Int(x) |
Целая часть аргумента ( как в математике) |
Int(0.95) = 0 Int(-1.3)= -2 |
Frac(x) |
Дробная часть аргумента x =Int(x)+Frac(x) |
Frac(2.7) = 0.7 Frac(-3.6)= 0.4 |
Символьный типы данных. Функции для работы с данными символьного типа. Символьный тип
Этот тип данных, обозначаемый ключевым словом char, служит для представления любого символа из набора допустимых символов. Для хранения в памяти под каждый символ отводится 1 байт.
К символам можно применять операции отношения (<, <=, >,>=, =, <>), при этом сравниваются коды символов.
Примеры: Var s,t :char; ….. s:=‘f’; t:=‘w’; writeln(s<t); writeln(s>t)
Функции для работы с символьным типом данных.
Имя |
Описание |
Результат |
ord |
порядковый номер символа из таблицы ASCII |
Целый: ord(A) = 64 |
chr |
преобразование номера в символ таблицы ASCII |
Символьный: Chr (64) = A |
pred |
предыдущий символ |
символьный: Pred(S) = R |
succ |
последующий символ |
Символьный: Succ(X) = Y |
upcase |
перевод в верхний регистр |
символьный |
Процедуры ввода-вывода с консоли.
Ввод с Консоли
read(список); readln[(список)];
Список – последовательность имён, разделённых запятыми: Read (a,b);
Ввод значения каждой переменной выполняется так:
значение переменной выделяется как группа символов, расположенных между пробелами;
эти символы преобразуются во внутреннюю форму представления, соответствующую типу вводимой переменной;
значение записывается в ячейку памяти, определяемую именем переменной.
Вывод на консоль
write(список); writeln[(список)];
var n : integer;
b : real;
... n:=1; b:=4.12417; …
writeln(’Значение n = ’, n:3, ’ b = ’, b:5:2, sin(n) + b);
Правила формирования списка в процедуре вывода
Список вывода разделяется запятыми.
Список содержит выражения логических, целых, вещественных, символьного и строкового типов.
После любого значения можно через двоеточие указать количество отводимых под него позиций.
Для вещественных чисел можно указать второй формат, указывающий, сколько позиций из общего количества позиций отводится под дробную часть числа.
Если форматы не указаны, под целое число, символ и строку отводится минимально необходимое для их представления количество позиций.
Под вещественное число отводится 17 позиций, 10 из них — под дробную часть.
Форматы могут быть выражениями целого типа.
Перечисляемый тип и тип-диапазон.
Как происходит описание типов в программе?
type
имя_типа = описание_типа
...
var имя_переменной : имя_типа
Простые типы данных, определяемые программистом это:
Перечисляемый тип
Тип-диапазон
Перечисляемый тип данных
type
Имя_типа = (список имен констант);
type
Colors = (Black, Blue, Green, Cyan, Red, Magenta, Brown);
…
var m, n : Colors;
…
m := Blue; n := m;
Пояснение: ord(Green)=2; m:=Red; n:= succ(Magenta);
Интервальный тип данных
Type имя_типа = Const_1 .. Const_2
Type Hour = 0 .. 23; Min = 0..59;
Cent_20 = 1901 .. 2000;
Range = -100 .. 100;
Letters = ’a’ .. ’z’;
Degree = 0 .. 360;
var r : -100 .. 100; или var r : Range;
Var x:Letters; …
Write(High(x),Low(x));
Массивы в Turbo Pascal’e.
Массив - это упорядоченная совокупность однотипных элементов, рассматриваемая как единое целое, снабжённая индексами. Доступ к элементу массива осуществляется указанием его индекса.
Описание типа Массив:
Type имя_типа_массива = array [тип_индексов]
of тип_элементов массива
Примеры описания массивов
type mas = array [1 .. 7] of real;
Color = array [byte] of mas;
A = array [1..10] of boolean;
Const n=50;
const K : mas = (1, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2);
var с : mas;
a, b : array [1 .. n] of integer;
Y: array [char] of byte;
M:array[2..5] of string [4] ;
…
M[2]:=‘Неуд’; M[3]:=‘Удов’; M[4]:=‘Хор’; M[5]:=‘Отл’;
Записи в Turbo Pascal’e.
Запись – структура данных, состоящая из конечного числа компонентов, называемых полями.
Поля записи могут быть различных типов. Каждое поле имеет имя. Запись, как единое целое, занимает непрерывную область памяти.
описание поля записи: имя_поля : тип_поля;
Данные типа «запись» (примеры).
type cars = record
name : string [25];
price : real;
number : integer;
end;
var g1, g2 : cars;
tabl : array [1 .. 100] of cars;
student : record
name : string [30];
group : byte;
marks : array [1 .. 5] of byte;
end;
Как обратиться к полям записи?
<Имя_переменной>.<имя поля> := <выражение>
Stud.name:=‘Олег’;
Stud.gend:=‘M’;
Stud.kurs:=3; … и т.д.
Строки в ТР.
В Паскале существует три типа строк:
стандартные (string);
определяемые программистом на основе string;
строки в динамической памяти.
Строка типа string может содержать до 255 символов.
Под каждый символ отводится по 1 байту, в котором хранится код символа. Еще один байт отводится под фактическую длину строки – это байт под номером 0. Т.е. для хранения данных типа string отводится 256 байт.
var sa : string; { строка стандартого типа }
Операции со строками
Присваивание
Конкатенация
Сравнение
Файлы в Turbo Pascal’e; доступ к файлу. Инициация файла.
Файл – именованная область внешней памяти компьютера либо это логическое устройство – возможный приёмник или источник данных (CON, PRN, AUX,NUL).
В ТР используются три типа файлов:
Текстовые файлы
Типизированные файлы
Нетипизированные
VAR <имя_ФП1> : File of <тип>; - типизированный файл;
<имя_ФП2> : File; - нетипизирован. файл
<имя_ФП3> : TEXT; - текстовый файл
Доступ к содержимому файлов
Последовательный доступ – для тестовых файлов;
Прямой доступ – для типизированных и нетипизированных файлов; Все элементы, из которых состоит файл с прямым доступом, нумеруются от 0 до N; в конце файла. Находится специальный код =маркер конца файла.
Для файлов с прямым доступом вводится понятие
текущей длины – количество элементов файла.
Указатель файла – адрес текущего элемента файла, предназначенного для обработки. Инициировать файл означает указать для этого файла направление передачи данных. В Турбо Паскале можно открыть файл для чтения, для записи информации, а также для чтения и записи одновременно.
Для чтения файл инициируется с помощью стандартной процедуры RESET:
RESET (<ф.п.>); Здесь <ф.п.> - файловая переменная.
При выполнении этой процедуры дисковый файл или логическое устройство подготавливается к чтению информации. В результате специальная переменная-указатель, связанная с этим файлом, будет указывать на начало файла, т.е. на компонент с порядковым номером 0.
Если делается попытка инициировать чтение из несуществующего файла, возникает ошибка периода исполнения, которая может быть сообщена программе ненулевым значением встроенной функции IORESULT типа WORD. Например, следующий фрагмент программы позволяет установить, существует ли требуемый файл на диске:
var
f : file of char;
begin
assign(f,'myfile.dat');
$I-} {Отключаем контроль ошибок ввода-вывода}
reset(f);
{$I+} {Включаем контроль ошибок ввода-вывода}
if IOResult <> 0 then
..... {Файл не существует}
else
..... {Файл существует}
end.
Указатели Turbo Pascal’e. Правила использования указателей.
Переменные, предназначенные для хранения адресов областей памяти, называются указателями.
В указателе можно хранить адрес данных или адрес программного кода.
Адрес занимает четыре байта и хранится в виде двух слов, одно из которых определяет сегмент, второе — смещение.
Виды указателей
Указатели стандартные (var p : pointer)
Типизированные
type pword = ^word;
var pw : pword;
Операции с указателями:
присваивания; p1 := p2;
проверки на равенство и неравенство: if p1 = p2 then … или if p <> nil then …
Правила присваивания указателей
Любому указателю можно присвоить стандартную константу nil, которая означает, что указатель не ссылается на какую-либо конкретную ячейку памяти: p1 := nil;
Стандартные функции для работы с указателями:
seg(x) : word — возвращает адрес сегмента для х;
ofs(x) : word — возвращает смещение для х;
addr(x) : pointer – содержит адрес аргумента x;
cseg : word — возвращает значение регистра сегмента кода CS;
dseg : word — возвращает значение регистра сегмента данных DS;
ptr(seg, ofs : word) : pointer — по заданному сегменту и смещению формирует адрес типа pointer.
Динамические структуры данных (списки).
ДСД – способ организации данных, при котором память распределяется во время работы программы по мере необходимости отдельными блоками, связь между, которыми осуществляется с помощью указателей; размещение данных происходит в динамической памяти. В отличие от массивов и записей ДСД могут занимать несмежные участки памяти.
Элемент любой ДСД состоит из двух частей:
информационной;
указателя;
Элемент ДС описывается в виде записи.
Линейные списки
Каждый элемент ЛС связан со следующим и, возможно, предыдущим. Каждый элемент ЛС содержит ключ – это часть поля данных. Ключ идентифицирует элемент
Можно выполнять следующие операции
начальное формирование списка;
добавление элемента в конец списка;
чтение элемента с заданным ключом;
вcтавка элемента в заданное место списка;
удаление элемента с заданным ключом;
сортировка списка по ключу
Основные процедуры и функции для работы с файлами.
Файл – именованная область внешней памяти компьютера
либо это логическое устройство – возможный приёмник илил источник данных (CON, PRN, AUX,NUL).
Преобразование данных при работе с файлами.
Преобразования данных при чтении – записи типизированных и нетипизированных файлов не происходит. Данные имеют одинаковое представление как в памяти компьютера, так и при хранении в файле;
Доступ к содержимому файлов
Последовательный доступ – для тестовых файлов;
Прямой доступ – для типизированных и нетипизированных файлов;
Основные функции для работы с файлами
fp- файловая переменная
Close(fp) –закрыть файл;
Rename(fp,<Новое_имя>) – переименовать файл;
Erase(fp) – удаляет файл (сначала его надо закрыть);
Flush(fp) – запись всех изменений в файл на диске;
EOF(fp) – логическая функция = True, если достигнут конец файла, иначе EOF = False;
IOResalt – признак последней операции ввода-вывода. При успешном завершении IOResalt = 0.
Операторы языка Turbo Pascal’e.: присваивания, составной. Оператор безусловного перехода.
Оператор присваивания
переменная := выражение;
a := b + c;
x := 1;
x := x + 0.5;
Простейшие операторы ТР 7.0
Составной оператор:
Begin S1; S2; …. End;
Пустой оператор: ; ;
Безусловные операторы и функции:
Goto <метка> ;
Break – выход из цикла;
Exit – выход из подпрограммы;
Halt(n) – завершает работу программы с кодом = n
Операторы ветвления Turbo Pascal’e. (условные операторы). Оператор Case.
Операторы ветвления IF … then … else
If <выражение> then S1 else S2;
If <выражение> then S;
Операторы ветвления IF
sx:=1;
if x < 0 then sx := -1;
=======================================
if (a < b) and (a < d) then s:=‘left’
else if (a > b) and (a > d) then s:=‘right’
else s:=‘middle’
где расположена (.) a
Оператор выбора CASE
case выражение of
константы_1 : S1;
константы_2 : S2;
………..
константы_n : Sn;
[ else : S0; ]
end;
Пример (CASE)
Var a: byte;
……
case a of
4 : writeln(’4’);
5, 6 : writeln(’5 или 6’);
7 .. 12: writeln(’от 7 до 12’);
end;