第1章 Hello World
本章,我们将从最简单的实例开始学习程序的基本结构。
几乎所有的编程语言都喜欢将“Hello World”作为第一个实例,那么我们也先从这里开始。
例1.1 输出文字“Hello World!”
任务描述
在输出窗口中显示一行文字:“Hello World!”。
我们先来看程序代码。
Python
源程序
程序只有一句,但是这一句的格式不能写错,既不能写成print 'Hello World!',也不能写成print(Hello World!),更不能随意增减标点符号。
计算机语言首先要求的就是严格,马马虎虎可是不行的!
程序注解
· print( ):是Python中的输出函数,其功能是将( )中的参数值输出到Shell窗口中。
本例中,其参数是一个字符串:'Hello World!'。注意,单引号'不可以省略,否则会显示程序出错。
在Python中,也可以用双引号(" ")来代替单引号(' '),但必须成对使用。如果字符串中含有双引号(" "),则外面就用单引号(' ')来引示,反之亦然。
· #:表示此后为注释内容,这一部分文字程序运行时会自动忽略。
运行结果
Hello World!
C/C++
源程序
程序比Python多出好几行,但核心的执行语句也只有一行,其他都是C语言的固定格式。同样需要注意,格式不能写错。
程序注解
· main( ){ }:主函数,是C/C++程序的入口。
程序所执行的是main()函数后{ }中的语句,在此之外的语句,只有被main中的语句调用才会执行。
· printf( ):格式输出函数,此处将字符串"Hello World!"输出到输出窗口。
注意:printf()函数比Python中的print()函数名结尾多了一个f。
双引号(")不可省略,也不可以用单引号(')代替,这一点与Python不同。
C/C++中的语句以分号(;)结尾,且不可省略。
· 注释:
C语言中的注释用/*……*/包括起来,可跨越多行。在C/C++语法中,可使用双斜杠(//)表示本行此后的内容均为注释,程序编译及运行时将自动忽略。
· #include <cstdio>:表示本程序要引用stdio(标准输入输出)库函数。
因为printf()函数是在stdio函数库中定义的,程序开头必须写上这一句,否则会在编译时显示“printf标识符未定义”。
运行结果
与Python相同。
Dev C++和VS都会将运行结果输出到Windows操作系统的DOS窗口,这是从20世纪的DOS时代延续下来的。
C++
在C++中,还有另一种输出方法。
源程序
程序注解
· cout: 为C++中的输出命令,此处将字符串"Hello World!"输出到输出窗口。
· <<:此处为输出运算符,该符号在别的地方还有别的含义。
· #include <iostream>:表示cout命令在iostream库中定义。
· using namespace std :使用std命名空间。
因为cout命令在std命名空间中定义,所以,如果此处不声明这一句,程序中就需要写成std::cout。
运行结果
与Python相同。
例1.2 求和
任务描述
在程序中设定a=5、b=3,在窗口中输出a+b的值。
程序代码如下。
Python
源程序
a=5 b=3 c=a+b print('a+b=',c)
程序注解
· a=5:含义是将常量5赋值给变量a。
=称为赋值运算符,与数学中的等式含义不同。在计算机程序中,它代表执行这一句之后,a的值变为5,而不代表之前的数值。
大家看懂上面这句话了吗?如果暂时看不懂也没有关系,只需先记住它与数学中的等式不同就行了。
· print('a+b=',c):输出字符串'a+b='和变量c的数值。
很多小朋友往往搞不清print('a')和print(a)的区别,在要求输出a的时候直接写上print(a),这样当然不会得到想要的结果。
这里再重申一下,'a'表示一个字符串,它会作为数据存储在内存中。
而a在这里代表一个变量名,这只是为了方便编程人员操作而已,只在源代码中存在。在程序编译并执行的时候,它会转化为内存中的一个存储地址,而这个变量名本身已经不存在了。
而你想要输出字母a,就必须在数据中有这个字母才行,因此只能写成print('a')。
运行结果
a+b= 8
在上面的运行结果中,在=和8之间有一个空格,因为print()函数默认使用空格来隔开各输出项。如果想取消这个空格,可将输出语句改成:
print('a+b=',c,sep='')
参数sep=' '表示以一个空字符串来隔开各输出项。
运行结果
a+b=8
C++
源程序
程序注解
· int a,b,c:设置a、b、c为整型变量,即均为整数。
在C/C++中,变量必须先声明数据类型后才能使用,这一点与Python不同。
· a=5:将常量5赋值给变量a。
参考本例Python源程序后的说明。
运行结果
a+b=8
如果数值为小数,则需要设置变量为浮点型(float)。
可以在定义变量的同时,给变量赋初始值,相应语句如下:
运行结果
a+b=8.7
变量的定义
Python和C/C++的变量都遵循“先定义后引用”的原则,但在Python和C/C++中,变量定义的概念有所不同。
Python的变量定义在赋值时完成,如果变量未赋值就引用,在执行时编程环境会提示:程序出错,该变量未定义。
C/C++的变量定义是在声明变量数据类型时完成的,如果变量未声明数据类型就赋值或引用,在编译时会提示出错:该变量未定义。如果变量已声明数据类型但未赋值,在编译时会提出警示,但程序仍然可以执行。
学到这里,大家可能会问:写这么一大段程序来算这么简单的一道题,有意义吗?有那个工夫,按两下计算器不就解决了吗?其实,我在初学计算机编程的时候也有这个疑问,编程究竟能做什么?
请不要着急,让我们逐个例子看下去。
以上的示例程序都是只有输出,没有输入的。而在实际的软件应用中,多数都要针对一定的输入进行处理。
例1.3 对输入求和
任务描述
在窗口中输出“请输入a:”并输入a值,
输出“请输入b:”并输入b值,
输出a+b的值。
先看程序代码。
Python
源程序
程序注解
· a=input('提示语'):是Python中的输入语句,功能是显示提示语并等待用户输入一段字符(按Enter键结束),并将输入值赋给变量a。
运行结果(粗斜体字为输入)
请输入a:12 请输入b:13 a+b=1213
大家看一下这个结果是不是有什么地方不对?12+13怎么能得1213呢?
这是因为Python 3默认input()函数的返回值数据类型是字符串,而在Python中,字符串之间是可以“相加”的,就是将字符串合并在一起。
字符串不仅可以“相加”,字符串和整数还可以“相乘”,请看下面的语句:
print('abc'*3)
运行结果
abcabcabc
如果想将输入数据转换为数值,则需要数据类型转换函数。如果想转换为整型数,则使用int()函数,如要想转换为浮点数(小数),则使用float()。
源程序修改如下:
运行结果(粗斜体字为输入)
请输入a:12 请输入b:13 a+b=25.0
结果中的25.0代表结果为浮点数。
C/C++
源程序
程序注解
· scanf("%f",&a):C/C++中的格式输入函数。%f为格式符号,表示从输入中扫描一个浮点数赋值给下一个参数a。
&a表示变量a的存储地址(第12章详解),&不可省略。
scanf()函数不能输出提示语,所以提示语需要提前用printf()函数输出。
· printf("a+b=%f",c):输出a+b=(c的值),%f为格式符号,表示将下一个参数c的值转换成浮点数输出。
%f代表输入/输出格式为浮点数,格式符号与变量的对应关系见下表。
数据类型
运行结果(粗斜体字为输入)
请输入a:12 请输入b:13 a+b=25.000000
如果将%f换成%g,使用VS C++输出则不会显示后面多余的0,使用Dev C++输出没有什么不同。
既然%已经被用作格式输出符号,那么,如果想输出一个%该怎么办?例如90%,该怎么写?
其实好办,多写一个%,写成90%%就可以了。
C++
源程序
程序注解
· cin>>a:C++中的输入命令,此处输入一个数值赋值给变量a。
· >>:此处为输入运算符,注意与输出运算符方向相反。
该符号仅在此处用于输入、输出,在别处有其他含义。
运行结果(粗斜体字为输入)
请输入a:12 请输入b:13 a+b=25
本章要点
· 本章学习了Python和C/C++基本的输入/输出函数和语句,其使用方法对比如下表所示。
· Python 中的变量必须先赋值后再引用;C/C++中的变量必须先声明数据类型后再引用。
练习1 简单人机对话(1)
任务描述
在窗口中输出“请问你今年多少岁?”
输入一个数。
输出“再问一下,你妈妈今年多少岁?”
输入一个数。
输出“哦!我知道了,你妈妈比你大(输出差值)岁。”