一、程序设计的概念
(一)程序的概念
1.计算机的一切操作都是由程序控制的,离开程序,计算机将一事无成。谷歌围棋人工智能程序。
例:AlphaGo、汽车自动驾驶、哈喽单车、各种游戏、手机上各种APP、操作系统
2.程序(program):
使用某种程序设计语言编写,指示计算机完成特定功能的命令序列的集合。
只要让计算机执行这个程序,计算机就会自动地、有条不紊地进行工作。
(二)程序设计语言
1.程序设计语言是计算机能够理解和识别的一种语言体系,用于描述程序中操作过程的命令、规则的符号合集,是进行程序设计的工具。
2.程序设计语言发展阶段
机器语言(由0和1组成的指令)
例:1000001001
汇编语言(机器指令的符号化)
例:MOV AL ,4 ;使AL=4,寄存器AL对应第1个整数,相当于a=4
MOV BL,5 ;使BL=5,寄存器BL对应第2个整数,相当于b=5
MOV AL,BL;使AL与BL的值相加,结果保存在AL中,相当于a=a+b
高级语言(接近于人的自然语言和数学指令)
例:int a,b,x;//声明a,b,x为整型变量
a=4;b=5;//简化输入,直接设置a,b的值
x=a+b;//计算公式,结果赋值给x
3.高级语言
高级语言独立于机器,表达方式更接近于被描述的问题,而不需要去关心与机器相关的实现细节。
第一个高级语言
1954年,FORTRAN(公式翻译语言)
影响较大的高级语言
FORTRAN、COBOL、BASIC、Pascal、VB、C、C++、C#、JAVA、Python、PHP等
面向过程的程序设计语言
以函数为基本程序结构单位,程序的设计以过程为核心。先用函数实现解决问题所需要的每个步骤,再根据既定的功能依次调用函数。
程序=算法+数据结构+程序设计语言+语言环境
例:C、Pascal等
面向对象的程序设计语言
以类为基本程序结构单位,程序的设计以类为核心,数据及操作封装在类中。
程序=类+类+...+类
类=数据结构+算法+程序设计语言+语言环境
例:C++、JAVA、Python等
高级语言的翻译
高级语言不能被计算机直接执行,必须先由一种翻译程序将这些程序翻译成能被计算机识别和执行的机器语言。
翻译程序的种类:
编译程序
(把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序)
解释程序
(在运行用户程序时,直接执行源程序或源程序的内部形式)
二、初识C语言
(一)C语言的发展历史
C语言识国际上广泛流行的计算机高级语言
BCPL语言——>B语言——>C语言
最初的C语言只是为描述和实现UNIX操作系统而设计的。
C语言是一种用途广泛、功能强大、使用灵活的过程性(procedural)编程语言,既可用于编写应用软件,又能用于编写系统软件。因此C语言问世以后得到迅速推广。
C语言是最受欢迎的、应用最广泛的编程语言之一。
(二)最简单的C语言程序举例
例1:要求在屏幕上输出以下一行信息Hello,World!
(源代码)
#include
int main(void) //main:函数的名字,表示主函数 int:主函数类型
{
printf("Hello,World!"); //输出语句 printf:输出函数
return 0; //将main函数执行结束前将整数0作为函数值
}
(运行结果截图)
例2:求两个整数中的较大者
(源代码)
#include
int main(void)
{
int max(int x,int y);
int a,b,c;
scanf("%d,%d",&a,&b);//输入语句
c = max(a,b);
printf("max=%d\n",c);
return 0;
}
int max(int x,int y)
{
int z;
if(x>y)
z=x;
else
z=y;
return(z);
}
(运行结果截图)
C语言程序的结构特点
1.一个程序由一个或多个源程序文件组成
·小程序往往只包括一个源程序文件
2.函数是C程序的主要组成部分
·一个C程序是由一个或多个函数组成的
·必须有且仅有一个main函数
·每个函数都用来实现一个或几个特定功能
·被调用的函数可以是库函数,也可以是自己编制设计的函数
3.程序总是从main函数开始执行
4.C程序对计算机的操作由C语句完成
·C程序书写格式是比较自由的-一行内可以写几个语句
-一个语句可以写在多行上
·为清晰起见,习惯上每行只写一个语句
5.数据声明和语句最后必须有分号;
6.C语言本身不提供输入输出语句
7.程序应当包含注释,增加可读性
C语言允许使用两种注释方式:
·//:单行注释-可独占一行
-可出现在一行中其他内容的右侧
·/* ...... */:块式注释-可包含多行
例3:实现“鸡兔同笼”问题穷举法的C程序
(源代码)
#include
int main(void) //主函数
{
int head,feet; //head为鸡兔头的总数,feet为鸡兔脚的数量
int chicken,rabbit; //chicken为鸡的数量,rabbit为兔的数量
scanf("%d %d",&head,&feet); /*获取键盘输入的头数与脚数,
反复穷举可能符合条件的解法,直到获得求解结果结束*/
for(chicken=1;chicken<=head;chicken++)
{
rabbit=head-chicken;
if(chicken*2+rabbit*4==feet)
break;
}
printf("\n chicken=%d,rabbit=%d",chicken,rabbit); //屏幕输出鸡兔的脚
return 0;
}
(运行结果截图)
C语言的主要特点
1.语言简介、紧凑,使用方便、灵活
·只有37个关键字、9种控制语句
·程序书写形式自由,源程序短
2.运算符丰富
·有34种运算符
·把括号、赋值、强制类型转换等都作为运算符处理
·表达式类型多样化
3.数据类型丰富
·包括:整型、浮点型、字符型、数组类型、指针类型、结构体类型、共用体类型
·C99又扩充了复数浮点型、超长整型(long long)、布尔类型(bool)
·指针类型数据,能用来实现各种复杂的数据结构(如链表、数、栈等)的运算
4.具有结构化的控制语句
·如if...else等、while等、do...while语句、switch语句、for语句
·用函数作为程序的模块单位,便于实现程序的模块化
·C语言是完全模块化和结构化的语言
5.允许直接访问物理地址,能进行位操作,可以直接对硬件进行操作
·C语言具有高级语言的功能和低级语言的许多功能,可以用来编写系统软件
·这种双重性,使它既是成功的系统描述语言,又是通用的程序设计语言
6.生成目标代码质量高,程序执行效率高
三、程序设计方法
(一)问题分析
1、问题的定义
明确解决问题需要考虑的已知信息和需要达到的目标。
(1)已知什么
(2)求什么
如:已知笼中鸡兔的头数与脚数,求鸡兔各有多少只。
2.问题的解决方案
根据已知条件,寻求结果的方法和途径。
如:鸡兔同笼问题的“穷举法”。
(二)算法设计
1.算法:解决问题所需的有限步骤。
2.算法设计:设计程序执行步骤,这些步骤都应该是明确定义、可以执行的,而且每个步骤的执行顺序是确定的,并且能够在有限步骤内执行完毕。
例1:求三个整数中的最大值,放入max中
第一步:输入三个正整数a,b,c;
第二步:求a和b中的较大值,如果a大于b,则将a的值赋max,否则就将b的值赋给max;
第三步:如果c大于max,则将c的值赋给max;
第四步:输出最大值max。
3.算法的描述:自然语言、伪代码、流程图。
(1)描述算法的流程图的几种基本图形:
(2)求三个数中的最大值的算法流程图:
(3)C语言的三种控制结构对应的流程图:
编程问题的最基本的算法设计可归结为以下三步:
·获得数据(Input)
·执行计算(Process)
·显示结果(Output)
(三)程序的编写
C程序=数据+操作
1.数据:确定数据的存储方式。
·已知信息的数据
·计算过程产生中间数据
·待求结果的数据
2.操作:用语句实现。
·符合程序语言的语法规则
例1:求三个整数中的最大值,放入max中
(四)运行测试
1.运行测试的步骤:
·上机输入和编辑源程序(.c文件)
·对源程序进行编译(.obj文件)
·进行链接处理(.exe文件)
·运行可执行程序,得到运行结果
该文章属于个人课后学习笔记,内容来源于知到智慧树共享课-C语言程序设计(上海电力大学)。