《程序设计语言的发展》由会员分享,可在线阅读,更多相关《程序设计语言的发展(33页珍藏版)》请在金锄头文库上搜索。
1、主要内容n程序设计语言n程序设计语言的发展n程序设计的过程nC语言的集成开发环境n1个简单C语言程序n一般程序错误程序设计语言维基百科n程序设计语言程序设计语言(ProgramLanguage):是一组用来定义计算:是一组用来定义计算机程序的语法规则。它是一种被标准化的交流技巧,用来向机程序的语法规则。它是一种被标准化的交流技巧,用来向计算机发出指令计算机发出指令。n程序程序(Program):指一组指示计算机每一步动作的指令,通常:指一组指示计算机每一步动作的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上。用某种程序设计语言编写,运行于某种目标体系结构上。n编程编程(Progra
2、mming):程序设计程序设计是编写解决特定问题程序的是编写解决特定问题程序的过程,是软件构造活动中的重要组成部分。程序设计往往以过程,是软件构造活动中的重要组成部分。程序设计往往以某种程序设计语言为工具,给出这种语言下的程序。某种程序设计语言为工具,给出这种语言下的程序。n程序设计过程:分析、设计、编码、测试、排错等阶段。程序设计过程:分析、设计、编码、测试、排错等阶段。程序设计语言的发展n机器语言n汇编语言n高级语言nCPU不能直接处理高级语言编写的程序,它必须被翻译为机器语言。比较汇编语言和C语言ADD100,200,840z=x+y;翻译程序n高级语言不能被计算机直接执行,必须先由一种
3、高级语言不能被计算机直接执行,必须先由一种翻译程序将这些程序翻译成等价的能被计算机识翻译程序将这些程序翻译成等价的能被计算机识别和执行的机器语言。翻译程序的种类:别和执行的机器语言。翻译程序的种类:解释程序:将高级编程语言一行一行直接转译运行。解释程序:将高级编程语言一行一行直接转译运行。解释器不会一次把整个程序转译出来,只像一位解释器不会一次把整个程序转译出来,只像一位“中中间人间人”,每次运行程序时都要先转成另一种语言再作,每次运行程序时都要先转成另一种语言再作运行,因此解释器的程序运行速度比较缓慢。它每转运行,因此解释器的程序运行速度比较缓慢。它每转译一行程序叙述就立刻运行,然后再转译下
4、一行,再译一行程序叙述就立刻运行,然后再转译下一行,再运行,如此不停地进行下去。运行,如此不停地进行下去。编译编译(器器)程序:将用某种编程语言写成的源代码(原始程序:将用某种编程语言写成的源代码(原始语言),转换成另一种编程语言(目标语言)。语言),转换成另一种编程语言(目标语言)。编译器n一个现代编译器的主要工作流程如下:n源代码(sourcecode)预处理器(preprocessor)编译器编译器(compiler)汇汇编程序编程序(assembler)目标代码(objectcode)链接器(Linker)可执行文件(executables)nP166VC+6.0创天中文版7集成开发环
5、境nVC6.0n集编辑(集编辑(EDIT)、编译()、编译(COMPILE)、)、连接(连接(Link)、执行()、执行(EXECUTE)与一体,)与一体,并提供调试(并提供调试(debug)手段和帮助)手段和帮助(help)的开发软件。)的开发软件。程序编制的过程n编辑(EDIT)dtn编译(COMPILE)kmpaln连接(连接(Link)lkn执行(EXECUTE)ks,kjutn调试(调试(debug)编辑(EDIT)n源文件源文件用高级语言编写的程序文件用高级语言编写的程序文件n编辑器编辑器生成源文件的软件生成源文件的软件nC语言程序文件,例:语言程序文件,例:hello.cpp文本
6、文件,可用记事本编辑文本文件,可用记事本编辑后缀名:后缀名:c/cppn语法语法一种编程语言的规则,如:一种编程语言的规则,如:C程序设计语言程序设计语言编译(COMPILE)n编译器编译器将高级语言翻译成机器语言的软件将高级语言翻译成机器语言的软件n编译的任务编译的任务编译器翻译源文件事会检查是否符合高级语言的语法编译器翻译源文件事会检查是否符合高级语言的语法规则规则生成机器语言指令构成的目标文件生成机器语言指令构成的目标文件如源程序包含语法错误,列出错误,不产生目标文件如源程序包含语法错误,列出错误,不产生目标文件nc目标文件,例:目标文件,例:hello.obj二进制文件二进制文件后缀名
7、:后缀名:obj连接连接Linkn连接的任务连接的任务将预先开发好的程序模块(例如系统函数或其将预先开发好的程序模块(例如系统函数或其他程序员开发的共同模块)连接到当前程序代他程序员开发的共同模块)连接到当前程序代码中去码中去生成可执行文件:生成可执行文件:exe,例:,例:hello.exen连接器连接器完成连接的软件完成连接的软件C语言程序的编辑、调试、运行步骤开始开始结果结果语法语法错误错误源程序源程序.c/.cpp目标程序目标程序.obj可执行程序可执行程序.exe编辑编辑编译编译运行运行连接连接错误错误运行运行错误错误运行运行文字文字编辑器编辑器编译器编译器连接器连接器结果调试程序P
8、18-21n设置断点n开始调试n单步运行n自动查看变量执行(EXECUTE)nC语言生成的可执行文件(exe文件)是一个DOS程序控制台程序;n可以通过开始菜单“运行”“cmd”命令打开命令窗口,直接执行文件名。nVC+操作新建编译执行语法错误关闭工作空间15创建一个C程序sample01_01.cpp/*print“HelloWorld!”*/#includeintmain(void)printf(HelloWorld!n);return0;16解读第一个C程序程序语法(1)C程序必须由一个程序必须由一个main函数构成,系统自函数构成,系统自动执行动执行main函数。函数。(2)程序的执行
9、从)程序的执行从main函数的左函数的左括号开始,括号开始,顺序执行每一条语句,直到顺序执行每一条语句,直到main函数的右函数的右括括号结束。号结束。函数体函数体(3)printf是标准输出函数,输出的字符串在是标准输出函数,输出的字符串在一对半角双引号之间,例如一对半角双引号之间,例如HelloCWorldn。(4)C语句以分号结束。语句以分号结束。解读第一个C程序程序语法(5)控制台输出时,系统会紧跟着自动输出)控制台输出时,系统会紧跟着自动输出“pressanykeytocontinue”,等待按任意键关闭控制台窗,等待按任意键关闭控制台窗口。口。(6)n是一个转义字符换行。转义字符是
10、一些键是一个转义字符换行。转义字符是一些键盘不能输入的控制字符,具有特殊功能。盘不能输入的控制字符,具有特殊功能。(7)#include是一个预编译命令,表示要加是一个预编译命令,表示要加入入stdio.h文件(标准输入输出函数头文件),要在程文件(标准输入输出函数头文件),要在程序中使用序中使用printf函数必须使用该命令。函数必须使用该命令。(8)Main函数执行到函数执行到“”或或“return0;”结束。结束。return0;向系统返回整数向系统返回整数0,表示程序运行正常。,表示程序运行正常。17nIncludenklud包含nstandardstndd标准nheadhd头部解读第
11、1个C程序的相关文件18后缀名后缀名解释解释cpp源程序文件dsw项目工作区dsp项目文件ncb无编译浏览文件plg编译信息文件opt关于开发环境的参数文件,如工具条位置等信息nDebug文件夹中存放着生成的obj文件,exe文件及其它一些中间文件。讨论n输出两行问候语句nHelloCWorld!nHelloCWorld!可能出现的答案nprintf(“HelloCWorld”);nprintf(“HelloCWorld”);nprintf(“HelloCWorldn”);nprintf(“HelloCWorld”);nprintf(“HelloCWorldnHelloCWorld”);程序错
12、误n语法错误n连接错误n逻辑错误n运行错误语法错误n指不符合高级语言定义的语法书写规则。n编译或解释程序能自动检查出语法错误,只需根据错误提示进行修改。改错示例:#includevoidmain(void)printf(WelcometoYou!n)return0;#includeintmain(void)printf(WelcometoYou!n);return0;C语言的错误信息的形式:文件名文件名行号行号错误编号错误编号错误信息错误信息D:C教材教材samplehello.cpp(4):errorC2001:newlineinconstant编译错误修改提示(1)n错误信息往往只能起提示
13、作用,不是特别精确反映错误产生的原因,更不会告诉你如何修改。n根据提示能快速反应错误产生的原因需要经验的积累。编译错误修改提示(2)n一条语句错误可能会产生若干条错误信息,只要修改了这条错误,其他错误会随之消失。n特别提示:一般情况下,第一条错误信息最能反映错误的位置和类型,所以调试程序时务必根据第一条错误信息进行修改,修改后,立即重新编译程序,如果还有很多错误,再一个一个地修改。n即每修改一处错误要重新编译一次程序。连接错误n连接错误,是编译成功后,连接器连接外部程序的时候产生的错误。n例:main函数名写错了连接错误修改提示n连接错误不提示出错行数,但小程序的定位也比较简单,一般是函数和外
14、部变量的函数和外部变量的名称名称出错,只需根据错误提示的字符串去寻找可能出现的位置。连接错误信息显示-Configuration:test-Win32Debug-Compiling.:test.cppLinking.LIBCD.lib(crt0.obj):errorLNK2001:unresolvedexternalsymbol_main无法解析的外部符号无法解析的外部符号_mainDebug/test.exe:fatalerrorLNK1120:1unresolvedexternals执行执行link.exe时出错时出错.test.exe-1error(s),0warning(s)错误错误警
15、告警告常见编程错误:n字符串“”不完整n()不匹配n缺少;n函数名写错n逻辑错误n逻辑错误则是程序设计上或逻辑上的错误指程序已生成可执行文件,但运行出错或不能得到正确的结果,这可能是由于算法中问题说明不足,解法不完整或不正确所造成的。n逻辑错误的检查需要事先设计的测试用例。n逻辑错误出错位置需要程序员对程序代码进行分析,一般会借助一些调试手段,如单步执行,设断点,watch窗口观测等等,以后陆续介绍运行错误n运行错误是指程序经编译连接生成可执行文件后,在运行的过程中系统报错,没有运行结果。n常见的运行错误有:除数为0;死循环;浮点指针出错等等。n运行错误往往是逻辑错误引起的。第二讲结构化程序设计与C语言