第一章 初识程序

  导读:计算机程序无时不刻的影响着人类的生活,现代社会已经离不开程序,程序的作用如此巨大,那么程序到底是什么呢?本章主要讨论程序的概念,唤起读者对程序的兴趣,同时对C语言程序与其它语言程序进行比较,说明作为一个C语言程序员需要具备的基本理论知识,本章末端简单的描述windows中一个计算器程序是如何工作的。

1.1 什么是计算机程序

  从字面上理解,程序就是完成一件事所需要进行的步骤,举个生活的例子,买酱油!需要哪些步骤:

第一种做法:首先要准备好100块钱,然后出门要穿好衣服鞋袜,出门到便利店,拿到酱油付完钱,店家找钱,返回家中。

第二种做法:打开手机,打开外卖的APP,选择酱油,外卖小哥到来后,开门,取酱油。

  完成买酱油需要步骤,生活上的点点滴滴都有它的步骤,步骤不局限于一种方法,正所谓条条大路通罗马,步骤也是各式各样。如果把生活上步骤关联到计算机程序上也是一样的,其实写计算机程序就是写步骤。

  计算机程序一般也称作计算机代码,专业的说,计算机程序是一组计算机能识别和执行的指令,运行在电子计算机上,满足人们某种需求的信息化工具。当然程序不仅仅运行在计算机上,还可以运行在手机,路由器,导航仪,往大点说,程序运行在航空母舰上,说不定运行在遥远外太空外星人正准备入侵地球的太空飞船上。

图1.1  ET外星人

  那为什么要程序呢?因为有些事情靠人动手处理效率实在太低,试想想,如果要计算一个复杂的方程式,靠笔算或者算盘来计算那效率实在低下(注意:不过这里要像我国两弹一星的元勋们致敬,当时他们在计算工具落后的情况下,用算盘计算原子数据)。所以人类发明了计算机,而计算机工作需要运行程序来完成各种任务。

注意:程序只是工具,所以程序能做到的事情,人类一定能做到,但随着人工智能的发展,程序已经可以做人类意想不到的事情了,这块读者可以自行去了解。

2.1 为什么选择C语言

  计算机语言有很多种,比如汇编程序,C语言程序,C++程序,JAVA程序,PYTHON程序等等。为什么偏偏选择C语言呢?

原因列举几点如下:

  1. C语言入门比较容易,相比较别的语言C语言入门比较容易,不像汇编那样完成一个功能需要写大量代码,有时候1行C语言代码完成任务用汇编说不定需要10行。也不像JAVA那样,类的思想,继承的思想等等搞晕初学者。

  2. 很多高级语言都有C语言的影子,变量声明这些,循环语句这些等等,所以C语言可以做学习别的语言的跳板。

  3. C语言广泛的应用在嵌入式领域,说明市场需求也大。

  4. 它的执行效率很高,可以直接操作内存,后续学习指针会更加理解这块。

  5. 读者自行了解。。。。。。

3.1 需要具备的基础

  本节讨论一个C语言程序员需要具备哪些基础知识。

3.1.1 简单的英语单词理解

  国内的程序员不一定是英语高手,因为只是用键盘敲打代码,不需要考验听力,不需要考验口语,甚至可以直接借助翻译软件。C语言中常用的词汇,如:

main(主要的;重要的),include(包括;包含),define(定义;阐明),后续还有一些C库函数单词,如:printf(输出函数;格式化输出;输出格式化字串),还可以把库函数拆分理解,如:fopen(可以理解为file open的组合,即文件打开的意思),strcmp(可以理解为string compare,词组的意思就是字符串对比)。

  编写程序中需要给变量取名,还有给函数取名,为了编写的程序能够让别人更好的理解,以及规范和统一,所以希望读者尽量使用标准的英文单词,如果不懂怎么写可以借助翻译软件。

注意:“变量”和“函数”是程序中的一部分,读者目前如果不能理解它的意思,就先搁着。

3.1.2 计算机基本组成

  计算机俗称电脑,它的核心组件有CPU,内存,存储,网卡,显示器,键盘,鼠标等等。文章是与C语言入门有关,所以只需要知道一切运算都在CPU中进行,C语言程序由指令、变量和常量等等组成,指令运行在CPU上,指令从内存中取变量。至于内存和存储的区别以及更详细内容,后续章节指针中会再次提到。

图1.2  计算机构成简图

  这里简单的描述一个windows计算器程序运行的过程。

  计算器的可执行程序是存放在硬盘上的。笔者电脑使用的win10系统,计算器程序属于系统自带的程序,所以存放在系统盘,系统盘是C盘,所以计算器的可执行程序存放在C:\Windows\System32\calc.exe。

知道了calc.exe的存放位置后,先打开任务管理器,看看正在运行的程序有哪些,这时候还没有点击calc.exe,所以看不到,如图1.3所示,

图1.3   还未打开计算器的任务管理器列表

  点击运行calc.exe,可以发现任务管理器多了一个运行的程序叫做计算器,如图1.4所示,

图1.4  打开计算器后任务管理器列表

  点击运行calc.exe后(也就是运行计算器程序),计算器程序会在操作系统程序下,由CPU做主要工作,把计算器程序从硬盘放到到内存上,这时候显示器根据显存内容会显示计算器界面,可以通过鼠标点击也可以通过键盘进行加减乘除等等运算,所有的这些运算都会通过内存和CPU的交互来完成,最终把计算的数值显示出来。

4.1自学C语言的途径

  1. 可以通过本系列博客,博主会在评论区回答问题,虽然博主不是靠自学的,但是自己希望能够帮助到新手。

  2. 最好是通过专业书籍,一般大学课程都是使用谭浩强的C语言教材,经典中的战斗机!

  3. 以下链接供参考:

  https://zh.cppreference.com/w/c

  http://tieba.baidu.com/f?kw=c%D3%EF%D1%D4&fr=ala0&tpl=5

  但是看再多资料都不如不停的代码练习来的效果佳!请期待下一章节的发布。。。。。。

