学时数:2[实验内容]:编制一个源程序的输入、扫描程序,从文件中每次读入一行到输入缓冲区(可以用字符数组实现);然后从缓冲区中依次取出字符显示在屏幕上。2、从文件每次读入一行到输入缓冲区的功能(可以用字符数组实现)用一个子程序实现。[实验目的]:1、通过自己编制一个源程序的输入、扫描程序,熟悉并了解从文件中读入数据到输入缓冲区的过程。[实验步骤]:1、准备:用TC、VC++等开发工具;确定被处理的语言的语法特点(可使用现成语言如Pascal、C等)。编好程序,写好实验报告。2、上机:输入源程序,修改、调试,运行。[编程思想]:采用一个子程序实现的形式。(1)程序判断源文件是否为NULL,如果是,则输出错误提示!如果不是,则进入循环。(2)调用子程序readbuffer(),每次读入一个字符给字符变量,如果字符变量的内容不是回车符,则把字符变量的内容存入数组buffer(),然后读入下一字符,再判断再存入数组,直到一行全存入数组,然后返回主程序,用输出语句输出刚才存入数组的一行字符;(3)如果没有到文件尾,则重复第(2)步,直到文件结束,则退出主程序,完成任务![程序要求]:1)例如首先输入以下一段C语言的源程序,,然后运行自己编制的输入、扫描程序,。例如::main(){inta,b,c;a=10;b=20;c=a+b;} 自编源程序: 输入、扫描程序源代码(仅供参考): //程序开始: #include<>#include<>#include<>//声明头文件int i;FILE *fp;char buffer[256];//声明变量int readbuffer()//读字符子程序开始{int j=0;char ch;//声明变量while(j<256){ch=fgetc(fp);if (ch=='\n') {i=j;return 0;}//buffer[j]=ch;//保存字符++j;//记录字符个数}return 1;}//子程序结束main()//main()开始{if((fp=fopen("e:\\","r"))==NULL){printf("THE FILE DOESN’T OPEN!");exit(0);}while(!feof(fp)){int j;j=0;readbuffer();while(j<i){printf("%c",buffer[j]);j++;}printf("\n");getch();}fclose(fp);getch();}//main()结束//程序结束2)改变源文件e:\\:main(){int sum=0,i;float k;scanf ("%f plese input (0-100) to total!",&k) for(i=0;i<k;i++)sum =sum+i;}运行自编的输入扫描程序,检查输出结果必须与上面输入的源文件中的代码相同。[实验报告]:1、写出调试程序出现的问题及解决的方法。2、写实验报告及程序清单。3、报告给出测试的结果。4、实验小结实验二无符号数的有限自动机的实现学时数:4[实验内容]:无符号数的有限自动机的实现。利用状态表和有限自动机的运行原理编制程序,使得程序能够识别一个输入串是否为一个无符号定点实数。[实验题目]:1、理解有限自动机的作用;进一步理解自动机理论。用状态图和状态表表示有限自动机;3、以程序实现有限自动机的运行过程;掌握文法转换成自动机的技术及有穷自动机实现的方法。[实验要求]:设计要求:利用状态图或状态表相关理论,利用有限自动机理论。功能要求:输入一个单行无空格的字符串(以“#”号结束),如果该字符串是一个合法的输入,则显示“接受”,否则显示“不接受”。输入/输出示例(以无符号定点实数为例):输入:“”,输出:“接受”;输入:“”,输出:“不接受”;输入:“3ab”,输出:“不接受”。[实验提示]:1、无符号数的BNF描述如下:1.<无符号数>àd<余留无符号数>|.<十进制数>|e<指数部分>2.<余留无符号数>àd<余留无符号数>|.<十进制数>|e<指数部分>|ε3.<十进制小数>àd<余留十进制小数>4.<余留十进制小数>e<指数部分>|d<余留十进制小数>|ε5.<指数部分>àd<余留整指数数>|+<整指数>|-<整指数>6.<整指数>àd<余留整指数数>7.<余留整指数数>àd<余留整指数数>|ε2、将G[<无符号数>]文法转换成有限自动机见图1。图13、构造状态矩阵;将有限自动机的状态S1S2……Sn及输入的字a1a2……am构成一个n*m的矩阵。1)根据
汇编语言编译实验指导 来自淘豆网m.daumloan.com转载请标明出处.