第2章 算法与C语言程序 程序 (1)数据的描述:数据的类型和组织形式(数据结构) (2)操作的描述:操作步骤(算法) 沃思指出:

Slides:



Advertisements
Similar presentations
While 迴圈 - 不知重複執行次數
Advertisements

CSIM, PU C Language Introduction to the C Programming Language 重覆敘述 (for,while,break,continue) 適合重複性的計算或判斷.
主讲:王幸民 理学院计算机基础教学部.
1.1 程序和程序设计 程 序:简单的说程序就是指令的集合。 计算机设计语言: 机器语言 :二进制 0 、 1 汇编语言:助记符(英语单词)。 高级语言: 人类自然语言(数学语言 + 英语) 如: C 语言、 Qbasic 、 VB 等 第一章:程序设计基本概念.
C语言程序设计 主讲教师 :张群燕 电话:
热爱党、热爱祖国、热爱人民 泉州九中初二年(10)班主题班会.
營利事業所得稅查核準則 相關概念介紹 南區國稅局 新營分局 林俊標 各位學員大家好:
培养目标 1.建立基本的程序设计概念体系,掌握基础程序设计方法。
第4章 條件判斷與迴圈 Java 2 程式設計入門與應用.
迴圈 迴圈基本觀念 while迴圈 do 迴圈 for迴圈 巢狀迴圈 迴圈設計注意事項 其他控制指令 迴圈與選擇的組合.
“八皇后”问题 崔萌萌 吕金华.
第一章 C语言概述 计算机公共教学部.
高澱粉蔬菜是主食 文字取材: 蘇逸晴.
第五单元 群星闪耀 复法指导 阅读与欣赏 单元重点 1.了解传记文的基本体例与特征。
请将手机调整到静音状态 实验网站:program3.ccshu.net 资源网站:class.ccshu.org/ /
學 號:997I0010、997I0024 組 員:洪韋鈴、王婷婷 日 期: 指導老師:王立杰 老師
公司法(六) 股份有限公司 1.
第三章 控制结构.
循环结构又称为重复结构:用来处理需要重复处理的问题,它是程序中一种很重要的结构。
Class 2 流程控制-選擇敘述與迴圈.
C的發展史 C程式初體驗 C程式設計基本注意事項 上機實習課程
教材 《C++程序设计》.谭浩强. 清华大学出版社 王雪晶
C 程式設計— 控制敘述 台大資訊工程學系 資訊系統訓練班.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
新觀念的 VB6 教本 第七章 讓程式轉彎的控制敘述.
数学3(必修)—— 算 法 ALGORITHM 苏州大学数学科学学院 徐稼红
第三章 流程控制與例外處理 資訊教育研究室 製作 注意:本投影片僅供上課使用,非經同意,請勿散播或轉載。
Introduction to the C Programming Language
C语言 程序设计基础与试验 刘新国、2012年秋.
第3讲 C++程序控制结构 3.1 顺序结构 3.2 分支结构 3.3 循环结构 3.4 转向控制 3.5 综合案例分析.
第二章 程序的灵魂--算法.
本章中將會更詳細地考慮有關重複的概念,並且會 介紹for和do…while等兩種用來控制重複的敘述 式。 也將會介紹switch多重選擇敘述式。 我們會討論直接和迅速離開某種控制敘述式的 break敘述式,以及用來跳過重複敘述式本體剩餘 部份的continue敘述式。 本章會討論用來組合控制條件的邏輯運算子,最後.
程序的三种基本结构 if条件分支语句 switch多路开关语句 循环语句 循环嵌套 break,continue和goto语句
計數式重複敘述 for 迴圈 P
第5讲 结构化程序设计(Part II) 周水庚 2018年10月11日.
陳維魁 博士 儒林圖書公司 第五章 控制結構 陳維魁 博士 儒林圖書公司.
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
第0章作业: 教材P12-练习与实践 1.写出用符号’*’输出描绘汉字”大”的流程图。
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
第4讲 C++程序控制结构(二) 4.1 循环结构 4.2 转向控制 4.3 综合案例分析.
第2章 MATLAB程序设计 编者.
C++大学基础教程 第3章 C++控制语句 北京科技大学 信息基础科学系.
第1讲 C语言基础 要求: (1) C程序的组成 (2) C语言的标识符是如何定义的。 (3) C语言有哪些基本数据类型?各种基本数
程式結構&語法.
4 條件選擇 4.1 程式基本結構 循序式結構 選擇式結構 重複式結構 4-3
第三章 C++的语句和简单的程序设计 主要内容:
第一章 程序设计和C语言 主讲人:高晓娟 计算机学院.
C语言程序示例: 1.输入10个数,按从小到大的顺序排序。 2.汉诺塔问题。.
C++语言程序设计 C++语言程序设计 第三章 控制语句 第十一组 C++语言程序设计.
1.2 C语言程序的结构与书写规则 一、 C语言程序的总体结构
C程序设计.
C 语言程序设计 程序的循环结构 电大崇信县工作站 梁海亮.
Instructor:Po-Yu Kuo 教師:郭柏佑
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
第3 语言翻译问题 [学习目标]:学习和掌握语言的语法的基本概念和基本要素,理解翻译的步骤;学习和掌握BNF文法。
第一章 C语言概述 教师:周芸.
第2章 认识C语言 教学要点 2. 1 项目二C语言程序识读 2 .2 项目三班级成绩排名 2 .3 知识链接 返回.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
問題解決與流程圖 高慧君 台北市立南港高中 2006年12月22日.
程序设计基础.
#include <iostream.h>
第五章 逻辑运算和判断选取控制 §5.1 关系运算符和关系表达式
第1章 数据结构基础概论 本章主要介绍以下内容 数据结构研究的主要内容 数据结构中涉及的基本概念 算法的概念、描述方法以及评价标准.
Do While 迴圈 東海大學物理系‧資訊教育 施奇廷.
迴圈(重複性結構) for while do while.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
第二章 Java基础语法 北京传智播客教育
1.2.3 循环语句.
循环结构 刘华 江苏省苏州中学.
Presentation transcript:

