动手学C语言--S1绪论篇

计算思维能力培养

C语言:是面向过程的

C++:面向对象,也可以实现面向过程

JAVA:跨平台分布式语言

VB:交互逻辑思维

Python:主要是面向对象进行问题求解的编程语言;其语法简洁清晰,类库丰富强大,更是能轻松结合其他语言:尤其是:C语言,C++语言;

程序设计过程

计算机解决问题的过程就是将其转化为计算机思维化的过程;

程序设计算法结构与组成

计算机程序组织结构:

程序 = 数据结构+程序算法

  1. 数据结构:是对程序操作对象的数据类型及数据组织形式的描述与定义;

在程序中:是对内存变量及存储数据计算范围的定义和约定;

  1. 程序算法:

是对程序操作过程,即操作步骤的算法描述的指令集合;

在程序中,是对操作对象和程序流程的逻辑控制,是实际问题求解的实现过程;

但是,对当下来说:

程序=数据结构+数据结构+设计方法+编程语言+编程工具

对于常量:用全部大写表示----提高代码可读性;

例1实现计算圆柱体计算体积

代码实现:

Visual C++ 集成工具

文件管理和文件名命名规则

创建text 然后保存成 .c文件;

运行,调试工具:从快捷键按钮出发;

输出中的数值型数据 占位符,在后面有的是加 &,有的不加 &;

计算机程序算法表示

加法法则

  1. 事件互不相容时的加法法则

定理1 设事件A与B互不相容

则:P(A+B)=P(A)+P(B)

  1. 一般情况下的加法公式

P(A+B)=P(A)+P(B)-P(AB)

程序流程图的描述

程序起止/结束框:椭圆

条件判断框:菱形

输入/输出框:圆形

注释框:

程序流程线:箭头–数据流

程序流程图:表示三种基本控制结构;

程序流程图局限性:

N-S图

N-S图描述方式:

都是三种基本控制结构相互嵌套实现;

程序设计语言描述

  1. 机器语言

就是真实机器读取的语言:例如已知某计算机系统的取数操作码 1000,除法操作码为1010,减法操作码:1001;传送操作码:0100;另外也知道变量m,n,z中的三个数分别存放在11110110,10101101,01010110;

计算表达式 m/n-z的值

则编程如下:

1000 11110110 #取出放在该号内存单元的值

1010 10101101 将上条指令取出值除以放在该号内存的值

1001 01010110 将除法结果值减去放在01010110内存单元的值

0100 10010000 将上条指令操作最后结果值存到10010000内存单元

由此来看:用这样来写的化,的确是反人类的操作;

  1. 汇编语言

同样计算上述表达式的值

程序写成:

LDA m

DIV n

SUB z

mov Y

这样从逻辑操作和理解上就接近自然语言了,但是计算机系统CPU不能够直接识别出来。必须事先存放在存储器中的“”翻译程序“”即编译过程;翻译成机器语言,计算机系统能够识别和执行;

编译:即一般被称为汇编程序,可将程序的符号源代码翻译成机器语言描述的目标程序,生成目标程序,计算机才能运行,输出结果。

但这仍然也是反人类的,可能单片机会用得上一点,但是郭天祥大牛早已说过:就是用C语言就油完美又好,根本不用去理那个狗屎汇编程序指令代码集;

只有底层设计,底层架构才会设计这些东西,但同时也是最无聊最绕人的;

高级语言(这才是实打实的)

例子:实现分段函数

注意缩进,注意对应;

高级语言的编译过程:

图片
在这里插入图片描述

作业1:

使用流程图和N-S图描述自然语言描述的程序算法:从键盘输入数值数据,若是正数则累加求和,若是负数则重新输入,若输入空格则结束程序执行;

代码实现

//  从键盘输入数值数据,若是正数则累加求和,
//  若是负数则重新输入,若输入0则结束程序执行;

#include "stdio.h"  //库函数 说明 输入输出函数
int getnum();   //分解任务1,获得正数函数

void main(){
	int i =0;
	int sum = 0;
	int a = 0;
	int flag =1;
	
	// 循环控制

	while(flag){
		a = getnum();
		if (a ==0){
			flag = 0;
		
		}
		sum = sum +a;
	}
	
	printf("sum is %d \n",sum);


}
// 获得正数
int getnum(){
	int  n;
	while(1){
		printf("请输入一个正数:");
		scanf("%d",&n);
		if(n < 0){
			printf("输入错误,请重新输入: \n");
			continue;
		}
		else
			return n;
	
	}

}

程序算法案列实现

程序设计实现的首先关键是:通过算法分析和设计(搜索大脑或者网络看看有没有相关代码实现,在上面进行修改),然后选择自己编程语言对应的语法来实现。

例子:求1+2+3+…+100

写程序流程图或者N-S图;

千万千万绝对绝对要记住:程序算法实现:是绝绝绝对对对不是唯一的,而是N种;

作业:

1+1/2+1/3+…+1/n = (n=100)

1-1/2+1/3-1/4+…1/n = (n=100 )

代码实现:

#include "stdio.h"
#include<math.h>  // 包含数学函数

void main(){
	
	int i;
	double a = 0.0;
	double sum=0.0;
	for(i=1;i<101;i++){
		a = 1.0/i * pow(-1,i+1);  //这里必须是 1.0,要不然会有数据丢失
		sum =sum + a;
	}
	
    printf("the sum is %f \n",sum);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值