程序:为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合
算法:解决问题的具体方法和步骤
流程图是算法的一种图形化表示方式。
流程图直观、清晰,更有利于人们设计与理解算法。
它使用一组预定义的符号来说明如何执行特定任务
计算机语言发展史
1. 机器语言
1) 简介:所有代码里面只有0和1,每一条指令称为“机器指令”
2) 优点
u 代码能被计算机直接识别,直接对硬件产生作用,程序的执行效率非常高
u 能直接访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等
3) 缺点
u 程序全是些0和1的指令代码,可读性差,还容易出错
u 对硬件的依赖性很强,因此不同型号计算机的机器语言又不一样。也就是说,如果2台不同型号的机器想实现一样的功能,需要编写2套完全不同的代码
u 要熟记所用计算机的全部指令和指令的涵义,指令又多又难记
4) 使用场合
综上所述,机器语言很难掌握和推广,现在除了计算机生产厂家的专业人员外,绝大多数的程序员已经不再去学习机器语言了
2. 汇编语言
1) 简介:用英文单词等符号代替机器指令
2) 优点
u 像机器语言一样,可以直接访问、控制计算机的各种硬件设备
u 占用内存少,执行速度快
3) 缺点
u 不同的机器有不同的汇编语言语法和编译器,代码缺乏可移植性,也就是说,一个程序只能在一种机器上运行,换到其他机器上就不能运行
u 符号非常多、难记,即使是完成简单的功能也需要大量的汇编语言代码,很容易产生BUG,难于调试
u 必须对硬件非常了解,开发效率很低,周期长且单调
4) 使用场合
u 操作系统内核、驱动程序、单片机程序
u 软件的加密、解密、破解
u 病毒的制作、防治
u 程序的调试、分析
3. 高级语言
1) 简介:接近自然语言
2) 优点
u 简单、易用、易于理解,语法和结构类似于普通英文
u 远离对硬件的直接操作,使得一般人经过学习之后都可以编程,而不用太熟悉硬件知识
u 一个程序还可以在不同的机器上运行,具有可移植性
3) 缺点
u 程序不能直接被计算机识别,需要经编译器翻译成二进制指令后,才能运行到计算机上
4) 种类:C语言、C++、C#、Java、Objective-C等
4. 三种语言的对比
分别用机器语言、汇编语言、C语言(高级语言)来写一个计算1+1的程序
1) 机器语言:简直是天书!!!
10111000 00000001
00000000 00000101
00000001 00000000
2) 汇编语言:可读性稍微好一点,但是麻烦
MOV AX,1
ADD AX,1
3) C语言:精简、通俗易懂
1+1
C 语言简介
C 语言是贝尔实验室的 Dennis Ritchie 在1973 年设计的。C 最初用于开发系统级程序。
在微机上,有许多性能良好的商品C 语言系统可用。包括Turbo C、Borland
C语言特点:
结构化的程序设计语言:层次清晰,便于按模块化方式组织程序,易于调试和维护
语句简洁:学习时入门相对容易,C 语言很好地总结了其他语言提出的程序库概念
功能强大:既可用于系统软件的开发,也适合于应用软件的开发。
移植性好:只要对这种语言稍加修改,便可以适应不同型号机器或各类操作系统。
C语言的基本结构
#include <stdio.h> //以.h为后缀的文件被称为头文件,可以是 C 程序中现成的标准库文件,也可以是自定义的库文件。
void main(){ //程序从main主函数开始执行;
printf("HelloWorld\n"); //printf打印输出;
}
代码执行流程
1.源代码(以.c为文件扩展名,这是用户创建的文件)
2.目标文件(通常以.o或者.obj为文件扩展名,这是编译器编译后的文件)
3.可执行文件(以.exe为后缀名结束是连接器的输入结果)
4.运行
#include <stdio.h>
int main()
{
// \n:换行 \t:制表位
/*
printf("************\n");
printf("*\n");
printf("*\n");
printf("*\n");
printf("*\n");
printf("************\n");
*/
printf("姓名\t语文\t数学\t英语\n");
printf("张三\t80\t90\t70\n");
return 0;
}
#include <stdio.h> void main() { /* printf("*******************************\n");// \n:换行 printf(" 郑州四中成绩表 \n"); printf("*******************************\n");// \n:换行 printf("姓名 语文 英语 数学\n"); printf("张三 80 80 80\n"); printf("李四 80 80 80\n"); */ printf("*******************************\n");// \n:换行 printf("\t郑州四中成绩表\n"); printf("*******************************\n");// \n:换行 printf("姓名\t语文\t英语\t数学\n"); // \t:制表位(tab)相当于若干空格 printf("张三\t80\t80\t80\n"); printf("李四\t80\t80\t80\n"); } |