第1章 程序设计和C语言

简介: 第1章 程序设计和C语言


1.1什么是计算机程序

程序,就是一组计算机能识别和执行的指令。每一条指令使计算机执行特定的操作。只要让计算机执行这个程序,计算机就会“自动地”执行各条指令,有条不紊地进行工作。

1.2什么是计算机语言

计算机语言——计算机和人都能识别的语言

计算机语言的发展阶段:

机器语言 计算机工作基于二进制,从根本上说,计算机智能识别和接受由0和1组成的指令。在计算机发展的初期,一般计算机的指令长度为156,即以16个二进制数(0或1)组成一条指令,16个0和1可以组成各种排列组合。

这种计算机能直接识别和接受的二进制代码称为机器指令(machine instruction)。机器指令的集合就是该计算机的机器语言(machine language)。

         显然,机器语言与人们习惯用的语言差别太大,难学、难记、难检查、难修改、难以推广使用、难写。因此初期只有极少数的计算机专业人员会编写计算机程序。


 符号语言 为了克服机器语言的上述缺点,人们创造出符号语言(symbolic language),它用一些英文字母和数字表示一个指令,例如用ADD表示“加”,SUB代表“减”,LD代表“传送”等。

显然,计算机并不能直接识别和执行符号语言的指令,需要用一种称为汇编程序的软件,把符号语言的指令转换为机器指令。一般,一条符号语言的指令对应转换为一条机器指令。转换的过程称为:“代真”或“汇编”,因此,符号语言又称为符号汇编语言(symbolic assembler language)或汇编语言(assembler language)。

         虽然汇编语言比机器语言简单好记一些,但仍然难以普及,只在专业人员中使用。

不同型号的计算机的机器语言和汇编语言是互不相通的。如,用甲机器的机器语言编写的程序在乙机器上不能使用。机器语言和汇编语言是完全依赖于具体机器特性的,是面向机器的语言。由于它“贴近”计算机,或者说离计算机“很近”,称为计算机低级语言(low level language).

 高级语言 为了克服低级语言的缺点。创造出了高级语言。第一个高级语言为Fortran语言。

这种语言功能很强,且不依赖于具体机器,用它写出的程序对任何型号的计算机都是用(或只须作很少的修改),它与具体机器距离较远,故称为计算机高级语言(high level language)。

当然,计算机也是不能够直接识别高级语言程序的,也要进行“翻译”。用一种称为编译程序的软件把用高级语言写的程序(称为源程序,source program)转换为机器指令的程序(称为目标程序,object program),然后当计算机执行机器指令程序,最后得到记过。高级语言的一个语句往往对应多条机器指令。


         高级语言也经历了不同的发展阶段:

(1)     非结构化语言。早期的BASIC、FORTRAN、ALGOL等都术语非结构化语言。

(2)     结构化语言。QBASIC、FORTRAN77和C语言等。

(3)     面向对象语言。C++、C#、visual、Basic、和java等




关于怎么快速学C/C++,可以加下小编的C/C++学习企鹅群:【870+963+251】不管你是小白还是大牛,小编我都欢迎,不定期分享干货,欢迎初学和进阶中的小伙伴。每天晚上20:00都会开直播给大家分享C/C++游戏编程学习知识和路线方法,群里会不定期更新最新的教程和学习方法,最后祝所有程序员都能够走上人生峰,让代码将梦想照进现实



1.3 C语言的发展及其特点

C语言主要由以下一些主要特点;

1).语言简洁、紧凑,使用方便、灵活。

2).运算符丰富

3).数据类型丰富

4).具有结构化的控制语句

5).语法限制不太严格,程序设计自由度大

6).C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作

7).用C语言编写的程序可移植性好

8).生成目标代码质量高,程序执行效率高

1.4 最简单的C语言程序



1.4.1 最简单的C语言程序举例

例,要求在屏幕上输入以下一行信息

Hello world

