- •Практична робота n1.
- •I.Тема.
- •II.Мета.
- •III.Виконання роботи.
- •V.Оформити звіт.
- •V.Приклад програми.
- •VI.Оформити звіт. Варіанти завдань до практичної №2
- •Тема: Обчислення виразів. Використання стандартних функцій.
- •I.Мета роботи.
- •II.Постановка задачі.
- •IV.Методичні вказівки.
- •Практича робота №4
- •VI.Завдання до практичної роботи №4.
- •Практична робота №5.
- •Варіанти завдань до практичної роботи №5
- •Практична робота №6
- •Виконання роботи
- •Методичні вказівки
- •Практична робота №9.
- •2.Оформити звіт до роботи.
- •Практична робота № 11.
- •2.Постановка задачі:
- •Виконання роботи:
- •Практична робота №13.
- •3.Оформити звіт до роботи.
- •Практична робота № 14
- •Постановка задачі:
- •Методичні вказівки:
- •Xor bx,bx {обнулимо вх}
- •Варіанти завдань.
Постановка задачі:
Скласти програму обчислення виразу з виконанням арифметичних операцій на мові АСЕМБЛЕРА.
Методичні вказівки:
В програмі використовувати різні типи поєднань ПАСКАЛЯ з АСЕМБЛЕРОМ, а саме:
оператор АSM....END;
процедура на мові АСЕМБЛЕРА.
Бажано не викоритовувати команду АСЕМБЛЕРА M UL , а оформити операцію множення цілих чисел у вигляді підпрограми типу процедури на мові АСЕМБЛЕРА.
Приклад програми з використанням процедури
PROGRAM NGB;
VAR X,Y,REZ: WORD;
PROCEDURE DOB(a,b: WORD; VAR R : WORD); ASSEMBLER;
ASM
MOV AX,A {переслати а та в до регістрів}
MOV DX,B
Xor bx,bx {обнулимо вх}
MOV CX,7 {лінійник циклу}
TEST DX, 1 {перевіримо молодший розряд}
JE @M1 {якщо він =0,зробимо перехід}
MOV BX,AX {інакше в проміжну суму множене}
@M1: SHL AX,1 { зсув множника на 1 розряд вліво}
SHR DX,1 {зсув множника на один розряд вправо}
TEST DX,1 {перевіримо молодший розряд}
JE @M2 {якщо там 0 -перехід}
ADD BX, AX {інакше - збільшимо проміжну суму}
@M2: LOOP @M1 {цикл}
lea DI,R {адесу r в DI}
MOV [DI],BX {результат в r }
END;
{ основна програма }
BEGIN
WRITELN(‘ВВЕДІТЬ 2 ЦІЛИХ ДОДАТНІХ ЧИСЛА’);
READLN(X,Y);
DOB(X,Y,REZ);
WRITELN(‘REZ=’,REZ:5);
END.
ВАРІАНТИ ЗАВДАНЬ
№ ВАРІАНТУ |
ВИРАЗ |
| |
1 |
x=4c-b2+z |
| |
2 |
y=b+4c |
| |
3 |
z=c-3b+2z |
| |
4 |
x=z3+4c |
| |
5 |
y=c2+d-z |
| |
6 |
z=b3-4b-5c |
| |
7 |
x=c3+3b-6z |
| |
8 |
y=3c+b-x |
| |
9 |
z=3b-c2 |
| |
10 |
x=3c+b-z |
| |
11 |
y=z2-3d3+c |
| |
12 |
z=2x3-5c |
| |
13 |
x=b3+4z3 |
| |
14 |
y=c-3b3+z2 |
| |
15 |
y=2c+b-x |
| |
16 |
z=3b-5c2 |
| |
17 |
x=3c+b-3z2 |
|
Оформити звіт.
Тема.
Мета.
Постановка задачі.
Програма.
Результати роботи.
Висновки.
ПРАКТИЧНА РОБОТА №15.
ТЕМА:Програмування задач з використанням вказівного типу даних.
МЕТА:1.Ознайомлення з динамічною структурою даних - однонаправленим списком.
2.Отримання навиків роботи з змінними вказівного типу.
3.ознайомлення з можливістю виконання операції вмключення елементів з списку.
ПОСТАНОВКА ЗАДАЧІ.
Скласти список учбової групи, яка складається не меньше ніж з 15 учнів.
Вказати для кожного учня оцінки, отримані на останіх чотирьох екзаменах. Скласти програму, яка вводить з термінала дані про кожного учня і заносить цю інформацію в однонаправлений список.Опрацювати список відповідно варіанту.
ЗМІСТ ЗВІТУ.
1.Постановка задачі.
2.Список групи учнів з оцінками.
3.Текст програми і результати виконання.
4.Висновки.
МЕТОДИЧНІ ВКАЗІВКИ.
При виконані завдання потрібно ознайомитись з приведеною нижче програмою.Програма Р15 вводить дані про кожного учня, будує список а потім вилучає з списку елементи, які відносяться до невстигаючих учнів.
PROGRAM P15;
TYPE DAT=RECORD
FIO:PACKED ARRAY[1..7] OF CHAR;
OCINKU:ARRAY[1..4] OF INTEGER
END;
SILKA=^ZAPIS;
ZAPIS=RECORD
CC:SILKA;
Y:DAT;
END;
VAR NACH,S1,S2:SILKA; N,I,J:INTEGER;
BEGIN
WRITELN(’КІЛЬКІСТЬ ПРІЗВИЩ В СПИСКУ:’);
READLN(N);
NEW(S1); NACH:=S1;
FOR I:=1 TO N DO
BEGIN
S1^.CC:=NIL;
WRITELN(’ВВЕДІТЬ прізвище З 7 БУКВ ТА ОЦІНКИ:’);
FOR J:=1 TO 7 DO READ(S1^.Y.FIO[J]);
FOR J:=1 TO 4 DO READ(S1^.Y.OCINKU[J]);
READLN;S2:=S1;NEW(S1);
IF I<>N THEN S2^.CC:=S1
ELSE DISPOSE(S1)
END;
S1:=NACH;
REPEAT
FOR I:=1 TO 4
IF S1^.Y.OCINKU[I]=2 THEN
IF S1=NACH THEN NACH:=S1^.CC
ELSE S2^.CC:=S1^.CC;
S2:=S1;
S1:=S1^.CC
UTIL S1=NIL;
WRITELN(’СПИСОК УСПІШНИХ УЧНІВ:’);
S1:=NACH; WHILE S1<>NIL DO
BEGIN WRITE(S1^.Y.FIO);
FOR I:=1 TO 4 DO WRITE(’ ’,S1^.Y.OCINKU[I]:2);
WRITELN;
S1:=S1^.CC
END;
END.