您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > AI人工智能 > chap2程序设计语言概述.
1第二章程序设计语言概述2提纲2.1程序设计语言的演化2.2构建和运行程序2.3程序设计语言的分类32.1程序设计语言的演化•程序设计:设计求解问题的方法和步骤—关键是算法的设计。•语言:是用于表达和描述的工具。语言的基础是一组字符和一组规则。根据规则由字符构成的字符串的总体就是语言。•程序设计语言:–用于书写计算机程序的语言,用于表达和描述要加工的数据以及求解问题的步骤和过程。–是根据预先定义的规则(语法)、由一个有限字母表上的字符构成的字符串的总体。4第四代语言高级语言符号语言机器语言2.1程序设计语言的演化5计算机发展早期使用的语言;由“0”和“1”的二进制码组成,是计算机唯一可以直接识别的语言;与具体机器有关,不同的机器能识别的机器语言也不同;1、机器语言2.1程序设计语言的演化612345678910111213141516000000000101111011111000111011111111010000000011111011110111111011111000000001101110111100000100000011001110111111101111101011101011000100000001010101101101000100000001011110100101011110101000100000001000000100000001001100001000010110100111101101111111011111111110111101111111011111111110111010110111000101111110111111101100000100000001000000000000000000000000000000001000000000000001010000000000001011000000000001001000000000000101010000000000010111000000000001111000000000001000010000000000100100000000000010101100000000001100010000000000110100000000000011110100000000001111012.1程序设计语言的演化-机器语言7机器语言的缺陷非常晦涩难读;书写工作量大,且容易出错,不易修改;由于和具体的机器相关,要求开发人员对计算机的硬件和指令系统要有很正确深入的理解,并且有熟练的编程技巧,因此只有少数专家能达到此要求;移植性不好(在一台机器上编写的机器语言程序在不同型号的另一台机器上可能不能运行);2.1程序设计语言的演化-机器语言820世纪50年代早期,数学家GraceHopper发明了符号语言,即用符号或助记符来表示不同的机器语言指令(包括操作码和和操作数地址)。程序员可用ADD、SUB、MUL、DIV等符号来分别表示加法、减法、乘法、除法的操作码。符号语言又称汇编语言。2、符号语言2.1程序设计语言的演化-符号语言9程序注释(运算结果)1.MULBB;送入B2.MULAE;4a送入A3.MULAC;4ac送入A4.SUBBA;-4ac送入B5.MOVDB;-4ac从B传送到D6.HLT;停机AaBbCcDdE42b2b2b1~6为指令,MUL为乘法指令,SUB为减法指令,MOV为传送指令、HLT为停机指令;A、B、C、D、E分别表示存储数a、b、c、d以及常数4的寄存器。2b求d=-4ac的汇编语言程序操作码操作数地址用符号或助记符来表示指令中的操作码和和操作数地址10•汇编语言编写的程序需要翻译成机器语言(二进制代码)才能运行,这个翻译过程由汇编程序来实现。2.1程序设计语言的演化-符号语言11汇编语言的局限汇编语言的语法、语义结构仍然和机器语言基本一样,而与人的传统解题方法相差甚远。汇编语言的大部分指令是和机器指令一一对应的,因此代码量大。和具体的机器相关,人们终究还是要对计算机的硬件和指令系统有很正确深入的理解,而且还是要记住机器语言的符号(助记符)。移植性不好。2.1程序设计语言的演化-符号语言12由于汇编语言的局限性,后来出现了高级语言。高级语言与自然语言(尤其是英语)很相似,因此高级语言程序易学、易懂、也易查错。3、高级语言2.1程序设计语言的演化-高级语言13#includestdio.hmain(){//变量声明intnumber1;intnumber2;intresult;//输出语句printf(pleaseinputthetwonumbers:\n);//输入语句,读取乘数与被乘数scanf(%d%d,&number1,&number2);//两数相乘result=number1*number2;//输出结果printf(theresultis:%d\n,result);return0;}两数相乘的C语言程序书上31页错误,将16行和18行的d%改成%d14高级语言的优势高级语言程序易学、易懂、也易查错。使程序员可以完全不用与计算机的硬件打交道、不必了解机器的指令系统。高级语言与具体机器无关,在一种机器上运行的高级语言程序有可能可以不经改动地移植到另一种机器上运行,大大提高了程序的通用性。2.1程序设计语言的演化-高级语言15第四代语言(Fourth-GenerationLanguage,以下简称4GL)是一种面向问题的程序设计语言,实现了在更高一级层次上的抽象,可以极大地提高软件生产率,缩短软件开发周期。4GL提供了功能强大的非过程化问题定义手段,用户只需告知系统做什么,而无需说明怎么做,程序就能够自动生成算法,自动进行处理。典型的4GL语言有ADA,MODULA-2,SMALLTALK-80等。4、第四代语言2.1程序设计语言的演化162.1程序设计语言的演化•按照4GL的功能可以将其划分为查询语言和报表生成器、图形语言、应用生成器、形式规格说明语言等几类。•查询语言:是数据库管理系统的主要工具,它提供用户对数据库进行查询的功能。如SQL(StructuredQuevyLanguage,结构化查询语言)•报表生成器:是为用户提供的自动产生报表的重要工具,它提供非过程化的描述手段让用户很方便地根据数据库中的信息来生成报表,如ADF。•图形语言:用图形的方式来进行软件开发。•应用生成器:是重要的一类综合的4GL工具,它用来生成完整的应用系统。应用生成器让用户不必使用多个软件,而只用这样一个综合工具来实现多种功能。•形式规格说明语言:形式化地对软件应满足的功能、性能及其它重要方面的陈述,可避免自然语言的二义性,也是软件自动化的基础。17理想情况下,计算机能够理解自然语言(如英语、汉语等)并立即执行请求。大量关于自然语言的工作正在实验室中进行。但迄今为止,自然语言的使用仍然是相当有限的。5、自然语言2.1程序设计语言的演化182.2构建和运行程序高级语言程序翻译成机器语言程序需要借助于翻译程序。翻译程序有编译程序和解释程序两种。编译程序:将编写的源程序中全部语句一次性翻译成机器语言程序后,再运行机器语言程序。编译和运行是两个独立分开的阶段。若想多次运行同一个程序,只要源程序不变,则不需要重新编译;源程序若有修改,则需要重新编译。编译程序和解释程序19解释程序:将源程序中的一条语句翻译成机器语言后立即执行它(并且不再保存刚执行完的机器语言程序),然后再翻译执行下一条语句。如此重复,直到程序结束。如果一条语句要重复执行,则每一次的重复执行都要重新翻译该语句,故效率很低。著名的解释程序有:BASIC语言解释程序、LISP语言解释程序、UNIX命令语言(shell)解释程序、数据库查询语言SQL解释程序等。当前大部分语言如C、C++、FORTRAN、ALGOL等是用编译程序进行翻译的。而BASIC、PASCAL、LISP等既有编译程序、又有解释程序。2.2构建和运行程序202.2构建和运行程序#includestdio.h#include“genlib.h”#defineN10main(){inti;for(i=1;i=N;i++)printf(“%d\n”,i);}源文件1.c编译器010010010101100100010000101000111010110110100111目标文件1.obj100101101011000101101001001010010110110101101011库链接器010010010101100100010000101000111010110110100111100101101011000101101001001010010110110101101011可执行文件.exe1.编辑程序2.编译程序3.链接程序4.运行程序00011101110100101101100010100110...000111001110011101011010加载程序CPUC标准库:有丰富的函数集,可供程序员直接使用。21源文件2.c编译器目标文件2.obj源文件1.c编译器目标文件1.obj100101101011000101101001001010010110110101101011库链接器010010010101100100010000101000111010110110100111100101101011000101101001001010010110110101101011可执行文件.exe当程序由多个源文件组成时222.2构建和运行程序#includestdio.h#include“genlib.h”#defineN10main(){inti;for(i=1;i=N;i++)printf(“%d\n”,i);}源文件.c编译器010010010101100100010000101000111010110110100111目标文件.obj预处理程序+翻译程序预处理程序:通常是把其他文件包含到要编译的文件中、以及用程序文本替换专门的符号。C语言中预处理指令都以#开头。翻译程序:将预处理后的程序翻译成二进制代码。stdlib.h……..……..genlib.h……..232.2构建和运行程序#includestdio.h#include“genlib.h”#defineN10main(){inti;for(i=1;i=N;i++)printf(“%d\n”,i);}源文件.c预处理文件stdio.h和genlib.h的内容main(){inti;for(i=1;i=10;i++)printf(“%d\n”,i);}242.2构建和运行程序100101101011000101101001001010010110110101101011库链接器010010010101100100010000101000111010110110100111100101101011000101101001001010010110110101101011可执行文件.exe#includestdio.h#include“genlib.h”#defineN10main(){inti;for(i=1;i=N;i++)printf(“%d\n”,i);}源文件.c预处理文件stdio.h和genlib.h的内容main(){inti;for(i=1;i=10;i++)printf(“%d\n”,i);}010010010101100100010000101000111010110110100111目标文件.obj翻译25编辑链接编译执行C程序开发步骤开始编辑编译连接执行有错?结果正确?结束有源程序file.c目标程序file.obj库函数和其它目标程序可执行目标程序无正确不正确file.exe程序代码的录入,生成源程序*.c语法分析查错,翻译生成目标程序*.obj与其它目标程序或库链接装配,生成可执行程序*.exe源程序目标程序可执行程序内容程序设计语言机
本文标题:chap2程序设计语言概述.
链接地址:https://www.777doc.com/doc-2905096 .html