前言
进行程序设计,要解决两个问题:
(1)算法:解决问题的思路和方法
(2)实现算法:用计算机语言编写程序
算法是灵魂,语言是工具。
1. 什么是计算机程序
程序:一组计算机能识别和执行的指令。每一条指令使计算机执行特定的操作。
计算机的一切操作都是通过程序来控制的
计算机的本质是程序的机器,程序和指令是计算机系统种最基本的概念。
2 .什么是计算机语言
机器语言:(machine langugae)用二进制代码表示的指令的集合。从根本上讲,计算机只能识别和接受0和1组成的指令。计算机直接识别和接受的二进制代码机器指令(machine instruction)
汇编语言:(high level language)符号语言,用助记符表示的指令。*符号汇编语言*(sysmbolic assembler language),低级语言(low level language),
高级语言:用接近自然语言的语法表示的指令。
编译程序:
源程序(source program)————>目标程序(object program)————>可执行程序(executable program)
高级语言经历的不同的发展阶段:
(1)**非结构化的语言**。BASIC,FORTRAN,ALGOL
(2)**结构化的语言**。程序必须有良好特性的基本结构(***顺序结构、选择结构、循环结构***)构成,不允许随意跳转,从上而下执行。C语言,QBASIC,FORTRAN77。
(3)**面向过程的语言**。程序必须有特定的功能,必须有特定的数据结构。C++语言、Java。
3 .C语言的发展及其特点
1972年,D.M Ritchie在B语言的基础上设计了C语言。
1973年,ken Thompson和D.M Ritchie合作把UNIX的90%以上用C语言改写。
1978年,Brin W.Kernighan和Dennis M.Rithchie合著了影响深远的名著,***The C Programming Language***。
1989年,ANSI标准发布,C89。
1999年,ISO标准发布,C99。
C语言是一种用途广泛、功能强大、使用灵活的过程性(***procedural***)编程性语言,既可以用于编写应用软件,又可以编写系统软件。
C语言的主要特点:
(1)语言简洁、紧凑、使用方便、灵活。**37个关键词**,**9种控制语句**,程序书写形式自由,主要用小写字母表示。
C语言是一个很小的内核语言,只包括极少的与硬件有关的成分,其不直接提供输入和输出语句、有关文件操作的语句和动态内存管理语句(这些操作是由编译系统所提供的**库函数**来实现)。
(2)运算符丰富。**34种运算符**
(3)数据类型丰富。**整型、浮点型、字符型、数组类型、枚举型、指针型、结构体类型和共用体类型**,C99扩充了**复数浮点类型、超长整型(long long)和布尔型(bool)**,尤其是**指针类型**使用十分灵活和多样化,能实现各种复杂的数据结构的运算。
(4)结构化的控制语句。***if...else语句;while语句;do...while语句;for语句***。用函数作为程序的模块单位,便于实现程序的模块化。C语言是完全模块化和结构化的语言
(5)语法限制不太严格,程序设计自由度大。
(6)C语言允许**直接访问物理地址,能进行位操作**,能实现汇编语言的大部分功能,可以对硬件进行操作。双重性,既是高级语言,又是低级语言。既是成功的系统描述语言,又是通用程序设计语言。
(7)用C语言编写的程序**可移植性好**。
(8)生成目标代码质量高,程序执行效率高。
------------------------------------------------------------------------------------------------
4. 最简单的C语言程序
例 1.1在屏幕输出一行信息
//在屏幕输出一行信息
例如:我是要成为嵌入式开发工程师的男人
'''
#include <stdio.h>
int main()
{
printf("我是要成为嵌入式开发工程师的男人\n");
return 0;
}
'''
输出结果:
我是要成为嵌入式开发工程师的男人
例 1.2求两个整数之和
//求两个整数之和
'''
#include <stdio.h>
int main()
{
int a,b,sum;
a=512;
b=1314;
sum=a+b;
printf("sum=%d\n",sum);
return 0;
}
'''
输出:
sum=1836
例 1.3求两个整数中的较大者
//求两个整数中的较大者
'''
#include <stdio.h>
int main()
{
int a,b,max;
a=512;
b=1314;
if(a>b)
{
max=a;
}
else
{
max=b;
}
printf("max=%d\n",max);
return 0;
}
'''
输出:
max=1314
例 1.4求两个整数中的较小者
//求两个整数中的较小者
'''
#include <stdio.h>
int main()
{
int max()
{
int max(int x,int y)
int a,b,c;
scanf("%d%%d",&a,&b);
c=max(a,b);
printf("c=%d\n",c);
return 0;
}
//求较大者函数
int max(int x,int y) //定义max函数
{
int z;
if(x>y)z=x;
else z=y;
return z;
}
}
'''
输入:
520 1314
输出:
1314
C语言的程序结构
特点:
(1)**一个程序由一个或多个源程序文件组成**。一个源程序文件可以包括3个部分。
①**预处理指令**。
②**全局声明**。函数之外进行的数据声明
③**函数定义**。
(2)**函数是C程序的主要组成部分**
程序几乎全部工作都是由各个函数分别完成的,函数是C程序的基本单位,在设计良好的程序时,**每个函数都用来实现一个或几个特定的功能**。
一个程序——>若干个源程序;一个源程序——>若干个函数;
(3)**一个函数包括两个部分**。
①**函数首部**。即函数的第一行,包括函数名、函数类型、函数参数。***int main(viod)***,括号内写函数的参数名及其类型,如果函数没有参数可写**void**。
②**函数体**。即函数首部下面的花括号内的部分。函数体一般包括两部分:
**声明部分**:包括,定义在本函数要用到的变量;对本函数所调用函数进行声明;
**执行部分**:由若干语句组成,指定在函数中所进行的操作。
(4)**程序总是从main函数开始执行**,与位置无关。
(5)程序要求计算机完成的**操作是由函数中的C语句完成**的**。
(6)**C语言本身不提供输入输出语句**。
(7)程序应当包含**注释**。'**//注释、/*注释*/**'。
5. 运行C程序的方法和步骤
**源程序(.c)**——>编译——>**目标程序(.obj)**——>连接处理——>**可执行程序(.exe)**(executive program)——>运行得到结果
6. 程序设计的任务
从确定问题到完成任务,六步骤:
问题分析——>设计算法——>编写程序——>对源程序进行编辑、编译和连接——>运行程序,分析结果——>编写程序文档
(1)**问题分析**。问题抽象化,建立模型。
(2)**设计算法**。设计出解题的方法和步骤。
(3)**编写程序**。根据得到的算法,用一种高级语言编写。
(4)**对源程序进行编辑、编译和连接**,得到可执行文件。
(5)**运行程序,分析结果**。
(6)**编写程序文档**。用户使用说明书,又称为用户文档,help,readme形式。
-----------------------------------------------------------------------------------------------------
习题
1.什么是程序?什么是程序设计?
①**程序是一组计算机能识别和执行的指令**。每一条指令使计算机执行特定的操作 。
②**程序设计是指从确定任务到得到结果、写出文档的全过程**。
2.为什么需要计算机语言?高级语言有哪些特点?
①计算机语言解决了人和计算机交流信息的语言问题,其是计算机和人都能识别的语言。
②高级语言的特点:
第一,数据结构丰富。高级语言的数据结构要比汇编和机器语言丰富;
第二,执行效率没有低级语言高。高级语言与具体机器结构的关联没有汇编以及机器语言密切;
第三,可读性强。高级语言更接近自然语言更容易掌握;
第四,需要编译。高级语言编写的程序要经过编译或解释计算机才能执行。
3.编写一个C程序,运行时输入a,b,c三个值,输出其中最大者。
'''
//重构
#include<stdio.h>
//主函数
int main()
{
int max(int x,int y,int z);
int a,b,c,n;
printf("请输入a,b,c三个值:");
scanf("%d,%d,%d",&a,&b,&c);
n=max(a,b,c);
printf("最大值n=%d",n);
return 0;
}
//定义最大者函数
int max(int x,int y,int z)
{
int k;
if(x>y&&x>z)k=x;
else if (y>x&&y>z) k=y;
else k=z;
return k;
}
'''
'''
输入:
请输入a,b,c三个值:520,1314,965
'''
'''
输出:
最大值n=1314
'''