第2章 算法与C语言程序 程序 (1)数据的描述:数据的类型和组织形式(数据结构) (2)操作的描述:操作步骤(算法) 沃思指出: 数据结构+算法=程序 确切的说,除上述要素外,还要采取结构化程序设计的方法和用何种语言来设施。 程序=数据结构+算法 +程序设计方法+语言工具及环境

数据结构: 反映各种类型数据的构造形式,是计算机加工处理的对象 算法: 为解决某一特定问题而采取的确定的有限的步骤,它是程序设计的灵魂,解决做什么和怎么做 程序设计方法: 根据数据类型和算法用计算机语言加以实现,程序中的操作语句实际上是算法的具体体现,不了解算法就谈不上程序设计 语言工具和环境: 用计算机语言编制的程序需相应的编译系统和硬件环境加以实施

计算机求解问题的步骤 问题定义 ---- 明确问题 需求分析 ---- 精确描述 系统设计 ---- 模型或算法 系统实现 ---- 程序编制 系统运行 ---- 运行、求解

2.2 算法的概念 做事情都有——方法、步骤(顺序)——决定事情成败 1、算法:计算机求解末个问题而采用的具体方法、步骤 2.2 算法的概念 做事情都有——方法、步骤(顺序)——决定事情成败 1、算法:计算机求解末个问题而采用的具体方法、步骤 2、两大类计算机算法: 数值运算算法:求数值解、成熟 非数值运算算法:事务管理、广泛 3、算法的特性(p18):有穷性、确定性、有效性等 4、算法的描述:有多种 归纳为两大类:文字 图形(符号)

2.3 算法的描述 算法常用的方法: 自然语言、传统流程图、结构化流程图、伪代码等 2.3.1用自然语言表示算法 自然语言: 2.3 算法的描述 算法常用的方法: 自然语言、传统流程图、结构化流程图、伪代码等 2.3.1用自然语言表示算法 自然语言: 人们日常使用的语言,可以是英、中、中英文结合 特点: 通俗易懂 缺点: 文字冗长,易出现岐义性,表示算法的含义不太严格,根据上下文才能判断其含义。

起止框: 输入输出框: 判别框: 处理框: 流程线: 注释框: 连接点: 2.3.2用流程图表示算法 ANSI规定的流程图符号,已为世界各国采用,用图框表示操作,用图形表示算法。 特点:直观、形象、灵活、易于理解,可表示任何算法。 起止框: 输入输出框: 判别框: 处理框: 流程线: 注释框: 连接点:

