З системного програмування

Інформація про навчальний заклад

ВУЗ:
Інші
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2015
Тип роботи:
Лабораторна робота
Предмет:
Інші
Група:
ПМ-32

Частина тексту файла (без зображень, графіків і формул):

Лабораторна робота З системного програмування Лабораторна робота №1 ЗАВДАННЯ: Побудувати скінченний автомат для розпізнавання простого (без дужок) арефметичного виразу. У виразі можуть зустрічатися ідентифікатори(скл тільки з букв), та цілих десяткових чисел і довільної кількості односимвольних арифметичних операцій. АВТОМАТ 0 1..9 B *,+ - / Доп стани  П 1 2 3 Е 5 Е 0  1 Е Е Е 4 5 6 1  2 1 2 3 4 5 6 1  3 1 2 3 4 5 6 1  4 1 2 3 Е Е Е 0  5 1 2 3 Е Е Е 0  6 Е 2 3 Е Е Е 0  Е Е Е Е Е Е Е 0   ТЕКСТ ПРОГРАМИ: # include <stdio.h> # include <conio.h> # include <math.h> main() { int i,j,st,pr,a; char *vyr; printf ("\nvvedit vyraz\n"); gets (vyr); /*Перегляд виразу і його аналіз за можл станами*/ pr=1;i=-1;st=0; while ((pr==1)&(i<(strlen(vyr)-1))) { i++; pr=0; if ((vyr[i] >='0') & (vyr[i]<='9')&((st==1)||(st==0)||(st==3))) { pr=1;st=1;} if((vyr[i]>='a')&(vyr[i]<='z') &((st==3)||(st==2)||(st==0))) { st=2;pr=1;} if((vyr[i]=='+'||vyr[i]=='-'||vyr[i]=='*')&((st==1)||(st==2))) {pr=1;st=3; } if((vyr[i]=='/')&(vyr[i+1]!='0')&(st!=3)&(st!=0)) {pr=1;st=3;} if((vyr[i]=='-')&(st==0)) {pr=1;st=3;} } /*Перевірка правильності виразу*/ a=(strlen(vyr)-1); if((vyr[a]=='+')||(vyr[a]=='-')||(vyr[a]=='*')||(vyr[a]=='/')) i=i+1; if ((i== (strlen(vyr)-1))&(pr==1)) printf ("danyj vyraz pravylnyj\n"); else printf("danyj vyraz ne pravylnyj\n"); printf("\npress any key to continue");getch(); } Лабораторна робота №2 Завдання: Розглянути підмножину мови Pascal. Розглядаються оператори опису, оператор присвоєння, константи цілого типу, змінні цілого типу. Також умовний оператор вигляду: IF (умова) THEN (1 оператор) ELSE (1 оператор) Текст програми. #include<stdio.h> #include<string.h> #include<ctype.h> #include<conio.h> FILE *fr, *fw; char str[30], lit, *syn; int cl, i; void scan(); void getlit(); void writ(); int por(); void main() { /* clrscr(); fr = fopen("d:/vova/my/scien/sysprog/la2/l2.txt", "rt"); fw = fopen("d:/vova/my/scien/sysprog/la2/lrez2.txt", "wt"); lit=' '; scan(); fcloseall(); } /*Зчитування з файла вх програми, розбиття її на окремі слова*/ /*аналіз і запис у файл з відпов коментарем*/ void scan() {i=0; while (!(feof(fr))) { while ((lit==' ') || (lit=='\t') || (lit=='\n')) getlit(); switch(cl) { case 1: str[i++]=lit; while (cl==1) {getlit();if(isdigit(lit))str[i++]=lit;} str[i++]='\x0'; syn='c'; writ(); break; case 2: while (cl<=2) {str[i++]=lit; getlit();};str[i++]='\x0'; if (por()==0) {syn='z'; writ();};break; case 3: str[i++]=lit; str[i++]='\x0'; syn=lit; writ(); getlit(); break; case 4: str[i++]=lit; syn=lit; if (cl!=5) {str[i++]='\x0';syn=str[0]; writ();} else {str[i++]=lit; syn='s'; str[i]='\x0'; writ();}getlit(); break; case 5: str[i++]=lit;str[i++]='\x0'; syn=lit;writ();getlit(); break; case 10: str[i++]=lit; do {getlit();} while ((lit=='\n')||(lit=='\t')|| (lit==' ')); if(cl!=10) {str[i++]='\x0';syn='e';writ();}break; } }} /*Проц зчит і визнач символа*/ void getlit(){ fscanf(fr, "%c", &lit); cl=10; if (isalpha(lit)) cl=2; if (isdigit(lit)) cl=1; if ((lit=='*') || (lit=='/') || (lit=='+') || (lit=='(') || (lit==')') || (lit=='-') || (lit==';') || (lit=='.') || (lit==',') ) cl=3; if ((lit==':')||(lit=='>')||(lit=='<')) cl=4; if (lit=='=') cl=5; } /*Проц запису у файл*/ void writ() { fprintf(fw, "%c \t %s\n", syn, str); str[0]='\0'; i=0; } /*Проц пошуку чи слово не є службовим*/ int por(){ int j; char *kw[11]={"program", "var", "double","integer", "begin", "end", "if", "then","else","true","false"}; j=0;while (strcmp(str, kw[j]) && (j!=11))j++; if (j<11) { syn='s'; writ(); return 1;};return 0; } Контрольний приклад: Вхідна програма: program Vova2 var i,j:integer; j,k:real; begin if i>2 then write('hello); else write(good buy); end; Результат: s program z Vova2 s var z i , , z j : : s integer ; ; z j , , z k : : z real ; ; s begin s if z i > > c 2 s then z write ( ( e ' z hello ) ) ; ; s else z write ( ( z good z buy ) ) ; ; s end ; ;
Антиботан аватар за замовчуванням

2015

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!