C语言编程入门之--第一章初识程序的更多相关文章

  1. C语言编程入门之--第二章编译环境搭建

    第二章 编译环境搭建 导读:C语言程序如何工作,首先需要编译链接成可执行文件,然后就可以运行在不同的环境中,这个“环境”的意思就是比如说,电脑,手机,路由器,蓝牙音箱等等智能设备中,其中编译器启到了关 ...

  2. Java 面向对象编程——第一章 初识Java

      第一章    初识Java 1.  什么是Java? Java是一种简单的.面向对象的.分布式的.解释的.安全的.可移植的.性能优异的多线程语言.它以其强安全性.平台无关性.硬件结构无关性.语言简 ...

  3. Storm入门之第一章

    Storm入门之第一章 1.名词 spout龙卷,读取原始数据为bolt提供数据 bolt雷电,从spout或者其他的bolt接收数据,并处理数据,处理结果可作为其他bolt的数据源或最终结果 nim ...

  4. 《进击吧!Blazor!》系列入门教程 第一章 8.部署

    <进击吧!Blazor!>是本人与张善友老师合作的Blazor零基础入门教程视频,此教程能让一个从未接触过Blazor的程序员掌握开发Blazor应用的能力. 视频地址:https://s ...

  5. 第一章 初识shiro

    shiro学习教程来自开涛大神的博客:http://jinnianshilongnian.iteye.com/blog/2018936 第一章 初识shiro 简单了解shiro主要记住三张图即可. ...

  6. Cocos2d-x 3.0 红孩儿私家必修 - 第一章 初识Cocos2d-x 3.0project

    第一章    初识Cocos2d-x 3.0project Cocos2d-x 3.0出来了,听说与之前版本号相比修改较大 做为一个游戏开发人员.我们应该欢迎Cocos2d-x持续的更新和强大,Coc ...

  7. windows核心编程-第一章 对程序错误的处理

    第一章-对程序错误的处理 在开始介绍Microsoft Windows 的特性之前,必须首先了解 Wi n d o w s的各个函数是如何进行错误处理的. 当调用一个Wi n d o w s函数时,它 ...

  8. VS2010/MFC编程入门之三(VS2010应用程序工程中文件的组成结构)

    VS2010/MFC编程入门之三(VS2010应用程序工程中文件的组成结构)-软件开发-鸡啄米 http://www.jizhuomi.com/software/143.html   鸡啄米在上一讲中 ...

  9. VS2010/MFC编程入门之四(MFC应用程序框架分析)

    VS2010/MFC编程入门之四(MFC应用程序框架分析)-软件开发-鸡啄米 http://www.jizhuomi.com/software/145.html   上一讲鸡啄米讲的是VS2010应用 ...

随机推荐

  1. 使用QPainter的drawPixmap()绘制多幅图片 good

    众所周知,使用QLabel的setPixmap()就可以将图片显示出来,做视屏解码后显示也可以如此.但是为何我今天还要费力使用基函数drawPixmap()来做绘图?理由有这么些吧: 1.使用QLab ...

  2. Window Features(包括Z-Order,Layered Windows, Message-Only Windows, Owned Windows, Window的状态等)

    https://msdn.microsoft.com/en-us/library/windows/desktop/ms632599(v=vs.85).aspx#owned_windows https: ...

  3. HTML连载9-video标签的第二种格式&audio标签

    一.video第二种格式 1.背景:由于视频数据非常重要,所以五大浏览器厂商都不愿意支持别人的视频格式,所以导致了没有一种视频格式是所有浏览器都支持的.这个时候W3C为了解决这个问题,所以推出了第二种 ...

  4. 使用Python终结“你是什么垃圾”的灵魂拷问!

    目录 0 引言 1 环境 2 需求分析 3 代码实现 4 后记 0 引言 纸巾再湿也是干垃圾?瓜子皮再干也是湿垃圾??最近大家都被垃圾分类折磨的不行,傻傻的你是否拎得清?

  5. [代码修订版] Python 踩坑之旅进程篇其五打不开的文件

    目录 1.1 踩坑案例 1.2 填坑和分析 1.2.1 从程序优化入手 1.2.2 从资源软硬限入手 1.4.1 技术关键字 下期坑位预告 代码示例支持 平台: Centos 6.3 Python: ...

  6. spring boot 2.x 系列 —— actuator 服务监控与管理

    文章目录 一.概念综述 1.1 端点 1.2 启用端点 1.3 暴露端点 1.4 健康检查信息 二.项目说明 1.1 项目结构说明 1.2 主要依赖 1.3 项目配置 1.4 查看监控状态 三.自定义 ...

  7. 并发容器之阻塞队列DelayQueue的使用案例及源码分析

    原文连接:(http://www.studyshare.cn/blog-front//blog/details/1167/0 ) 一.队列及阻塞队列概念 1.队列:是一种特殊线性表,特殊之处在于操作是 ...

  8. shell遍历文件

    取文件每行的数据,需要按列取  可以 sed 加管道 使用 awk 取列 platform="list.txt" line=`grep -vc '^$' $platform` ; ...

  9. 学习kafka自己发生的几个小错误记录

    一.  The method iterator() is ambiguous ConsumerIterator<byte[],byte[]> it =stream.iterator(); ...

  10. 真实项目中 ThreadLocal 的妙用

    一.什么是 ThreadLocal ThreadLocal 提供了线程的局部变量,每个线程都可以通过 set() 和 get() 来对这个局部变量进行操作,但不会和其他线程的局部变量冲突,实现了线程间 ...