1973年美国学者I.Nassi和B.Shneiderman提出了一种新的流程图形式 2.3.3 用N-S流程图表示算法 1973年美国学者I.Nassi和B.Shneiderman提出了一种新的流程图形式 特点:去掉带箭头的流程线,全部算法在一个矩形框内,在该框内还可包含从属于它的框,这种流程图称为N-S结构化流程图,受到人们欢迎。 成立 A B 不成立 P 当P1成立 A A 直到P1成立 A B

2.3.4 用伪代码表示算法 它是介于自然语言和计算机语言之间的文字和符号来描述算法。 特点:自上而下书写,每行表示一个基本操作,可用中、英、中英书写。 原则:意思要表达清楚,格式要清晰易懂。

例:求 5! 用流程图算法 用N-S图 表示算法 用伪代码表示 BEGIN(算法开始) 1→t 2→i While i<=5 t ×i →t i +1 →i 直到 i >5 打印t 用N-S图 表示算法 用伪代码表示 BEGIN(算法开始) 1→t 2→i While i<=5 {t×i →t i+1 →i } print t END(算法结束) 开始 1→ t 2→ i t×i→ t i+1→ i i >5 打印 t 结束 N Y

例: 将50名学生中成绩在80分以上者的学号、成绩打印出来 1 →i 输入ni和gi i+1 →i i >50 gi ≥80 打印ni和gi 结束 开始 N Y 用流程图算法

例: 将50名学生中成绩在80分以上者的学号、成绩打印出来 用N-S流程图表示 1→i 输入ni , gi i+1→i 直到i>50 gi >=80 是 否 输出ni , gi 直到 i >50 用伪代码表示 BEGIN(算法开始) 1→i While i<=50 {input ni and gi i+1 →i } { if gi >=80 print ni and gi i+1→i } END(算法结束)

例 用流程图算法判断从2000-2500年每一年是否是闰年 开始 2000 → y y不能被 4整除 100整除 400整除 打印y“是闰年” 打印y“不是闰年” y+1 →y y>2500 结束 Y N

例 判定闰年的算法用N-S图表示 2000 → y 是 否 y / 4 的余数为 0 打印Y “是闰年” “非闰年” y+1 → y

例 用流程图算法求: 开 始 1 → sum 2 → deno 1 → sign (-1)×sign→sign 开 始 1 → sum 2 → deno 1 → sign (-1)×sign→sign sign×(1/deno)→term sum+term→sum deno+1→deno deno>100 结 束 N Y

例 求 算法用N-S流程图表示 1→sum 2→deno 1→sign (-1)×sign→sign Sum+term→sum deno+1→deno 直到 deno > 100 打印 sum

例 求 用伪代码表示算法 BEGIN (算法开始) 1→sum 2→deno 1→sign While deno <=100 { (-1)×sign →sign sign ×1/ deno →term sum+term →sum deno+1 →deno } print sum END(算法结束) 伪代码优点:书写格式自由、容易修改、容易写出结构化算法。 缺点:不太直观,容易出现逻辑上的错误

例 用流程图算法判断素数 开 始 输入n 2 → i n/ i的余数→ r r=0? i + 1 → i 打印n”不是素数” i > 例 用流程图算法判断素数 开 始 输入n 2 → i n/ i的余数→ r r=0? i + 1 → i i > 打印n”是素数” 结 束 N Y 打印n”不是素数”

三种基本结构和改进的流程图 1966年Bohra和Jacopini提出的三种基本结构,表示良好结构算法 (1)顺序结构 (2)选择(选取、分支)结构

(3)循环(重复)结构 ①当(while)型循环结构 功能:给定条件P1成立时,执行A, 执行完后再判断条件是否成立,如 例:用当型循环实现5个数的打印 输出用传统流程图算法实现 b P1 A 成立 a x+1 → x 0→x X < 5 ? 打印x值 N Y

否成立,若成立,再执行A,如此反复,直到 P2成立为止,此时不在执行A,从b点结束。 ②直到型(Until)循环 功能:先执行A,然后判断给定的条件P2是 否成立,若成立,再执行A,如此反复,直到 P2成立为止,此时不在执行A,从b点结束。 例:用直到型循环实现5个数 的打印输出 用传统流程图算法实现 A P2 不成立 成立 a b 0 → x x+1 → x 打印 x x ≥ 5 N Y

循环结构 根据条件P决定重复执行循环体中的操作

(2)只有一个出口,选择框上的两个出口不代表结构 (3)结构内的每一部分都有机会被执行到, 每一框内都应有一条从入口到出口的路径通过它。 三种结构的共点: (1)只有一个入口 (2)只有一个出口,选择框上的两个出口不代表结构 (3)结构内的每一部分都有机会被执行到, 每一框内都应有一条从入口到出口的路径通过它。 右图的结构中没有一条入口到出口通过A框。 (4)结构内不能存在死循环 结构化程序设计的优点 用三种基本结构组成的程序是结构化程序 优点:易编、易读、易懂、易维护 强调程序设计风格和程序结构的规范化 核心思想:自顶向上,逐步细化,模块化设计,结构化编码 P1 A A B

实践证明: 由三种结构组成的算法结构可以解决任何复杂问题。 结论: 基本结构所构成的算法,属结构化算法,它不存在无规律的转向,只在基本结构内才允许存在分支和向前或向后跳转。 以上所述的四个基本特点,人们还可自己定义基本结构,并由这些基本结构组成结构化程序,如多分支选择结构等,但它们都是由三种基本结构派生出来的。

用计算机语言表示算法 要完成一项工作: (1)设计算法 (2)实现算法 设计算法的目的:是实现算法 实现算法的一般方式: (1)人工心算 (2)笔算、算盘 (3)计算器

计算机无法识别流程图和伪代码 计算机实现算法的过程: 用计算机语言编写的程序才能被计算机识别、解释、执行(编辑、编译、连接,生成可执行程序) 用计算机语言表示算法必须严格遵循所用语言的语法规则 下面用C语言讨论两个简例:

例 求 5! 前面讨论的算法,用C语言表示 main( ) {int i,t; t=1; i=2; while(i<=5) {t=t*i; i=i+1; } printf(“%d”,t); } 2→i 1 →t t ×i →t i +1 →i 直到 i >5 打印t 用N-S图 表示算法 用伪代码表示 BEGIN(算法开始) 1→t 2→i While i<=5 {t×i →t i+1 →i } print t END(算法结束)

细化

变量定义与初始化 赋值 内循环 选择语句

3.2 C语句概述 C程序:可由若干源程序文件组成,一个源文件可由若干函数和预处理命令及全局变量声明部分组成。 声明部分:指出数据结构,定义数据类型。 函数 执行部分:由语句组成,称数据操作,对提供的数 据进行加工。 语句: 编译指令,向计算机发布相应的操作命令。

C程序组成的示意图 函数 1 预处理命令 函数 n ┄ 全局变量声明 函数首部 函数体 局部变量声明 执行语句 C程序 源程序文件2 源程序文件 1 源程序文件 n

文件:存储在磁盘上的信息集合,可以是一段程序,一组数据。 C源程序文件:存储在磁盘上的函数的集合,包括程序执行中用到的数。 注: (1)所有源程序文件中,只有一个源程序文件中包含一个主函数main( ) , 其余文件中包含的都是被调用函数。 (2)当各源文件独自存放磁盘上时,运行该程序的方法:在主函数前加 #include “文件名.c ”

C语言提供的语句分五大类: (1)控制语句,完成控制功能 ①if( ) ~ else ~ 条件 ②for ( ) ~ 循环 ③while ( ) ~ 循环 ④do ~ while ( ) 循环 ⑤continue 结束本次循环 ⑥break 中止switch 或循环 ⑦switch 多分支选择 ⑧goto 转向 ⑨return 从函数返回

(2)函数调用语句 函数名(参数); 如:printf (“This is a C program.\n”); max(a,b); (3)表达式语句 在表达式后加 “ ;” 构成 a=6 a=5 ; 如 i=i+2 表达式 而 i=i+2 ; 表达式语句 x+y x+y ; (4)空语句 ; 无任何操作,但合法,可用于循环中的转折

(5)复合语句 用{ }将若干语句括起来而构成的语句。 如: if (x>y) 与 if (x>y) 意义不同 z=x; { x++; z=x; y- -; x++; y- -; }