
- •1. Языки программирования. Структурная технология программирования. Реализация основных алгоритмических структур на процедурном языке программирования.
- •2.Базовые алгоритмические структуры: процедуры и функции, рекурсивные функции и процедуры.
- •3.Составные структуры данных: определение новых типов данных, одномерные и двухмерные массивы, строки, множества, записи, файлы.
- •1. Массивы
- •3. Множества
- •4. Записи
- •5. Файлы
- •4. Динамические структуры данных: списки, стеки, очереди.
- •5. Понятие о логическом программировании. Структура программы в Прологе. Предикаты, правила, факты.
- •10) Информация, ее виды и свойства. Измерение информации.
- •11) Кодирование информации. Условие Фано. Коды Шеннона-Фано и Хаффмана.
- •12) Достоверность передачи информации. Коды Хемминга.
- •Кодирование с выявлением ошибок (коды с проверкой на четность).
- •3. Кодирование с исправлением ошибок (самокорректирующиеся коды).
- •13) Понятие о конечных автоматах. Эквивалентность и произведение конечных автоматов.
- •Алгоритмы и их свойства. Существование алгоритмически неразрешимых проблем. Машина Поста.
- •Формализация понятия алгоритма . Машина Тьюринга.
- •Формализация понятия алгоритма. Нормальные алгоритмы Маркова.
- •Формализация понятия алгоритма. Рекурсивные функции.
- •18. Формальная грамматика. Метаязыки. Форма Бэкуса-Наура. Синтаксические диаграммы.
- •Инструментальное программное обеспечение
- •Системы программирования
- •Виды инструментального по
- •Определение
3. Множества
В математике под множеством понимается некоторый неупорядоченный набор элементов. {1,2,3}
В Турбо-Паскале под множеством понимают ограниченный, неупорядоченный набор различных элементов одинакового типа. [1,2,3], [‘A’,’B’,’C’].
Операции над множествами: объединение, пересечение, разность множеств в Паскале: +, *, -. Логическая операция in и ее использование для определения принадлежности элемента множеству.
Использование типа множества в программе.
{таблица простых чисел p < 200}
const m=200;
type mn=set of 2..m;
var p,n:mn;
k,t:integer;
begin clrscr;
p:=[];n:=[2..m];t:=2;
repeat while not(t in n) do t:=t+1;
p:=p+[t];
k:=t;
repeat n:=n-[k];k:=k+t
until k>m
until n=[];
writeln('Простые числа в интервале от 2 до',m:5);
for k:=2 to m do
if k in p then write(k:4);
writeln; readln
end.
4. Записи
Запись - это структура данных, состоящая из фиксированного числа элементов. В одном поле данные имеют один и тот же тип, а в разных полях могут иметь разные типы.
Общий вид описания записи следующий:
var <имя_записи>: record <список_элементов_1>: <тип_1>; {поле 1} <список_элементов_1>: <тип_1>; {поле 2} ---------------------------------------------------------------- <список_элементов_1>: <тип_1>; {поле n} end;
Обращение к элементу записи выполняется с помощью составного (уточненного) имени. Общий вид составного имени такой:
<имя_записи>.<имя_элемента>.
Элемент записи используется в программе так же, как и обычная переменная, т.е. элемент записи можно указывать как в левой части оператора присваивания, так и в правой его части (в выражениях). Над элементом записи можно выполнять любые действия, допустимые для данных его типа. Обращение к записи в целом, а не только к ее элементам допускается лишь в операторе присваивания вида S1:=S2;
где S1, S2 - записи с идентичной структурой.
Отметим сходство и различие между массивами, множествами и записями:
1.записи и массивы используют для описания упорядоченной последовательности величин. Множества используют для описания неупорядоченного набора элементов;
2.все элементы массива и множества должны быть одного и того же типа. Записи могут содержать элементы разных типов;
3.к элементам массива и записи делается прямой доступ (по имени элемента массива и составному имени элемента записи), к элементам множества нет прямого доступа.
/*составление списка успевающих студентов-мужчин */
program list_mans;
uses crt;
const mn=10;
type student=record
fio:string[20];
pol:char;
address:string[8];
ex1,ex2,ex3:2..5;
bal:integer;
end;
var x:array[1..mn] of student;
i,k,j,n:integer; s:char;
y:6..15;
z:student;
procedure input;
begin for i:=1 to n do with x[i] do
begin
write('Введи ФИО ',i,' студента: '); readln(fio);
write('введите пол студента: '); readln(pol);
write('введи адрес:');readln(s);
if s='t' then address:='town' else address:='comhouse';
write('Введи его оценки: '); readln(ex1,ex2,ex3);
bal:=ex1+ex2+ex3
end;
end;
begin clrscr; write('Введи кол-во учеников: ');
readln(n); input;
writeln('СПИСОК УСПЕВАЮЩИХ СТУДЕНТОВ-МУЖ. ':45);
for i:=1 to 60 do write('-');writeln;
writeln(' N | ФИО |pol| address| мат| физ| инф| балл| ');
for i:=1 to 60 do write('-'); writeln;
for i:=1 to n do with x[i] do
IF (pol='м') and (ex1>2) and (ex2>2) and (ex3>2) then
writeln(i:3,fio:20,pol:3,address:9,ex1:5,ex2:5,ex3:5,bal:6);
writeln; readln
END.