Курсовая: Оператор присваивания языка FORTRAN - текст курсовой. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Курсовая

Оператор присваивания языка FORTRAN

Банк рефератов / Программирование

Рубрики  Рубрики реферат банка

закрыть
Категория: Курсовая работа
Язык курсовой: Русский
Дата добавления:   
 
Скачать
Microsoft Word, 270 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникальной курсовой работы

Узнайте стоимость написания уникальной работы

Министерство науки , высшей школы и технической политики Российской Ф едера ц ии. Новосибирский Государственный Техниче ский Университет. Курсовая работа по системному прогр ?аммированию. Оператор присваивания языка FORTRAN . Факультет : АВТ. Кафедра : АСУ. Группа : А -513. Студент : Ефименко Денис Владим ирович. Преподаватель : Шорник ов Юрий Влади мирович. Ассистент : П анова Вера Бо рисовна. Дата : 10 июня 1997 года. Отметка о защите : _______________________________ Новосибирск – 1997. Язык оператора. Язык оператора присваивания FORTRAN . Идентификатор = арифметическое выражение Арифметическое выражение – выражение , содержащее в себе операции *, /, -, +, **, а так же ( ). ** – возведение в степень. Грамматика языка. G[< ОПЕРАТ ОР >] : 1. < ОПЕРАТОР > < ИДЕНТИФИКАТОР > = < ВЫРАЖЕНИЕ > 2. < ВЫРАЖЕНИЕ > Т < ВЫРАЖЕНИЕ > +Т < ВЫРАЖЕНИЕ > Т 3. Т О Т О Т / О Т О 4. О ( < ВЫРАЖЕНИЕ > ) < ИДЕНТИФИКАТОР > < ДБЗ > 5. < ИДЕНТИФИКАТОР > Б Б Ц [ ] 6. < ДБЗ > Ц Ц [ .Ц Ц ][ ] Т – ТЕРМ О – ОПЕРАНД Б – БУКВА Ц – ЦИФРА ДБЗ – ДРОБНОЕ БЕЗ ЗНАКА – КОНЕЦ СТРОКИ (пусто ) ** – ВОЗВЕДЕНИЕ В СТЕПЕНЬ Классификация грамматики. Данная граммати ка G [< ОПЕРАТОР >] , согласно классификац ии Хомско го , является контекстно-свободной , так как прав ая часть каждой редукции начинается либо с терминального символа , либо с нетерминально го , принадлежащего объединённому словарю. A a , A V n , a V . Грамматика G [< ОПЕРАТОР >] не является автоматной , так как не все её редукции начинаются с терминально го символа . По этой же причине данная грамматика не является S - грамматикой. Метод анали за. Для данной грамматики реализован разбор методом рекурсивног о спуска , поскольку она относится к классу контекстно-свободных. Идея метода состоит в том , что каждому нетерминальному символу ставится в соответствие определённая программная единица (функц ия ), которая р аспознаёт цепочку , порождаемую этим нетерминалом. Эти процедуры и функции вызываются в соответствии с правилами грамматики и ин огда вызывают сами себя. Данный метод реализован на языке C ++ , поскольку он обладает рекурсивными возможностями. Д иагностика и нейтрализация ошибок. Для данной грамматики производится только диагностика и нейтрализация ошибок . Исправление ошибок не п роизводится. Нейтрализация ошибок осуществляется по ме тоду Айронса , то есть , спускаясь по синтак сическому дереву бе з возврата по конт ексту , при обнаружении тупиковой ситуации отб расываются те литеры (символы ), которые привели в тупиковую ситуацию и разбор продолжает ся. Тестирование. 12=1 Имя идентификатора должно начинаться с буквы. \---------------------------------------------------------\ s223=(s)+(((d))) ОШИБОК НЕТ !!!!! \---------------------------------------------------------\ sdsds=skshj**mxnx dc Пропущена операция или неправильное имя идентификатора. \---------------------------------------------------------\ ;; =0 Имя идентификатора должно начинаться с буквы. Идентификатор состоит только из букв или цифр. \---------------------------------------------------------\ as=115/3 ОШИБОК НЕТ !!!!! \---------------------------------------------------------\ 32=-*= Имя иден тификатора должно начинаться с буквы. Пропущен идентификатор или число. Пропущен идентификатор или число. Неизвестная операция или неправильное имя идентификатора. Пропущен идентификатор или число. \---------------------------------------------------------\ sdvsf+gsdf=0 Слев a от '='операций быть не может . \---------------------------------------------------------\ jhg=321+321/54*4(s+25) Пропущена операция или неправильное имя идентификатора. \---------------------------------------------------------\ d56gf sdfg=(ld+5 Длина имени идентификатора не должна быть больше 6. Отсутствует ')'. \---------------------------------------------------------\ Листинг программы. // SP_KURS.CPP:КУРСОВАЯ РАБОТА ПО СИСТЕМН ОМУ ПРОГРАММИРОВАНИЮ . // // О ПЕРАТОР ПРИСВАИВАНИЯ ЯЗЫКА "Ф ОРТРАН " // // имя файла test #include #include #include #include #include #include #include #define UP 72 /* стрелка вверх */ #define DOWN 80 /* стрелка вниз */ #define EXIT '\33' /* Esc */ #define END 100 enum LEX ERROR,CBZ,ID,PLUS,MIN,DIV,MUL,STEP,SKL,SKR,RAV,_EOLN_,_EOF_ ; int next,number=0,num=0,temp,line=1,err[80],sum; int mistake[15][80],ofset=0; char cordinat[80][80],filename[80]; char* type_mis[]= " ОШИБОК НЕТ !!!!!", "Имя идентификатора должно начинаться с буквы .", "Идентификатор состоит только из букв или цифр .", "Слев a от '='операций быть не может .", "Неизвестная конструкция (нет '=').", "Длина имени идентификатора не дол жна быть больше 6.", "Отсутствует ')'.", "Неизвестная операция или неправильное имя идентификатора .", "Пропущен идентификатор или число .", "Отсутствует '('.", "Пропущена операция или неправильное им я идентификатора .", "Отсутству ет выражение (А =?) . ", "Отсутствует идентификатор (?=B).", " ", ; const int X1=2,Y1=20,X2=80,Y2=25; const int YWINDOW=Y2-Y1+1; void viewwin(int ,int ); void putmistake(int ); int MENU(char *); void identif(); void ravno(); void expr(void); void term(void); void operand(void); int scaner(void); void error(int); void makefile(void); FILE *in,*out; void main(void) strcpy(cordinat[0],"\n"); mistake[0][0]=13;mistake[0][1]=END; clrscr(); printf(" Введите имя обрабатыва емого фа йла :"); gets(filename); if((in=fopen(filename,"r"))==NULL) printf("\ n ОШИБКА !!! ФАЙЛ С ТАКИМ ИМЕНЕМ НЕ СУЩЕСТВУЕТ !!!"); exit(-1); while(!feof(in)) ravno(); mistake[line][ofset]=END; line++; ofset=0; fcloseall(); makefile(); num=0; window( 1,1,80,25); clrscr(); gotoxy(1,1); MENU(" ОПЕРАТОР ПРИСВАИВАНИЯ ЯЗЫКА /""ФОРТРАН /""\n"); clrscr(); window(1,1,80,25); clrscr(); printf("\n\n\n\n\n\n\n\n\n\ n ВСЕ ОШИБКИ ХРАНЯТЬСЯ В ФАЙ ЛЕ /""ERRORS.TXT/""!!!!!"); printf("\n\n\n\n\n\ n\n\n\n\ n НАЖМИТЕ ЛЮБУЮ КЛАВИШУ !!!!!! "); fcloseall(); exit(1); void ravno() temp=0; num=0; sum=0; next=scaner(); if((next!=_EOLN_)&&(next!=_EOF_)) if(next==RAV) error(12); err[0]=END; else identif(); if(next!=RA V) error(4); else temp=1; if(err[0]!=END) if(err[0]!=ID) error(1); for(int i=1;i6) error(5); // НЕТЕРМИНАЛ "O" < Операнд > void operand() if(next==SKL) next=scaner(); expr(); if(next!=SKR) error(6); else next=scaner(); else if(next==ID) identif();next=scaner(); else if(next!=CBZ) if((next!=_EOLN_)&&(next!=_EOF_)) if(next==ERROR) error(7); next=scaner(); operand(); else if(next==RAV) error(7); else error(8); else error(8); else next=scaner(); //else //else // НЕТ EРМИНАЛ "Е " < Выражение > void expr(void) term(); while ((next==PLUS)||(next==MIN)) next=scaner(); expr(); // НЕТЕРМИНАЛ "T" < Терм > void term(void) operand(); while((next==DIV)||(next==MUL)||(next==STEP)) next=scaner(); term(); void error(int choice) switch(choice) case 1:mistake[line][ofset++]=1; break; case 2:mistake[line][ofset++]=2; break; case 3:mistake[line][ofset++]=3; break; case 4:mistake[line][ofset++]=4; break; case 5:mistake[line][ofset++]=5; break; case 6:mistake[line][ofset++] =6; break; case 7:mistake[line][ofset++]=7; break; case 8:mistake[line][ofset++]=8; break; case 9:mistake[line][ofset++]=9; break; case 10:mistake[line][ofset++]=10; break; case 12:mistake[line][ofset++]=12; break; case 11:mist ake[line][ofset++]=11; break; default:break; void makefile(void) char *s; int num_str=0,oftemp,rep; if((out=fopen("errors.txt","w"))==NULL) printf("\ n ОШИБКА !!! ФАЙЛ С ТАКИМ ИМЕНЕМ НЕ СУЩЕСТВУЕТ !!!"); exit(-1); if((in=fopen(filename,"r"))==NULL) printf("\ n ОШИБКА !!! ФАЙЛ НЕЛ ЬЗЯ ОТКРЫТЬ ДЛЯ ЗАПИСИ !!!"); exit(-1); while(num_str++,fgets(s,80,in)!=NULL) fputs("\\---------------------------------------------------------\\",out); fputc('\n',out); fputs(s,o ut); fputc('\n',out); rep=strlen(s); s[rep-1]='\0'; strcpy(cordinat[num_str],s); if((oftemp=mistake[num_str][0])==END) fputs(type_mis[0],out); fputc('\n',out); else for(int k=0;mistake[num_str][k]!=END;k++) oftemp=mistake[n um_str][k]; fputs(type_mis[oftemp],out); fputc('\n',out); fputs("\\---------------------------------------------------------\\",out); fputc('\n',out); fcloseall(); // MENU int MENU(char *s) int dy,n; dy=line-1; textbackground(WHITE); textcolor(YELLOW); window(1,1,80,25); clrscr(); gotoxy(2,1); cprintf(" SDenis\n "); gotoxy(2,2); cputs(s); gotoxy(2,3); cprintf("Используйте курсор вверх /вниз для выбора просматриваемой строки.\ n"); gotoxy(2,4); cpr intf(" - для просмотра ошибок в стр оке (строка выделяется ). \ n"); gotoxy(2,5); cprintf(" - выход .\ n"); gotoxy(2,6); textbackground(WHITE); textcolor(RED); cprintf("******************** ОШИБКИ В С ТРОКАХ *********************** **\n"); textbackground(WHITE); textcolor(YELLOW); gotoxy(2,19); cprintf("******************* СТРОКИ ВАШЕГО ФАЙЛА ****************************\n"); window(X1,Y1,X2,Y2); textcolor(BLACK); viewwin(0,YWINDOW); n = 0; int Y=1; while(1) char c; gotoxy(1,Y); textbackground(GREEN); cprintf("%s",cordinat[n]); textbackground(WHITE); c=(c=getch())==0?c=getch():c; gotoxy(1,Y); cprintf("%s",cordinat[n]); switch (c) case EXIT: return(-1); case '\r': /*ent er*/ window(2,7,80,18); clrscr(); putmistake(n); window(X1,Y1,X2,Y2); break; case UP: if (Y==1) viewwin(n>0?n-1:n,YWINDOW); else Y--; if(n>0) n--; break; case DOWN: if(Y==YWINDOW) viewwin((n==dy?n:n+1)-YWINDOW+1,YWINDOW); else Y++; if(n+1==dy) n=0; Y=1; viewwin(n,YWINDOW); else n++; break; void viewwin(int num,int numline) clrscr(); for(int a= 0;a
1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
Знаете ли, очень мотивирует, когда по телефону объясняешь курьеру, как попасть в Главное здание МГУ, а он тебе заявляет:
- Я знаю, я его заканчивал.
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

Обратите внимание, курсовая по программированию "Оператор присваивания языка FORTRAN", также как и все другие рефераты, курсовые, дипломные и другие работы вы можете скачать бесплатно.

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru