C语言程序设计基础(01)——计算机与程序设计基础

  • 一、计算机组成及基本原理
    • 1、计算机硬件系统
    • 2、计算机软件系统
    • 3、计算机工作原理
  • 二、程序设计基础
    • 1、程序设计风格
    • 2、结构化程序设计(structured programming)
  • 三、C语言程序基本结构和开发过程
    • 1、C语言程序的基本结构
    • 2、C语言程序开发过程
    • 3、程序开发环境

写在前面
  我刚上大学的时候,学的第一门计算机编程语言就是 C语言,当时觉得这仿佛是天书,毕竟脑子里只有中学数学课上那点简单的流程图和VB概念,但是随着多年的练习和开发使用,我渐渐地开始掌握并喜欢上了这门语言,并且也开始学习C++、C#、JAVA等其它编程语言。不得不说,C语言的学习为我打下了良好的编程基础,同样也让我越来越清晰地认识到自己的不足。如今时代呈现指数式发展,尤其在IT等行业, 必须保证自己永远在学习新的知识技能,否则迎接你的就是淘汰。
  大一课堂使用的课本是《C语言程序设计(第2版)》(姚琳 主编,屈微 副主编),虽然课本上也有一些小的瑕疵,但掩盖不了它开蒙启智的光辉。搬砖之余,在这里整理回顾下C语言的基础知识,感谢当年老师细致入微的指导,帮助我们解决了程序上数不尽的bug,为我们打下了良好的编程基础。

一、计算机组成及基本原理

计算机系统构成:

  • 硬件系统

    • 主机

      • 内存储器(内存)
      • 中央处理器(CPU,Central Processing Unit)
        • 运算器
        • 控制器
    • 外部设备(外设)
      • 输入输出设备
      • 外存储器(外存)
  • 软件系统
    • 应用软件
    • 系统软件
      • 操作系统
      • 语言处理程序
      • 服务程序

完整的计算机系统包含两个部分:硬件系统、软件系统。二者相辅相成,仿佛躯体和灵魂不可分割。

1、计算机硬件系统

(1)概念
  组成计算机的各种电磁、机械部件和设备装置的总称,硬件(Hard ware) 系统是计算机实现自动控制和运算的物质基础。
  
(2)冯·诺依曼结构
  组成:运算器、存储器、控制器、输入设备、输出设备
  特点:程序和数据以二进制形式存在存储器中,在控制器的指挥下,自动从存储器中取指令并执行。1

  • 运算器
      对数据进行处理和运算。基本操作:算术运算、逻辑运算
      包括算术逻辑单元ALU,Arithmetic Logic Unit)和寄存器
  • 存储器
      用来存储程序和数据。由许多存储单元组成,每个单元有自己的地址,可根据地址找到所需数据和程序。
      分为两类:
      ①内存储器(主存储器):存储当前要执行的程序和数据以及中间结果和最终结果。
      ②外存储器(辅助存储器):长期存储大量暂时不参与运算的数据和程序以及运算结果。
  • 控制器
      指挥计算机各部件协调工作。控制:将输入设备输入的程序和数据存入存储器,按照程序要求指挥运算器进行运算处理并把结果再存入存储器中,最后将结果传给输出设备。
      主要组成部分:
      ①程序计数器(PC,Program Counter):存放当前要执行的指令地址,有自动加1的功能。
      ②指令寄存器(IR,Instruction Register):存放当前要执行的指令代码。
      ③指令译码器(ID,Instruction Decoder):识别IR中指令的性质和操作。
      ④操作控制器(Operation Controller):根据ID的译码,产生实现该指令全部动作的控制信号。
  • 输入设备
      将用户的程序、数据和命令输入到计算机内存的设备。标准输入设备是键盘。其它常用输入设备:鼠标、扫描仪、语音输入设备、手写识别输入设备等。
  • 输出设备
      显示、打印或保存计算机运算和处理结果。标准输出设备是显示器。其它常用输出设备:打印机、绘图仪、数据投影设备(投影仪)等。

2、计算机软件系统

(1)概念
  软件(Software) 是计算机系统中各类程序、有关文档以及所需要的数据的总称。
  程序:为了解决某一问题而设计的一系列指令或语句的集合。只是软件的一部分。
  源程序(Source Program):用户为解决自己的问题编制的程序。
  计算机指令:用来控制计算机、告诉计算机进行怎样操作的命令。
  
(2)两大分类

  • 系统软件
      用来管理、维护计算机及协调计算机内部更有效工作。
     ①操作系统(核心软件)
      对计算机系统进行控制和管理的大型软件。
      操作系统的基本任务:
        1)管理好计算机的全部资源(包括CPU、存储器、程序、数据、各种外设);
        2)担任用户与计算机之间的接口。
      操作系统的主要功能:
        CPU管理、存储管理、文件管理、设备管理、作业管理。
     ②语言处理程序
     ③服务性程序

  • 应用软件
      为某个具体应用开发的软件。如文字处理软件、杀毒软件、财务软件、图形软件、工具软件、游戏程序等。

(3)计算机语言的发展
  人类的语言一般称为自然语言。人为了让计算机完成某种任务而需要的语言就是计算机语言。机器语言是计算机语言发展的原点,高级程序设计语言是计算机语言发展的重要阶段。C语言是高级程序设计语言中的经典,是深入掌握其他程序设计语言的基础。

  • 机器语言
      指令通常包含两个部分
        ①操作码(Operation Code):表示计算机执行什么操作
        ②操作数(Operand):表示参加操作的数的本身或所在地址
      计算机发展的初期,用指令的机器码(Machine Code)也就是用0和1组成的二进制代码形式来编写源程序。
      是计算机能唯一识别和可直接执行的语言,被称为“面向机器的语言”。它占用内存少,执行速度快效率高,无须“翻译”。但编写麻烦,无通用性。
  • 汇编语言
      通常用由指令功能英文单词缩写形成的 助记符(Mnemonic) 代替操作码,用 符号(Symbol) 表示操作数。
      对于机器,必须用汇编程序将汇编语言源程序(.ASM)翻译成机器语言程序即目标程序(.OBJ),然后用连接程序将目标程序连接成可执行程序(.EXE)。
      汇编语言同样具有很差的通用性,也属于“面向机器的语言”。
  • 高级语言(算法语言)
      特点是和人类的自然语言(英语)及数学语言比较接近,与硬件无关,无须熟悉计算机的指令系统。
      分类:
        面向过程 的高级语言:BASIC、FORTRAN、Pascal、C等。
        面向对象 的高级语言:C++、JAVA等。
      高级语言的翻译方式:
        编译方式: 先通过编译程序将高级语言源程序(.C和.PAS等)编译成目标程序(.OBJ),翻译过程中进行语法检查,如果有错将给出错误信息,无错才形成二进制的目标程序;然后通过连接程序进行连接和定位,生成可执行程序文件(.EXE)。类似于笔译。
        解释方式: 通过解释程序,对源程序(.BAS)解释一条语句便执行一条语句,若发现错误便给出错误信息并停止解释和执行,无错便解释执行到最后。不生成目标文件和可执行文件,重复运行程序需重新翻译。效率低,执行速度慢,但便于人机对话。类似于口译。

3、计算机工作原理

冯·诺依曼结构计算机的工作原理最重要之处是“存储原理”,要先把编好的程序输入存储器中存储起来,然后依次取出指令执行。
  每条指令的执行过程分为3个基本操作:
  ①取出指令:从存储器某个地址中取要执行的指令;
  ②分析指令:送指令译码器进行译码;
  ③执行指令:向各个部件发送控制操作,完成指令要求。

二、程序设计基础

1、程序设计风格

风格会影响软件的质量和可维护性。好的程序设计风格可以使程序结构清晰合理,使代码便于维护。考虑因素如下。
  
(1)源程序文档化
  标志符命名: 见名知义。
  程序注释信息:
    序言性注释:位于程序开头,包括标题、程序主要功能、主要算法、作者等。
    功能性注释:位于程序中间,描述变量含义、语句作用等。
  视觉组织: 程序清晰,便于阅读,使用空格、空行、缩进技巧。
  
(2)数据说明方法
  数据说明应注意次序规范化。例如多个变量按照字母顺序排列,使用注释来说明复杂数据的结构等。
  
(3)语句构造
  当不考虑效率时,程序编写应清晰第一,效率第二。
  
(4)输入输出
  输入输出方式和格式应尽可能方便用户使用。

2、结构化程序设计(structured programming)

模块化设计为中心,基本原则是:采用自顶向下、逐步细化的方法进行设计,采用模块化原则和方法进行设计,限制使用goto语句。主要特点是:程序易于理解、使用和维护,提高了编程工作效率,降低了软件开发成本。

程序化设计的基本结构:
(1)顺序结构
  最基本做常用的结构,按照书写顺序依次执行语句。
(2)选择结构(分支结构)
  按照给定条件判断选择执行相应的语句序列,可改变程序的执行流程。
(3)循环结构(重复结构)
  通过循环控制条件来决定是否重复执行相同的语句序列。包括当型循环和直到型循环。
  由三部分构成
  ①初始化部分:为循环作准备,如为循环变量赋初值,往往位于循环语句前面。
  ②循环控制部分:循环控制的条件。
  ③循环体部分:循环工作的重复部分。

三、C语言程序基本结构和开发过程

1、C语言程序的基本结构

C语言程序的几点说明:
(1)以函数作为模块单位,有且仅有一个main()函数即主函数,总是从main函数开始执行,在main函数中结束。
(2)C函数模块分为两大部分
  ①函数说明部分(函数首部):包括函数类型、函数名、函数参数。
  ②函数体部分:用左“{”表示开始,用右“}”表示结束。
(3)语句分为说明性语句可执行语句。每条语句必须以分号“;”结束,但书写格式自由,一行可以写多条语句,一条语句也可以占多行。
(4)编译预处理命令不是C语言语句,不能用分号结束,并且需要单独一行
(5)任何位置都可以用/**/进行注释,可以用英文或者中文进行注释,但建议使用英文注释,因为不同的开发环境使用的编码格式不同时,中文易导致乱码。

#include <stdio.h>          /*编译预处理命令*//***** 主函数 *****/
void main(void)             /*函数首部*/
{                           /*函数体开始*/int r;                  /*说明性语句*/float area;r = 2;                  /*可执行语句*/area = 3.14*r*r;printf("%f\n", area);
}                           /*函数体结束*/

2、C语言程序开发过程

即:编辑、编译、连接、运行、调试
  
(1)源程序的编辑
  使用文本编辑器(Editor)编写扩展名为.C的C语言源程序,实质是文本文件,可用任何文本编辑器来建立。
  
(2)源程序的编译
  使用编译系统(编译器)对源程序文件进行编译。若没有语法错误,则生成目标程序文件(.OBJ),有错会给出错误信息提示。两类错误:
  ①语法错误(Error):必须修改源文件的错误代码,否则无法生成目标程序文件。
  ②警告错误(Warning):系统按照缺省处理方式生成目标程序文件,但不一定符合作者预期。
  
(3)目标程序文件的连接
  利用连接器将一个或多个目标程序文件与库文件连接,生成可执行文件(.EXE),若找不到所需连接信息,会给出错误提示,不生成.EXE文件。
  
(4)可执行文件的运行
  可执行文件可以直接运行。在集成开发环境(IDE,Integrated Development Environment)下,可以方便地进行代码的运行和调试。也可不使用IDE,在Windows系统中,可直接在命令提示符中键入文件名来运行可执行文件。

(5)可执行文件的调试
  若.EXE文件运行异常,得不到正确结果,则要返回源程序进行修改。

3、程序开发环境

集成开发环境IDE
  初学的比较经典的C语言集成开发环境有Microsoft Visual C++(简称VC++)和Microsoft Visual Studio(简称VS),前者是后者这个完整开发工具集中的针对C类语言的开发环境。在学校用的是 VC++ 6.0 和 VS 2012 这两个版本。个人目前做嵌入式开发比较多,嵌入式C语言工程多结合具体的硬件设备开发,不同的产品可能有不同的IDE,比如经典的 ICCAVR、IAR、Keil、CodeWarrior 等。

关于编辑器
  最近常用两款编辑器,一个是很火的Visual Studio Code,微软推出的跨平台、多语言文件格式、轻量级代码编辑器。一个是由Scitools发行的Understand,具有很强大的代码编辑跟踪和静态分析能力,而且界面非常方便友好,堪称神器。另外一些简单代码也会拿Windows记事本或者Notepad++直接撸,不得不说程序猿的工具还是相当多而且很人性的!

THE END


  1. 控制流可由控制器指向其余四个部分,但是运算器的数据只能跟存储器交换,控制器从存储器中取数据,也就是控制器与运算器之间没有直接的数据流,但有控制流。 ↩︎

C语言程序设计基础(01)—— 计算机与程序设计基础相关推荐

  1. 01 计算机、程序和Java概述

    计算机.程序和Java概述 计算机的组成 硬件 总线(Bus)和主板 中央处理器 CPU 内存 RAM 存储设备 磁盘驱动器 光盘驱动器 USB闪存驱动器 输入和输出设备 通信设备 基于电话线 基于有 ...

  2. 计算机三维机械设计基础答案,计算机三维机械设计基础 2013年版

    计算机三维机械设计基础 作 者:张瑞亮,孙桓五,武志斐 等编 出版时间:2013 丛编项:普通高等院校机械工程学科"十二五"规划教材 内容简介 <普通高等院校机械工程学科&q ...

  3. c语言程序运算绪论,计算机C语言程序设计ch01_绪论上.ppt

    高级语言程序设计 主讲 兰书梅邮箱 lansm 助课 张晶邮箱 zhangjing99 教学安排 主讲 作业 实验 考试 主讲 64学时全书内容习题课2到3次作业 课后及习题集必作选作实验 8次实验3 ...

  4. 编程语言基础c语言第5版讲解,《程序设计基础》C语言基础知识讲解.ppt

    <<程序设计基础>C语言基础知识讲解.ppt>由会员分享,可在线阅读,更多相关<<程序设计基础>C语言基础知识讲解.ppt(54页珍藏版)>请在人人文库 ...

  5. 二级c语言上机程序填空,浙江省计算机二级c语言上机考试真题(二)程序填空

    浙江省计算机二级c语言上机考试真题 (二)程序填空 1,求最大公约数 ,下面程序中"____ N ____"是根据程序功能需要填充部分,请完成程序填充(注意:不得加行.减行.加句. ...

  6. 用c语言编写程序出现undecla,济南大学C程序设计基础实验指导书

    <济南大学C程序设计基础实验指导书>由会员分享,可在线阅读,更多相关<济南大学C程序设计基础实验指导书(48页珍藏版)>请在人人文库网上搜索. 1.程序设计基础实验指导书信息科 ...

  7. 浙江省计算机c语言考试,浙江省计算机二级c语言上机考试真题(三)程序编写

    浙江省计算机二级c语言上机考试真题 (三)程序编写 1,求3元方程解 设计程序:统计满足条件x*x+y*y+z*z==2000的所有解的个数,并将统计结果以格式"%d"输出. 说明 ...

  8. c语言考试 程序填空题,计算机二级C语言程序填空题练习题

    计算机二级C语言程序填空题练习题 导语:为帮助同学们更好更有准备地复习计算机二级C语言,小编整理了计算机二级C语言程序填空题练习题,一起来测试一下吧: 程序填空题 下列给定程序中,函数fun的功能是: ...

  9. 国二c语言程序,国家二级计算机考试题库c语言

    在国家计算机二级考试中,我们会遇到哪些知识点题目呢?下面是学习啦小编给大家整理的国家二级计算机考试题库c语言选择题及答案,供大家参阅! 二级计算机考试题库c语言选择题 1.下列叙述中正确的是( ). ...

  10. 简易计算机课程设计总结,C语言课程设计报告简单计算器程序

    C语言课程设计报告简单计算器程序 (26页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 24.9 积分 .课程设计名称:C语言课程设计课程设计题目:简单 ...

最新文章

  1. 关于std::string 在 并发场景下 __grow_by_and_replace free was not allocated 的异常问题
  2. 开源在线机器学习Online Learning/Incremental Learning库-creme介绍
  3. 【web安全】Web应用隔离防护之Web弱口令爆破
  4. javafx + jfoenix相关学习资料地址整理
  5. ASP.NET 2.0 Club Web Site Starter Kit 补丁
  6. sql如何取某年某月的第一天和最后一天
  7. 读懂Android中的代码混淆
  8. 【网络流24题----01】飞行员配对方案问题
  9. Java记录 -89- java.lang.Class
  10. 网站测试自动化系统—在测试代码中硬编码测试数据
  11. 40. 数组中只出现一次的数字(C++版本)
  12. 【螺钉和螺母问题】【算法分析与设计】假设我们有n个直径各不相同的螺钉以及n个相应的螺母...
  13. python机械臂写字_SCARA机器人 机械手臂 写字机 DIY 视觉识别
  14. 计算机丢失OX0000007B,win10系统应用程序无法正常启动0x000007b的解决办法
  15. 【WSN通信】基于matlab A_Star改进LEACH多跳传输协议【含Matlab源码 487期】
  16. Python 实现发送QQ邮件(可加附件)
  17. U盘装系统进不去pe界面
  18. 做一个思考者系列之--编程这件事(手稿版)
  19. EXCEL批量加入图片
  20. iOS平台手机银行App大多存安全风险漏洞

热门文章

  1. 最新单片机毕业设计题目大全
  2. C语言哈希表uthash的使用方法详解(附下载链接)
  3. videos player.php_基于vue-video-player自定义播放器的方法
  4. Windows下使用C++(Win32SDK)编程无需提权读取硬盘序列号
  5. C语言程序与程序设计语言
  6. 软考信息系统项目管理师知识点总结2
  7. 稳定版本php源包下载,PHPWind历史版本及升级包下载(v1.0.0 - v9.0.2、Ofstar to PW)20170501更新...
  8. 跟周鸿祎学互联网思维 ——《周鸿祎自述|我的互联网方法论》读后感
  9. 实用小技术:Excel+网易邮箱处理VCF与CSV文件批量添加联系人
  10. 2019长江课堂作业答案_2019版长江课堂作业答案语文四年级