
- •«Системное программное обеспечение»
- •Лабораторная работа №1 Формирование очередей в динамической памяти
- •Лабораторная работа №2 Программирование конечного автомата
- •Лабораторная работа №3 Программирование конечного автомата для транслитерации
- •2) Исходный текст программы:
- •3) Результат:
- •Лабораторная работа №4 Программирование конечного автомата
- •2) Исходный текст программы:
- •Лабораторная работа №5 Программирование лексического анализатора
- •Лабораторная работа №6 Лексический анализатор. Процедура, которая не смещает указатель входного потока
- •Лабораторная работа №7 Рекурсивный спуск
- •2) Исходный текст программы:
- •Лабораторная работа №8 Синтаксический анализатор логического выражения.
- •2) Исходный текст программы:
- •Лабораторная работа №9 Синтаксический анализ для оператора присваивания
- •2) Исходный текст программы:
- •Лабораторная работа №10 Разработка калькулятора на основе рекурсивного спуска
- •Лабораторная работа №11 Генерация кода на ассемблере для арифметического выражения
РОСЖЕЛДОР
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«Ростовский государственный университет путей сообщения»
(ФГБОУ ВПО РГУПС)
Кафедра «ВТ и АСУ»
Отчёт по лабораторным работам по дисциплине
«Системное программное обеспечение»
Выполнил студент группы
АИ-3-024 ____________________ А.В. Кривощёков
(подпись)
Проверил
к.т.н., доцент ____________________ В.В. Жуков
(подпись)
2012
Лабораторная работа №1 Формирование очередей в динамической памяти
1) Цель работы: Создать двунаправленный список типа FiFo. Программа должна включать в себя процедуры добавления элемента в список и его извлечения.
2) Исходный текст программы:
program FIFO;
type tp=^tu;
tu=record
d:integer;
p:tp;
end;
var q,vhod:tp;
x,y:integer;
procedure dobavlenie (x:integer);
begin
new(vhod);
vhod^.p:=q;
vhod^.d:=x;
q:=vhod;
end;
procedure izvlechenie (var x:integer);
var k:tp;
begin
q:=vhod;
if vhod=nil then writeln ('spisok pust')
else while q<>nil do
begin
k:=q;
q:=q^.p;
end;
x:=k^.d;
writeln(x);
k^.p:=nil;
dispose(k);
q:=vhod;
end;
BEGIN
q:=nil; vhod:=nil;
writeln(‘введите элемент списка’);
readln(x); dobavlenie(x);
writeln(‘введите элемент списка’);
readln(x); dobavlenie(x);
writeln(‘введите элемент списка’);
readln(x); dobavlenie(x);
writeln('________');
izvlechenie (y);
END.
3) Результат:
введите элемент списка
32
введите элемент списка
45
введите элемент списка
85
_______
32
Лабораторная работа №2 Программирование конечного автомата
1)Цель работы: Написать программу конечного автомата на пять состояний. Каждое из них нагрузить выводом на экран номера того состояния, которое автомат покинул.
Графическое представление конечного автомата:
2)Текст программы
Program avtomat;
var x,S:integer;
Begin
s:=0;
repeat
writeln ('Vvedite vhodnoe vozdeistvie');
write('x= ');
readln (x);
case s of
0:begin
if x>5 then begin
writeln('s= ',s);
s:=1;
end
else if x=5 then begin
writeln('s= ',s);
s:=2;
end
else if x<2 then begin
writeln('s= ',s);
s:=4;
end
else begin
writeln('s= ',s);
s:=3;
end;
end;
1:begin
if x>7 then begin
writeln('s= ',s);
s:=4;
end;
end;
2:begin
if x=6 then begin
writeln('s= ',s);
s:=3;
end;
if x>8 then begin
writeln('s= ',s);
s:=0;
end;
end;
3:begin
if x=8 then begin
writeln('s= ',s);
s:=4;
end;
end;
end;
until s=4;
end.
Пример выполнения программы
Vvedite vhodnoe vozdeistvie
x= 5
s= 0
Vvedite vhodnoe vozdeistvie
x= 9
s= 2
Vvedite vhodnoe vozdeistvie
x= 4
s= 0
Vvedite vhodnoe vozdeistvie
x= 8
s= 3