编写程序

 Hello.c



/*程序分析

#include <stdio.h>  

#include 编译预处理指令,把括号<>中的信息调入供使用

stdio.h 是系统提供的一个文件名

stdio是”standard Input & output“的缩写

文件后缀.h的意思是头文件(header file),因为这些文件都是放在程序个文件模块的开头

*/


说明:C语言允许两种注释方式:

1).以//开始的单行注释。可以嵌套使用 //xxxx//yyy

2).以/*开始,以*/结束的块式注释。不可以嵌套使用/*xxxxx/*yyyy*/zzzzz*/这是错误的,最后的*/会没有匹配的/*。

 

1.4.2 C语言程序的结构

(1) 一个程序有一个或多个源程序文件组成。

在一个源程序文件中可以包括以下3部分:

①预处理文件

②全局声明

③函数定义

(2) 函数是C语言的主要组成部分。

函数是C语言的基本单位。编写C语言的工作主要就是编写一个个函数,C语言的这种特点容易实现程序的模块化。

(3) 一个函数包括两个部分

①函数首部

   int    max       (int          x ,        int             y)

函数类型 函数名  函数参数类型 函数参数名 函数参数类型 函数参数名

②函数体

函数体一般包括以下两部分

·声明部分

·执行部分

(4) 程序总是从main开始执行的

(5) 程序中对计算机的操作都是由函数中的C语言完成的。

(6) 在每个数据声明和语句的最后必须有一个分号

(7) C语言本身不提供输入输出语句

(8) 程序应当包含注释




1.5 运行C程序的步骤与方法

在编号一个C源程序后,怎样上机进行编译和运行呢?一般要经过以下几个步骤:

(1)    上机输入和编译源程序

(2)    对源程序进行编译,先用C编译系统提供的“预处理器”(又称“预处理程序”或“预编译器”)对程序中的预处理指令进行编译预处理。

编译的作用:首先是对源程序进行检查,判定它有无语法方面的错误;若有,则发出“出错信息error”。反复进行,直到没有无法错误为止。

At(Attention):语法错误能够被检查出来,不可以检查出逻辑错误。

在用编译系统对源程序进行编译时,自动包括了预编译和正式编译两个阶段。用户不必分别发出二次指令。

(3)    进行连接处理

必须把所有的编译后得到的目标模块连接装配起来,再与函数库相连接成一个整体,生成一个可供计算机执行的目标程序,称为可执行程序(executive program)。

在Visual C++中其后缀为.exe,如f.exe

(4)    运行可执行程序,得到运行结果。



1.6程序设计的任务

从确定问题到最后完成任务,一般经历以下几个工作阶段:

(1) 问题分析

(2) 设计算法

(3) 编写程序

(4) 对源程序进行编辑、编译和连接,得到可执行程序

(5) 运行程序,分析结果

(6) 编写程序文档

相关文章
|
2月前
|
C语言
C语言程序设计核心详解 第四章&&第五章 选择结构程序设计&&循环结构程序设计
本章节介绍了C语言中的选择结构,包括关系表达式、逻辑表达式及其运算符的优先级,并通过示例详细解释了 `if` 语句的不同形式和 `switch` 语句的使用方法。此外,还概述了循环结构,包括 `while`、`do-while` 和 `for` 循环,并解释了 `break` 和 `continue` 控制语句的功能。最后,提供了两道例题以加深理解。
|
2月前
|
存储 C语言
C语言程序设计核心详解 第十章:位运算和c语言文件操作详解_文件操作函数
本文详细介绍了C语言中的位运算和文件操作。位运算包括按位与、或、异或、取反、左移和右移等六种运算符及其复合赋值运算符,每种运算符的功能和应用场景都有具体说明。文件操作部分则涵盖了文件的概念、分类、文件类型指针、文件的打开与关闭、读写操作及当前读写位置的调整等内容,提供了丰富的示例帮助理解。通过对本文的学习,读者可以全面掌握C语言中的位运算和文件处理技术。
|
2月前
|
存储 C语言
C语言程序设计核心详解 第七章 函数和预编译命令
本章介绍C语言中的函数定义与使用,以及预编译命令。主要内容包括函数的定义格式、调用方式和示例分析。C程序结构分为`main()`单框架或多子函数框架。函数不能嵌套定义但可互相调用。变量具有类型、作用范围和存储类别三种属性,其中作用范围分为局部和全局。预编译命令包括文件包含和宏定义,宏定义分为无参和带参两种形式。此外,还介绍了变量的存储类别及其特点。通过实例详细解析了函数调用过程及宏定义的应用。
|
2月前
|
C语言
C语言程序设计核心详解 第三章:顺序结构,printf(),scanf()详解
本章介绍顺序结构的基本框架及C语言的标准输入输出。程序从`main()`开始依次执行,框架包括输入、计算和输出三部分。重点讲解了`printf()`与`scanf()`函数:`printf()`用于格式化输出,支持多种占位符;`scanf()`用于格式化输入,需注意普通字符与占位符的区别。此外还介绍了`putchar()`和`getchar()`函数,分别用于输出和接收单个字符。
|
2月前
|
存储 算法 C语言
C语言程序设计核心详解 第一章:数制及转换与ASCII码
本专栏旨在夯实C语言基础,涵盖基础知识与进阶内容,助力解决自命题考试和考研问题,为数据结构与算法设计奠定坚实基础。内容包括数制及其转换、ASCII码、内存管理、机器码等,重点讲解二进制、八进制、十六进制的概念与转换方法,并介绍C语言的结构、数据类型和标识符规范。
|
2月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
|
2月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第六章 数组_一维数组_二维数组_字符数组详解
本章介绍了C语言中的数组概念及应用。数组是一种存储同一类型数据的线性结构,通过下标访问元素。一维数组定义需指定长度,如`int a[10]`,并遵循命名规则。数组元素初始化可使用 `{}`,多余初值补0,少则随机。二维数组扩展了维度,定义形式为`int a[3][4]`,按行优先顺序存储。字符数组用于存储字符串,初始化时需添加结束符`\0`。此外,介绍了字符串处理函数,如`strcat()`、`strcpy()`、`strcmp()` 和 `strlen()`,用于拼接、复制、比较和计算字符串长度。
|
2月前
|
存储 C语言
C语言程序设计核心详解 第九章 结构体与链表概要详解
本文档详细介绍了C语言中的结构体与链表。首先,讲解了结构体的定义、初始化及使用方法,并演示了如何通过不同方式定义结构体变量。接着,介绍了指向结构体的指针及其应用,包括结构体变量和结构体数组的指针操作。随后,概述了链表的概念与定义,解释了链表的基本操作如动态分配、插入和删除。最后,简述了共用体类型及其变量定义与引用方法。通过本文档,读者可以全面了解结构体与链表的基础知识及实际应用技巧。
|
2月前
|
C语言
C语言程序设计核心详解 第二章:数据与数据类型 4种常量详解 常见表达式详解
本文详细介绍了C语言中的数据与数据类型,包括常量、变量、表达式和函数等内容。常量分为整型、实型、字符型和字符串常量,其中整型常量有十进制、八进制和十六进制三种形式;实型常量包括小数和指数形式;字符型常量涵盖常规字符、转义字符及八进制、十六进制形式;字符串常量由双引号括起。变量遵循先定义后使用的规则,并需遵守命名规范。函数分为标准函数和自定义函数,如`sqrt()`和`abs()`。表达式涉及算术、赋值、自增自减和逗号运算符等,需注意运算符的优先级和结合性。文章还介绍了强制类型转换及隐式转换的概念。
|
5月前
|
机器学习/深度学习 移动开发 人工智能
C语言程序设计例题
C语言程序设计50例