目录

Programming - 快速指南

Computer Programming - Overview

计算机程序简介

在进入计算机编程之前,让我们先了解计算机程序及其功能。

A computer program is a sequence of instructions written using a Computer Programming Language to perform a specified task by the computer.

我们在上述定义中使用的两个重要术语是 -

  • 指令序列
  • 计算机编程语言

要了解这些条款,请考虑某人询问您如何前往附近的肯德基的情况。 你究竟怎么做告诉他去肯德基的路?

您将使用人类语言告诉前往肯德基的方式,如下所示 -

首先直行,半公里后,从红灯处左转,然后行驶一公里左右,你会在右边找到肯德基。

在这里,您已经使用英语语言提供了几个步骤来到达肯德基。 如果遵循以下顺序,那么您将到达肯德基 -

1.	Go straight
2.	Drive half kilometer
3.	Take left
4.	Drive around one kilometer
5.	Search for KFC at your right side

现在,尝试使用计算机程序映射情况。 上述指令序列实际上是一个用English Language编写的Human Program ,它指导如何从给定的起点到达肯德基。 如果寻求指导的人知道任何这些语言,则可以用西班牙语,印地语,阿拉伯语或任何其他人类语言给出相同的序列。

现在,让我们回过头来尝试理解一个计算机程序,它是用计算机语言编写的一系列指令,用于通过计算机执行指定的任务。 以下是用Python编程语言编写的简单程序 -

print "Hello, World!"

上述计算机程序指示计算机打印“Hello,World!” 在电脑屏幕上。

  • 计算机程序也称为computer software ,其范围可以从两行到数百万行指令。

  • 计算机程序指令也称为程序源代码, computer programming也称为program coding

  • 没有计算机程序的计算机只是一个转储盒; 它是使计算机活跃的程序。

由于我们已经开发了如此多的语言来进行自我交流,计算机科学家已经开发了几种计算机编程语言来向计算机提供指令(即编写计算机程序)。 我们将在后续章节中看到几种计算机编程语言。

计算机编程简介

如果您了解computer program是什么,那么我们会说: the act of writing computer programs is called computer programming.

正如我们前面提到的,有数百种编程语言可用于编写计算机程序,以下是其中一些 -

  • Java
  • C
  • C++
  • Python
  • PHP
  • Perl
  • Ruby

计算机程序的使用

今天,计算机程序几乎被用于各个领域,家庭,农业,医疗,娱乐,国防,通信等。下面列出了一些计算机程序的应用 -

  • MS Word,MS Excel,Adobe Photoshop,Internet Explorer,Chrome等是计算机程序的示例。

  • 计算机程序正被用于在电影制作中开发图形和特效。

  • 计算机程序正用于执行超声波,X射线和其他医学检查。

  • 我们的手机正在使用计算机程序进行短信,聊天和语音通信。

计算机程序员

可以编写计算机程序的人,换句话说,可以进行计算机编程的人称为计算机程序员。

基于计算机编程语言专业知识,我们可以将计算机程序员命名如下 -

  • C程序员
  • C ++程序员
  • Java程序员
  • Python程序员
  • PHP程序员
  • Perl程序员
  • Ruby程序员

算法 (Algorithm)

从编程的角度来看, algorithm是解决任何问题的逐步过程。 算法是一种有效的方法,表示为一组有限的明确指令。

因此,计算机程序员在编写实际代码之前列出了解决问题所需的所有步骤。 以下是一个算法的简单示例,用于从给定的数字列表中找出最大数字 -

1. Get a list of numbers L<sub>1</sub>, L<sub>2</sub>, L<sub>3</sub>....L<sub>N</sub>
2. Assume L<sub>1</sub> is the largest, Largest = L<sub>1</sub>
3. Take next number L<sub>i</sub> from the list and do the following
4. If Largest is less than L<sub>i</sub>
5. Largest = L<sub>i</sub>
6. If L<sub>i</sub> is last number from the list then
7. Print value stored in Largest and come out
8. Else repeat same process starting from step 3

上述算法以粗略的方式编写,以帮助初学者理解这个概念。 随着您进入高级计算机编程,您将会遇到更复杂的编写计算机算法的方法。

Computer Programming - Basics

我们假设您非常了解英语,这是一种着名的Human Interface Language 。 英语有预定义的语法,需要遵循以正确的方式编写英语语句。 同样,大多数人类界面语言(印地语,英语,西班牙语,法语等)都由几个元素组成,如动词,名词,形容词,副词,命题和连词等。

与人机界面语言类似,计算机编程语言也由几个元素组成。 我们将向您介绍这些元素的基础知识,并让您习惯使用各种编程语言。 这些基本要素包括 -

  • 编程环境
  • 基本语法
  • 数据类型
  • Variables
  • Keywords
  • 基本运算符
  • Decision Making
  • Loops
  • Numbers
  • Characters
  • Arrays
  • Strings
  • Functions
  • File I/O

我们将在后续章节中使用不同的编程语言解释所有这些元素。 首先,我们将尝试理解所有这些术语的含义,然后,我们将看到这些术语如何在不同的编程语言中使用。

本教程旨在让您了解以下最流行的编程语言 -

  • C编程
  • Java编程
  • Python编程

本教程的主要部分已经通过将C作为编程语言进行了解释,然后我们展示了类似的概念在Java和Python中的工作原理。 因此,在完成本教程后,您将对这些流行的编程语言非常熟悉。

Computer Programming - Environment

虽然环境设置不是任何编程语言的元素,但它是在开始编写程序之前要遵循的第一步。

当我们说环境设置时,它只是意味着我们可以在其上编程的基础。 因此,我们需要具备所需的软件设置,即在我们的PC上安装,用于编写计算机程序,编译和执行它们。 例如,如果您需要浏览Internet,则需要在计算机上进行以下设置 -

  • 用于连接Internet的有效Internet连接
  • Web浏览器,如Internet Explorer,Chrome,Safari等。

如果您是PC用户,那么您将识别以下屏幕截图,我们在浏览iowiki.com时从Internet Explorer中获取该屏幕截图。

IE浏览器

同样,您需要以下设置才能开始使用任何编程语言进行编程。

  • 用于创建计算机程序的文本编辑器。
  • 用于将程序编译为二进制格式的编译器。
  • 直接执行程序的解释器。

如果您没有足够的计算机暴露,您将无法设置这些软件中的任何一个。 因此,我们建议您从周围的任何技术人员那里获得帮助,从您可以从哪里开始在您的机器上设置编程环境。 但对你而言,了解这些物品是很重要的。

文本编辑器 (Text Editor)

文本编辑器是用于编写计算机程序的软件。 您的Windows机器必须有一个记事本,可用于键入程序。 您可以按照以下步骤启动它 -

Start Icon → All Programs → Accessories → Notepad → Mouse Click on Notepad

它将使用以下窗口启动记事本 -

记事本

您可以使用此软件键入您的计算机程序并将其保存在任何位置的文件中。 您可以下载并安装其他优秀的编辑器,如免费提供的Notepad++

如果您是Mac用户,那么您将拥有TextEdit或者您可以安装其他商业编辑器,如BBEdit

Compiler?

您使用自己喜欢的编程语言编写计算机程序并将其保存在名为程序文件的文本文件中。

现在让我们尝试更详细地了解计算机如何理解您使用编程语言编写的程序。 实际上,计算机无法理解您的程序直接以文本格式给出,因此我们需要以二进制格式转换该程序,这可以由计算机理解。

从文本程序到二进制文件的转换由另一个名为Compiler的软件完成,这种从文本格式化程序转换为二进制格式文件的过程称为程序编译。 最后,您可以执行二进制文件来执行编程任务。

我们不会详细讨论编译器和编译的不同阶段。

以下流程图说明了该过程 -

编译器

因此,如果您要用任何需要C,C ++,Java和Pascal等编译的语言编写程序,那么在开始编程之前需要安装编译器。

Interpreter

我们刚刚讨论了编译器和编译过程。 如果您要使用需要在执行之前编译为二进制格式的编程语言编写程序,则需要编译器。

还有其他编程语言,如Python,PHP和Perl,它们不需要任何编译成二进制格式,而是可以使用解释器逐行读取这些程序并直接执行它们而无需进一步转换。

翻译员

因此,如果您要用PHP,Python,Perl,Ruby等编写程序,那么在开始编程之前需要安装解释器。

在线编译

如果您无法在计算机上设置任何编辑器,编译器或解释器,那么iowiki.com提供了一种工具,只需单击一下即可在线编译和运行几乎所有程序。

所以不要担心,让我们继续进行,以简单易用的步骤成为一名计算机程序员。

Computer Programming - Basic Syntax

让我们从一个小编码开始,这将真正让你成为一名计算机程序员。 我们打算编写一个单行计算机程序来编写Hello, World! 在你的屏幕上。 让我们看看如何使用不同的编程语言编写它。

C语言中的Hello World程序

请使用www.compileonline.com提供的在线编译器选项,尝试以下示例。

对于本教程中给出的大多数示例,您可以在右上角的网站代码部分找到Try it选项,它将带您进入在线编译器。

尝试更改printf()内的内容,即输入任何代替Hello World! 然后检查其结果。 它只是打印两个双引号内的任何内容。

#include <stdio.h>
int main() {
   /* printf() function to write Hello, World! */
   printf( "Hello, World!" );
}

产生以下结果 -

Hello, World!

这个小小的Hello World程序将帮助我们理解与C编程相关的各种基本概念。

节目录入点

现在,只需忘记#include 《stdio.h》语句,但请注意,您必须将此语句放在C程序的顶部。

每个C程序都以main()开头,它被称为main函数,然后是一个左大括号。 程序指令的其余部分写在两者之间,最后一个右花括号结束程序。

这两个花括号内的编码部分称为程序体。 左大括号可以与main(){在同一行中,或者像上面程序中提到的那样在下一行中。

功能 (Functions)

函数是程序的小单元,它们用于执行特定任务。 例如,上面的程序使用了两个函数: main()printf() 。 这里,函数main()提供程序执行的入口点,而另一个函数printf()用于在计算机屏幕上打印信息。

您可以编写自己的函数,我们将在单独的章节中看到,但C编程本身提供了各种内置函数,如main(),printf()等,我们可以根据我们的要求在程序中使用它们。

一些编程语言使用单词sub-routine而不是函数,但它们的功能或多或少相同。

注释 (Comments)

AC程序可以在/*.....*/包含语句。 这些语句称为注释,这些注释用于使程序用户友好且易于理解。 评论的好处是编译器和解释器完全忽略了它们。 因此,您可以使用您想要的任何语言撰写评论。

Whitespaces

当我们使用任何编程语言编写程序时,我们使用各种可打印字符来编写编程语句。 这些可打印的字符是a, b, c,......z, A, B, C,.....Z, 1, 2, 3,...... 0, !, @, #, $, %, ^, &, *, (, ), -, _, +, =, \, |, {, }, [, ], :, ;, 《, 》, ?, /, \, ~. `. ", ' a, b, c,......z, A, B, C,.....Z, 1, 2, 3,...... 0, !, @, #, $, %, ^, &, *, (, ), -, _, +, =, \, |, {, }, [, ], :, ;, 《, 》, ?, /, \, ~. `. ", ' a, b, c,......z, A, B, C,.....Z, 1, 2, 3,...... 0, !, @, #, $, %, ^, &, *, (, ), -, _, +, =, \, |, {, }, [, ], :, ;, 《, 》, ?, /, \, ~. `. ", ' 。希望我不会错过键盘上任何可打印的字符。

除了这些字符外,还有一些我们经常使用的字符,但它们在程序中是不可见的,这些字符是空格,制表符(\ t),新行(\ n)。 这些字符称为whitespaces

这三个重要的空白字符在所有编程语言中都很常见,并且在文本文档中仍然不可见 -

空白 说明 表示
New Line 创建新行 \n
TabTo create a tab.\t
SpaceTo create a space.empty space

只包含空格(可能带有注释)的行称为空行,C编译器完全忽略它。 空格是C中用于描述空格,制表符,换行符和注释的术语。 所以你可以写printf("Hello, World!" ); 如下所示。 这里所有创造的空间围绕着“Hello,World!” 没用,编译器会在编译时忽略它们。

#include <stdio.h>
int main() {
   /* printf() function to write Hello, World! */
   printf(    "Hello, World!"      );
}

产生以下结果 -

Hello, World!

如果我们将所有这些空白字符都可见,那么上面的程序将如下所示,你将无法编译它 -

#include <stdio.h>\n
\n
int main()\n
{
   \n
   \t/* printf() function to write Hello, World! */
   \n 
   \tprintf(\t"Hello, World!"\t);\n
   \n
}\n

分号(Semicolons)

C程序中的每个单独的语句都必须以分号( ; )结束,例如,如果你想写“Hello,World!” 两次,然后将写如下 -

#include <stdio.h>
int main() {
   /* printf() function to write Hello, World! */
   printf( "Hello, World!\n" );
   printf( "Hello, World!" );
}

该计划将产生以下结果 -

Hello, World! 
Hello, World!

这里,我们在第一个printf()函数中使用一个新行字符\n来创建一个新行。 让我们看看如果我们不使用这个新行字符会发生什么 -

#include <stdio.h>
int main() {
   /* printf() function to write Hello, World! */
   printf( "Hello, World!" );
   printf( "Hello, World!" );
}

该计划将产生以下结果 -

Hello, World! Hello, World!

我们将在接下来的几章中学习标识符和关键字。

程序说明

让我们了解上述C程序的工作原理。 首先,使用C编译器将上述程序转换为二进制格式。 所以我们把这段代码放在test.c文件中并按如下方式编译 -

$gcc test.c -o demo

如果有任何语法错误(计算机术语中的语法错误),那么我们在将其转换为二进制格式之前修复它。 如果一切顺利,那么它会生成一个名为demo的二进制文件。 最后,我们按如下方式执行生成的二进制演示 -

$./demo

产生以下结果 -

Hello, World!

这里,当我们执行二进制a.out文件时,计算机从main()开始进入程序内部并遇到printf()语句。 请注意/*....*/中的行是注释,并在编译时进行过滤。 因此printf()函数指示计算机在计算机屏幕上打印给定的行。 最后,它遇到一个右大括号,表示main()函数的结束并退出程序。

语法错误

如果不遵循编程语言定义的规则,那么在编译时,您将收到语法错误,并且不会编译程序。 从语法的角度来看,即使是单个点或逗号或单个分号也很重要,您也应该注意这样的小语法。 在下面的例子中,我们跳过了一个分号,让我们尝试编译程序 -

#include <stdio.h>
main() {
   printf("Hello, World!")
}

该计划将产生以下结果 -

main.c: In function 'main':
main.c:7:1: error: expected ';' before '}' token
 }
 ^

所以最重要的是,如果你没有遵循程序中编程语言定义的正确语法,那么你将得到语法错误。 在尝试另一次编译之前,您需要修复它们然后继续。

Java中的Hello World程序

以下是用Java编写的等效程序。 这个程序也会产生相同的结果Hello, World!

public class HelloWorld { 
   public static void main(String []args) {
      /* println() function to write Hello, World! */
      System.out.println("Hello, World!");     
   }
}

产生以下结果 -

Hello, World!

Python中的Hello World程序

以下是用Python编写的等效程序。 这个程序也会产生相同的结果Hello, World!

#  print function to write Hello, World! */
print "Hello, World!"

产生以下结果 -

Hello, World!

希望您注意到对于C和Java示例,首先我们编译程序然后执行生成的二进制文件,但在Python程序中,我们直接执行它。 正如我们在前一章中所解释的那样,Python是一种解释型语言,它不需要一个称为编译的中间步骤。

Python不需要分号(;)来终止语句,而新行总是意味着终止语句。

Computer Programming - Data Types

让我们讨论几乎所有编程语言中可用的非常简单但非常重要的概念,称为data types 。 正如其名称所示,数据类型表示可以使用计算机程序处理的数据类型。 它可以是数字,字母数字,小数等。

让我们暂时搁置计算机程序设计,并举一个简单的例子来添加两个整数10和20,这可以简单地完成如下 -

10 + 20

让我们再考虑另一个问题,我们想要添加两个十进制数10.50和20.50,其编写如下 -

10.50 + 20.50

这两个例子很简单。 现在让我们再举一个例子,我们想在笔记本中记录学生信息。 在这里,我们想记录以下信息 -

Name:
Class:
Section:
Age:
Sex:

现在,让我们按照给定的要求放一个学生记录 -

Name: Zara Ali
Class: 6th
Section: J
Age: 13
Sex: F

第一个例子处理整数,第二个例子添加了两个十进制数,而第三个例子处理的是不同数据的混合。 我们把它如下 -

  • 学生姓名“Zara Ali”是一系列字符,也称为字符串。

  • 学生class“6th”由整数和两个字符串组成。 这种混合物称为字母数字。

  • 学生部分由单个字符“J”表示。

  • 学生年龄由一个整数表示,即13。

  • 学生性别由单个字符“F”表示。

这样,我们意识到在我们的日常生活中,我们处理不同类型的数据,如字符串,字符,整数(整数)和十进制数(浮点数)。

同样,当我们编写计算机程序来处理不同类型的数据时,我们需要清楚地指定其类型; 否则计算机无法理解如何对给定数据执行不同的操作。 不同的编程语言使用不同的关键字来指定不同的数据类 例如,C和Java编程语言使用int来指定整数数据,而char指定字符数据类型。

后续章节将向您展示如何在不同情况下使用不同的数据类型。 现在,让我们检查C,Java和Python中可用的重要数据类型以及我们将用于指定这些数据类型的关键字。

C和Java数据类型

尽管Java支持其他数据类型,但C和Java支持几乎相同的数据类型集。 目前,我们正在采用这两种编程语言支持的一些常见数据类型 -

类型 关键词 可以由此数据类型表示的值范围
Characterchar -128到127或0到255
Numberint -32,768至32,767或-2,147,483,648至2,147,483,647
Small Numbershort-32,768 to 32,767
Long Numberlong-2,147,483,648 to 2,147,483,647
Decimal Numberfloat 1.2E-38至3.4E + 38至小数点后6位

这些数据类型称为原始数据类型,您可以使用这些数据类型来构建更复杂的数据类型,这些数据类型称为用户定义的数据类型,例如字符串将是一系列字符。

Python数据类型 (Python Data Types)

Python有五种标准数据类型,但是这种编程语言没有使用任何关键字来指定特定的数据类型,而是Python足够智能,可以自动理解给定的数据类型。

  • Numbers
  • String
  • List
  • Tuple
  • Dictionary

这里,Number指定所有类型的数字,包括十进制数字,字符串表示长度为1或更多字符的字符序列。 现在,让我们继续这两种数据类型并跳过List,Tuple和Dictionary,它们是Python中的高级数据类型。

Computer Programming - Variables

变量是您为计算机内存位置提供的名称,用于在计算机程序中存储值。

例如,假设您要在程序中存储两个值10和20,并且在稍后阶段,您希望使用这两个值。 让我们看看你将如何做到这一点。 以下是三个简单的步骤 -

  • 使用适当的名称创建变量。
  • 将值存储在这两个变量中。
  • 检索并使用变量中存储的值。

创建变量

创建变量在C编程中也称为declaring variables 。 不同的编程语言有不同的方法在程序中创建变量。 例如,C编程具有以下创建变量的简单方法 -

#include <stdio.h>
int main() {
   int a;
   int b;
}

上面的程序创建了两个变量来保留名称为ab两个内存位置。 我们使用int关键字创建了这些变量来指定变量data type ,这意味着我们要在这两个变量中存储整数值。 同样,您可以创建变量来存储longfloatchar或任何其他数据类型。 例如 -

/* variable to store long value */
long a;
/* variable to store float value */
float b;

你可以通过将它们放在一行中来创建相似类型的变量,但用逗号分隔如下 -

#include <stdio.h>
int main() {
   int a, b;
}

下面列出了关于您需要记住的变量的关键点 -

  • 变量名称可以包含单一类型的值。 例如,如果变量a已被定义为int类型,则它只能存储整数。

  • C编程语言需要变量创建,即在程序中使用之前的声明。 您不能在程序中使用变量名而不创建它,尽管像Python这样的编程语言允许您使用变量名而不创建变量名。

  • 您只能在程序中使用变量名称一次。 例如,如果已定义变量a来存储整数值,则无法再次定义变量以存储任何其他类型的值。

  • 有一些编程语言,如Python,PHP,Perl等,它们不希望您在创建变量时指定数据类型。 因此,您可以存储整数,浮点数或长整数,而无需指定其数据类型。

  • 您可以为变量提供任何名称,如agesexsalaryyear1990或您想要提供的任何其他内容,但大多数编程语言只允许在变量名称中使用有限的字符。 现在,我们建议在变量名中仅a....z, A....Z, 0....9 ,并仅使用字母而不是数字来开始它们的名称。

  • 几乎没有一种编程语言允许用数字开始它们的变量名,所以1990year不是有效的变量名,而year1990ye1990ar是有效的变量名。

每种编程语言都提供了与变量相关的更多规则,当您进一步详细了解该编程语言时,您将学习它们。

将值存储在变量中

您已经在上一节中看到了我们如何创建变量。 现在,让我们在这些变量中存储一些值 -

#include <stdio.h>
int main() {
   int a;
   int b;
   a = 10;
   b = 20;
}

上面的程序有两个附加语句,我们将10存储在变量a ,20存储在变量b 。 几乎所有的编程语言都有类似的方式将值存储在变量中,我们将变量名保存在等号的左侧=我们想要在变量中存储的值,我们将该值保存在右侧。

现在,我们已经完成了两个步骤,首先我们创建了两个变量,然后我们在这些变量中存储了所需的值。 现在变量a值为10,变量b值为20.换句话说,我们可以说,当执行上述程序时,名为a的内存位置将保持10,内存位置b将保持20。

访问变量中存储的值

如果我们不在变量中使用存储的值,那么创建变量并在其中存储值就没有意义。 我们知道上面的程序有两个变量ab ,它们分别存储值10和20。 因此,让我们尝试打印存储在这两个变量中的值。 以下是一个C程序,它打印存储在其变量中的值 -

#include <stdio.h>
int main() {
   int a;
   int b;
   a = 10;
   b = 20;
   printf( "Value of a = %d\n", a );
   printf( "Value of b = %d\n", b );
}

执行上述程序时,会产生以下结果 -

Value of a = 10
Value of b = 20

您必须在前一章中看到printf()函数,我们用它来打印“Hello,World!”。 这一次,我们使用它来打印变量的值。 我们正在使用%d ,它将被printf()语句中给定变量的值替换。 我们可以使用单个printf()语句打印这两个值,如下所示 -

#include <stdio.h>
int main() {
   int a;
   int b;
   a = 10;
   b = 20;
   printf( "Value of a = %d and value of b = %d\n", a, b );
}

执行上述程序时,会产生以下结果 -

Value of a = 10 and value of b = 20

如果要在C编程中使用float变量,则必须使用%f而不是%d ,如果要打印字符值,则必须使用%c 。 同样,可以使用不同的%和字符打印不同的数据类型。

Java中的变量

以下是用Java编程语言编写的等效程序。 该程序将创建两个变量ab ,与C编程非常相似,它将在这些变量中分配10和20,最后以两种方式打印两个变量的值 -

public class DemoJava {
   public static void main(String []args) {
      int a;
      int b;
      a = 10;
      b = 20;
      System.out.println("Value of a = " + a);
      System.out.println("Value of b = " + b);
      System.out.println("Value of a = " + a + " and value of b = " + b);     
   }
}

执行上述程序时,会产生以下结果 -

Value of a = 10
Value of b = 20
Value of a = 10 and value of b = 20

Python中的变量

以下是用Python编写的等效程序。 该程序将创建两个变量ab ,同时在这些变量中分配10和20。

Python不希望您在变量创建时指定数据类型,也不需要事先创建变量。

a = 10
b = 20
print "Value of a = ", a
print "Value of b = ", b
print "Value of a = ", a, " and value of b = ", b

执行上述程序时,会产生以下结果 -

Value of a =  10
Value of b =  20
Value of a =  10  and value of b =  20

您可以在C和Java编程中使用以下语法来声明变量并同时分配值 -

#include <stdio.h>
int main() {
   int a = 10;
   int b = 20;
   printf( "Value of a = %d and value of b = %d\n", a, b );
}

执行上述程序时,会产生以下结果 -

Value of a = 10 and value of b = 20

Computer Programming - Keywords

到目前为止,我们已经介绍了两个称为变量及其数据类型的重要概念。 我们讨论了如何使用intlongfloat来指定不同的数据类型。 我们还学习了如何命名变量来存储不同的值。

虽然本章不是单独要求的,因为保留关键字是基本编程语法的一部分,我们将它分开,以便在数据类型和变量之后立即解释它以使其易于理解。

像int,long和float一样,C编程语言支持许多其他关键字,我们将用于不同的目的。 不同的编程语言提供了不同的保留关键字集,但是在所有编程语言中都有一个重要且通用的规则,我们不能使用保留关键字来命名我们的变量,这意味着我们不能将我们的变量命名为intfloat而不是这些关键字可以仅用于指定可变数据类型。

例如,如果您尝试将任何保留关键字用于变量名称,则会出现语法错误。

#include <stdio.h>
int main() {
   int float;
   float = 10;
   printf( "Value of float = %d\n", float);
}

编译上述程序时,会产生以下错误 -

main.c: In function 'main':
main.c:5:8: error: two or more data types in declaration specifiers
   int float;
......

现在让我们为整数变量赋一个正确的名称,然后上面的程序应该编译并成功执行 -

#include <stdio.h>
int main() {
   int count;
   count = 10;
   printf( "Value of count = %d\n", count);
}

C编程保留关键字

这是一个几乎包含C编程语言所有关键字的表格 -

autoelselongswitch
breakenumregistertypedef
caseexternreturnunion
charfloatshortunsigned
constforsignedvoid
continuegotosizeofvolatile
defaultifstaticwhile
dointstruct_Packed
double

Java编程保留关键字

这是一个几乎包含Java编程语言支持的所有关键字的表 -

abstractassertbooleanbreak
bytecasecatchchar
classconstcontinuedefault
dodoubleelseenum
extendsfinalfinallyfloat
forgotoifimplements
importinstanceofintinterface
longnativenewpackage
privateprotectedpublicreturn
shortstaticstrictfpsuper
switchsynchronizedthisthrow
throwstransienttryvoid
volatilewhile

Python编程保留关键字 (Python Programming Reserved Keywords)

这是一个包含Python编程语言支持的几乎所有关键字的表 -

andexecnot
assertfinallyor
breakforpass
classfromprint
continueglobalraise
defifreturn
delimporttry
elifinwhile
elseiswith
exceptlambdayield

我们知道您无法记住所有这些关键字,但我们已将其列出以供参考,并解释reserved keywords的概念。 因此,在给变量命名时要小心,不应该为该编程语言使用任何保留关键字。

Computer Programming - Operators

编程语言中的运算符是一种符号,它告诉编译器或解释器执行特定的数学,关系或逻辑运算并产生最终结果。 本章将解释operators的概念,它将指导您完成C,Java和Python中可用的重要算术和关系运算符。

算术运算符 (Arithmetic Operators)

计算机程序广泛用于数学计算。 我们可以编写一个计算机程序,可以进行简单的计算,如添加两个数字(2 + 3),我们也可以编写一个程序,它可以解决复杂的方程,如P(x)= x 4 + 7x 3 - 5x + 9。如果你甚至是一个贫穷的学生,你必须要知道,第一个表达式2和3是操作数,+是操作符。 计算机编程中存在类似的概念。

看看以下两个例子 -

2 + 3
P(x) = x<sup>4</sup> + 7x<sup>3</sup> - 5x + 9. 

这两个语句在编程语言中称为算术表达式,而在这些表达式中使用的minus称为算术运算符,这些表达式中使用的值如2,3和x等称为操作数。 在它们最简单的形式中,这样的表达式产生数值结果。

类似地,编程语言提供各种算术运算符。 下表列出了C编程语言中可用的一些重要算术运算符。 假设变量A保持10,变量B保持20,则 -

操作者 描述
+ 添加两个操作数 A + B将给出30
- 从第一个减去第二个操作数 A - B将给-10
* 将两个操作数相乘 A * B将给出200
/Divides numerator by de-numerator B/A会给2
% 这给出了整数除法的余数 B%A将给出0

下面是一个简单的C编程实例,用于理解上述数学运算符 -

#include <stdio.h>
int main() {
   int a, b, c;
   a = 10;
   b = 20;
   c = a + b;   
   printf( "Value of c = %d\n", c);
   c = a - b;   
   printf( "Value of c = %d\n", c);
   c = a * b;   
   printf( "Value of c = %d\n", c);
   c = b/a;   
   printf( "Value of c = %d\n", c);
   c = b % a;   
   printf( "Value of c = %d\n", c);
}

执行上述程序时,会产生以下结果 -

Value of c = 30
Value of c = -10
Value of c = 200
Value of c = 2
Value of c = 0

关系运算符 (Relational Operators)

考虑一种情况,我们创建两个变量并为它们分配一些值,如下所示 -

A = 20
B = 10

这里,很明显变量A的值大于B. 因此,我们需要一些符号的帮助来编写这样的表达式,这些表达式称为关系表达式。 如果我们使用C编程语言,那么它将编写如下 -

(A > B)

在这里,我们使用符号>并且它被称为关系运算符,并且在它们最简单的形式中,它们产生布尔结果,这意味着结果将为true或false。 类似地,编程语言提供各种关系运算符。 下表列出了C编程语言中可用的一些重要关系运算符。 假设变量A保持10,变量B保持20,则 -

操作者 描述
== 检查两个操作数的值是否相等,如果是,则条件变为真。 (A == B)不是真的。
!= 检查两个操作数的值是否相等,如果值不相等则条件变为真。 (A!= B)是真的。
> 检查左操作数的值是否大于右操作数的值,如果是,则条件变为真。 (A> B)不是真的。
< 检查左操作数的值是否小于右操作数的值,如果是,则条件变为真。 (A < B) 为真
>= 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件变为真。 (A> = B)不是真的。
<= 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件变为真。 (A <= B)是真的。

在这里,我们将向您展示一个使用if conditional statement的C编程示例。 虽然稍后将在单独的章节中讨论此语句,但简而言之,我们使用if statement来检查条件,如果条件为真,则执行if statement的主体,否则跳过if statement的主体。

#include <stdio.h>
int main() {
   int a, b;
   a = 10;
   b = 20;
   /* Here we check whether a is equal to 10 or not */
   if( a == 10 ) {
      /* if a is equal to 10 then this body will be executed */
      printf( "a is equal to 10\n");
   }
   /* Here we check whether b is equal to 10 or not */
   if( b == 10 ) {
      /* if b is equal to 10 then this body will be executed */
      printf( "b is equal to 10\n");
   }
   /* Here we check if a is less b than or not */
   if( a < b ) {
      /* if a is less than b then this body will be executed */
      printf( "a is less than b\n");
   }
   /* Here we check whether a and b are not equal */
   if( a != b ) {
      /* if a is not equal to b then this body will be executed */
      printf( "a is not equal to b\n");
   }
}

执行上述程序时,会产生以下结果 -

a is equal to 10
a is less than b
a is not equal to b

逻辑运算符 (Logical Operators)

逻辑运算符在任何编程语言中都非常重要,它们可以帮助我们根据特定条件做出决策。 假设我们想要结合两个条件的结果,那么逻辑AND和OR逻辑运算符可以帮助我们生成最终结果。

下表显示了C语言支持的所有逻辑运算符。 假设变量A保持1而变量B保持0,则 -

操作者 描述
&& 称为逻辑AND运算符。 如果两个操作数都不为零,则条件成立。 (A && B)是假的。
|| 称为逻辑OR运算符。 如果两个操作数中的任何一个非零,则条件变为真。 (A || B)是真的。
! 称为逻辑非运算符。 用于反转其操作数的逻辑状态。 如果条件为真,则Logical NOT运算符将为false。 !(A && B)是真的。

尝试以下示例以了解C编程语言中可用的所有逻辑运算符 -

#include <stdio.h>
int main() {
   int a = 1;
   int b = 0;
   if ( a && b ) {
      printf("This will never print because condition is false\n" );
   }
   if ( a || b ) {
      printf("This will be printed print because condition is true\n" );
   }
   if ( !(a && b) ) {
      printf("This will be printed print because condition is true\n" );
   }
}

编译并执行上述程序时,会产生以下结果 -

This will be printed print because condition is true
This will be printed print because condition is true

Java中的运算符

以下是用Java编写的等效程序。 C编程和Java提供了几乎相同的运算符和条件语句集。 这个程序将创建两个变量ab ,非常类似于C编程,然后我们在这些变量中分配10和20,最后,我们将使用不同的算术和关系运算符 -

您可以尝试执行以下程序以查看输出,该输出必须与上面示例生成的结果相同。

public class DemoJava {
   public static void main(String []args) {
      int a, b, c;
      a = 10;
      b = 20;
      c = a + b;   
      System.out.println("Value of c = " + c );
      c = a - b;
      System.out.println("Value of c = " + c );
      c = a * b;   
      System.out.println("Value of c = " + c );
      c = b/a;   
      System.out.println("Value of c = " + c );
      c = b % a;   
      System.out.println("Value of c = " + c );
      if( a == 10 ) {
         System.out.println("a is equal to 10" );
      }
   }
}

执行上述程序时,会产生以下结果 -

Value of c = 30
Value of c = -10
Value of c = 200
Value of c = 2
Value of c = 0
a is equal to 10

Python中的运算符

以下是用Python编写的等效程序。 该程序将创建两个变量ab ,同时在这些变量中分配10和20。 幸运的是,C编程和Python编程语言提供了几乎相同的运算符集。 这个程序将创建两个变量ab ,非常类似于C编程,然后我们在这些变量中分配10和20,最后,我们将使用不同的算术和关系运算符。

您可以尝试执行以下程序以查看输出,该输出必须与上面示例生成的结果相同。

a = 10
b = 20
c = a + b   
print "Value of c = ", c
c = a - b   
print "Value of c = ", c
c = a * b   
print "Value of c = ", c
c = a/b   
print "Value of c = ", c
c = a % b   
print "Value of c = ", c
if( a == 10 ):
   print "a is equal to 10"

执行上述程序时,会产生以下结果 -

Value of c =  30
Value of c =  -10
Value of c =  200
Value of c =  0
Value of c =  10
a is equal to 10

Decision Statements

决策对计算机编程至关重要。 在有许多情况下,您将获得两个或更多选项,并且您必须根据给定条件选择一个选项。 例如,我们希望根据他的安全标记打印关于学生的评论。 以下是情况 -

Assume given marks are x for a student:
If given marks are more than 95, then
Student is brilliant
If given marks are less than 30, then
Student is poor
If given marks are less than 95 and more than 30, then
Student is average

现在,问题是如何编写编程代码来处理这种情况。 几乎所有的编程语言都提供了基于以下流程图工作的条件语句 -

C中的决策声明

让我们在if conditional statements的帮助下编写一个C程序,将上面给出的情况转换成编程代码 -

#include <stdio.h>
int main() {
   int x = 45;
   if( x > 95) {
      printf( "Student is brilliant\n");
   }
   if( x < 30) {
      printf( "Student is poor\n");
   }
   if( x < 95 && x > 30 ) {
      printf( "Student is average\n");
   }
}

执行上述程序时,会产生以下结果 -

Student is average

上述程序使用if conditional statements 。 这里,第一个if statement检查给定的条件,即变量x是否大于95,如果它发现条件为真,则输入条件体来执行给定的语句。 这里我们只有一个printf()语句来打印关于学生的评论。

同样,第二个if statement可以。 最后,执行第三个if statement ,这里我们有以下两个条件 -

  • 第一个条件是x 》 95

  • 第二个条件是x 《 30

计算机评估给定的条件,然后,整体结果与二元运算符&&的帮助相结合。 如果最终结果为true,则将执行条件语句,否则不执行任何语句。

本教程将为您提供有关各种形式的if statements的基本概念,以及C语言中可用的switch语句简介。 不同的编程语言提供不同类型的决策语句,但基本概念与本教程中所述的相同。

if...else 语句

if语句后面可以跟一个可选的else语句,该语句在布尔表达式为false时执行。 C编程语言中if...else语句的语法是 -

if(boolean_expression) {
   /* Statement(s) will execute if the boolean expression is true */
} else {
  /* Statement(s) will execute if the boolean expression is false */
}

上面的语法可以用流程图的形式表示,如下所示 -

C if ... else语句

当我们必须从两个选项中做出决定时, if...else语句很有用。 例如,如果学生获得的分数超过95分,那么学生就很聪明,否则就不会对这种情况进行编码,如下所示 -

#include <stdio.h>
int main() {
   int x = 45;
   if( x > 95) {
      printf( "Student is brilliant\n");
   } else {
      printf( "Student is not brilliant\n");
   }
}

执行上述程序时,会产生以下结果 -

Student is not brilliant

if...elseif...else 语句

if语句后面可以跟一个else if...else语句,这对于测试各种条件非常有用。

使用if, else if, else语句时,需要记住几点 -

  • 一个if可以有零个或一个else's ,它必须在一个else if

  • 一个if可以有0到多个else…if's ,他们必须在else之前。

  • 一旦else…if成功,剩下的else…if'selse's将被测试。

C编程语言中if...else if...else语句的语法是 -

if(boolean_expression 1) {
   /* Executes when the boolean expression 1 is true */
}
else if( boolean_expression 2) {
   /* Executes when the boolean expression 2 is true */
}
else if( boolean_expression 3) {
   /* Executes when the boolean expression 3 is true */
} else {
   /* Executes when the none of the above condition is true */
}

现在在if...elseif...else语句的帮助下,第一个程序可以编码如下 -

#include <stdio.h>
int main() {
   int x = 45;
   if( x > 95) {
      printf( "Student is brilliant\n");
   } 
   else if( x < 30) {
      printf( "Student is poor\n");
   } 
   else if( x < 95 && x > 30 ) {
      printf( "Student is average\n");
   }
}

执行上述程序时,会产生以下结果 -

Student is average

Switch 语句

switch语句是if statements的替代if statements ,它允许根据值列表测试变量的相等性。 每个值称为一个case ,并检查每个开关案例接通的变量。 它具有以下语法 -

switch(expression){
   case ONE :
      statement(s);
      break;
   case TWO:
      statement(s);
      break;
   ......
   default :
      statement(s);
}

switch语句中使用的expression必须给出一个整数值,该值将与给定的不同情况进行相等性比较。 只要表达式值与case值匹配,该case的主体就会被执行,最后,switch将使用break语句终止。 如果没有提供break语句,则计算机继续执行下面提供的其他语句到匹配的大小写。 如果所有情况都不匹配,则执行默认的案例正文。

上面的语法可以用流程图的形式表示,如下所示 -

在C中切换语句

现在,让我们考虑另一个例子,我们想要为给定的数字写出等效的英语单词。 然后,它可以编码如下 -

#include <stdio.h>
int main() {
   int x = 2;
   switch( x ){
      case 1 :
         printf( "One\n");
         break;
      case 2 :
         printf( "Two\n");
         break;
      case 3 :
         printf( "Three\n");
         break;
      case 4 :
         printf( "Four\n");
         break;
      default :
         printf( "None of the above...\n");
   }
}

执行上述程序时,会产生以下结果 -

Two

Java中的决策

以下是用Java编写的等效程序,它支持ifif...elseif...elseif...elseswitch语句。

您可以尝试执行以下程序以查看输出,该输出必须与上述C示例生成的结果相同。

public class DemoJava {
   public static void main(String []args) {
      int x = 45;
      if( x > 95) {
         System.out.println( "Student is brilliant");
      } 
      else if( x < 30) {
         System.out.println( "Student is poor");
      } 
      else if( x < 95 && x > 30 ) {
         System.out.println( "Student is average");
      }
   }
}

执行上述程序时,会产生以下结果 -

Student is average

Python中的决策

以下是用Python编写的等效程序。 Python提供ifif...elseif...elif...elseswitch语句。 在这里,您必须注意Python不会对条件体使用花括号,而是使用语句缩进来简单地识别块的主体。

您可以尝试执行以下程序以查看输出 -

x = 45
if x > 95:
   print "Student is brilliant"
elif x < 30:
   print "Student is poor"
elif x < 95 and x > 30:
   print "Student is average"
print "The end"

执行上述程序时,会产生以下结果 -

Student is average
The end

Computer Programming - Loops

让我们考虑一下你想要打印Hello, World! 五次。 这是一个简单的C程序来做同样的事情 -

#include <stdio.h>
int main() {
   printf( "Hello, World!\n");
   printf( "Hello, World!\n");
   printf( "Hello, World!\n");
   printf( "Hello, World!\n");
   printf( "Hello, World!\n");
}

执行上述程序时,会产生以下结果 -

Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!

这很简单,但是再次,让我们考虑另一种情况,当你想写Hello, World! 一千次。 我们当然不能写一千次printf()语句。 几乎所有编程语言都提供了一个称为loop的概念,它有助于执行一个或多个语句达到所需的次数。 所有高级编程语言都提供各种形式的循环,可用于重复执行一个或多个语句。

让我们在while loop的帮助下编写上面的C程序,稍后我们将讨论这个循环是如何工作的

#include <stdio.h>
int main() {
   int i = 0;
   while ( i < 5 ) {
      printf( "Hello, World!\n");
      i = i + 1;
   }
}

执行上述程序时,会产生以下结果 -

Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!

上面的程序使用了一个while loop ,它用于执行{....}中包含的一组编程语句。 这里,计算机首先检查给定条件,即变量“a”是否小于5,如果发现条件为真,则进入循环体以执行给定语句。 在这里,我们在循环体中有以下两个语句 -

  • 第一个语句是printf()函数,它打印Hello World!

  • 第二个陈述是i = i + 1 ,用于增加变量i的值

执行循环体中给出的所有语句后,计算机返回while(i <5)并再次检查给定条件(i <5),如果条件成立则再次执行循环。 重复该过程直到给定条件保持为真,这意味着变量“a”具有小于5的值。

总而言之,循环语句允许我们多次执行语句或语句组。 下面给出的是大多数编程语言中循环语句的一般形式 -

循环架构

本教程旨在向非程序员介绍编程的基本概念,因此让我们讨论C编程语言中可用的两个最重要的循环。 一旦你清楚这两个循环,那么你可以选择C编程教程或参考书,并检查C中可用的其他循环及其工作方式。

while循环

C编程语言中提供的while loop具有以下语法 -

while ( condition ) {
   /*....while loop body ....*/
}

上面的代码可以用流程图的形式表示,如下所示 -

在C中循环

关于while循环,需要注意以下要点 -

  • while循环以关键字开头,后跟()括起来的condition

  • 除了while()语句之外,还将用大括号{...}括起循环体。

  • while循环体可以有一行或多行源代码重复执行。

  • 如果while循环的主体只有一行,则可选择使用花括号{...}

  • while循环继续执行其正文,直到给定condition成立为止。 一旦条件变为假,while循环就会出现并继续执行while循环体之后的紧接下一个语句。

  • 条件通常是关系语句,其被评估为真或假。 等于零的值被视为false,任何非零值都被视为true。

做... while循环

while循环在执行正文部分中给出的任何语句之前检查给定条件。 C编程提供了另一种形式的循环,称为do...while允许在检查给定条件之前执行循环体。 它具有以下语法 -

do {
   /*....do...while loop body ....*/
} 
while ( condition );

上面的代码可以用流程图的形式表示,如下所示 -

做...在C中循环

如果你将使用do...while循环编写上面的例子,那么Hello, World将产生相同的结果 -

#include <stdio.h>
int main() {
   int i = 0;
   do {
      printf( "Hello, World!\n");
      i = i + 1;
   }
   while ( i < 5 );
}

执行上述程序时,会产生以下结果 -

Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!

break (The break statement)

当在循环内遇到break语句时,循环立即终止,程序控制在循环后的下一个语句处重新开始。 C语言中break语句的语法如下 -

break;

break语句可以以流程图的形式表示,如下所示 -

c break语句

以下是上述程序的变体,但它将在打印Hello World后出现! 只有三次 -

#include <stdio.h>
int main() {
   int i = 0;
   do {
      printf( "Hello, World!\n");
      i = i + 1;
      if( i == 3 ) {
         break;
      }
   }
   while ( i < 5 );
}

执行上述程序时,会产生以下结果 -

Hello, World!
Hello, World!
Hello, World!

continue (The continue statement)

C编程语言中的continue语句有点像break语句。 而不是强制终止, continue强制循环的下一次迭代发生,跳过其间的任何代码。 C语言中continue语句的语法如下 -

continue;

continue语句可以以流程图的形式表示,如下所示 -

C继续声明

以下是上述程序的变体,但当变量的值等于3时,它将跳过打印 -

#include <stdio.h>
int main() {
   int i = 0;
   do {
      if( i == 3 ) {
         i = i + 1;
         continue;
      }
      printf( "Hello, World!\n");
      i = i + 1;
   }
   while ( i < 5 );
}

执行上述程序时,会产生以下结果 -

Hello, World!
Hello, World!
Hello, World!
Hello, World!

Java中的循环

以下是用Java编写的等效程序,它支持whiledo...while循环。 以下程序打印Hello, World! 我们在C编程中做了五次 -

您可以尝试执行以下程序以查看输出,该输出必须与上面示例生成的结果相同。

public class DemoJava {
   public static void main(String []args) {
      int i = 0;
      while ( i < 5 ) {
         System.out.println("Hello, World!");
         i = i + 1;
      }
   }
}

Java编程中的breakcontinue语句与它们在C编程中的工作方式完全相同。

Python中的循环

以下是用Python编写的等效程序。 Python也支持whiledo...while循环。 以下程序打印Hello, World! 我们在C编程方面做了五次。 在这里你必须注意Python没有对循环体使用花括号,而是使用语句的缩进来简单地识别循环体。

您可以尝试执行以下程序以查看输出。 为了显示差异,我们再使用了一个print语句,它将在循环结束时执行。

i = 0
while (i < 5):
   print "Hello, World!"
   i = i + 1
print "Loop ends"

执行上述程序时,会产生以下结果 -

Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!
Loop ends

Python中的breakcontinue语句的工作方式与它们在C编程中的工作方式完全相同。

Computer Programming - Numbers

每种编程语言都支持操作不同类型的数字,例如简单的整数和浮点数。 C,Java和Python根据其性质将这些数字分为几类。

让我们回过头来查看数据类型章节,其中列出了与数字相关的核心数据类型 -

类型 关键词 可以由此数据类型表示的值范围
Numberint -32,768至32,767或-2,147,483,648至2,147,483,647
Small Numbershort-32,768 to 32,767
Long Numberlong-2,147,483,648 to 2,147,483,647
Decimal Numberfloat 1.2E-38至3.4E + 38至小数点后6位

这些数据类型称为原始数据类型,您可以使用这些数据类型来构建更多数据类型,这些数据类型称为用户定义的数据类型。

在讨论运算符时,我们已经看到了对数字的各种数学和逻辑运算。 所以我们知道如何添加数字,减去数字,除数等。

首先让我们看看如何打印C语言中可用的各种数字 -

#include <stdio.h>
int main() {
   short  s;
   int    i;
   long   l;
   float  f;
   double d;
   s = 10;
   i = 1000;
   l = 1000000;
   f = 230.47;
   d = 30949.374;
   printf( "s: %d\n", s);
   printf( "i: %d\n", i);
   printf( "l: %ld\n", l);
   printf( "f: %.3f\n", f);
   printf( "d: %.3f\n", d);
}

其余的编码非常明显,但我们使用%.3f来打印float和double,这表示要打印的小数后面的位数。 执行上述程序时,会产生以下结果 -

s: 10
i: 1000
l: 1000000
f: 230.470
d: 30949.374

数字上的数学运算

下表列出了C编程语言中可用的各种有用的内置数学functions ,可用于各种重要的数学计算。

例如,如果要计算数字的平方根(例如2304),则可以使用内置函数计算平方根。

Sr.No. 功能与目的
1

double cos(double);

此函数采用一个角度(作为double)并返回余弦。

2

double sin(double);

此函数采用一个角度(作为double)并返回正弦。

3

double tan(double);

此函数采用一个角度(作为double)并返回切线。

4

double log(double);

此函数接受一个数字并返回该数字的自然日志。

5

double pow(double, double);

第一个是你想要提出的数字,第二个是你希望提升的数字。

6

double hypot(double, double);

如果你传递这个函数的直角三角形的两边的长度,它将返回斜边的长度。

7

double sqrt(double);

您将此函数传递给一个数字,然后返回其平方根。

8

int abs(int);

此函数返回传递给它的整数的绝对值。

9

double fabs(double);

此函数返回传递给它的任何十进制数的绝对值。

10

double floor(double);

查找小于或等于传递给它的参数的整数。

以下是显示一些数学运算的简单示例。 要使用这些函数,您需要在程序中包含数学头文件《math.h》 ,方法与包含stdio.h相同 -

#include <stdio.h>
#include <math.h>
int main() {
   short  s;
   int    i;
   long   l;
   float  f;
   double d;
   printf( "sin(s): %f\n", sin(10));
   printf( "abs(i): %f\n", abs(1000));
   printf( "floor(f): %f\n", floor(230.47));
   printf( "sqrt(l): %f\n", sqrt(1000000));
   printf( "pow(d, 2): %f\n", pow(2.374, 2));
}

执行上述程序时,会产生以下结果 -

sin(s): -0.544021
abs(i): -0.544021
floor(f): 230.000000
sqrt(l): 1000.000000
pow(d, 2): 5.635876

除了上述用法之外,您还将在C编程中使用循环计数,标志表示,真或假值中的数字。

Java中的数字

以下是用Java编写的等效程序。 Java提供了几乎所有C编程中可用的数字数据类型。

您可以尝试执行以下程序以查看输出,该输出与上述C示例生成的结果相同。

public class DemoJava {
   public static void main(String []args) {
      short  s;
      int    i;
      long   l;
      float  f;
      double d;
      s = 10;
      i = 1000;
      l = 1000000L;
      f = 230.47f;
      d = 30949.374;
      System.out.format( "s: %d\n", s);
      System.out.format( "i: %d\n", i);
      System.out.format( "l: %d\n", l);
      System.out.format( "f: %f\n", f);
      System.out.format( "d: %f\n", d);
   }
}

执行上述程序时,会产生以下结果 -

s: 10
i: 1000
l: 1000000
f: 230.470001
d: 30949.374000

Java还提供了全面的数学计算内置函数,您可以像在C编程中一样使用它们。

Python中的数字

Python与C和Java略有不同; 它将数字分为intlongfloatcomplex 。 以下是Python中数字的一些示例 -

INT 浮动 复杂
1051924361L0.03.14j
100-0x19323L15.2045.j
-7860122L-21.99.322e-36j
0800xDEFABCECBDAECBFBAEl32.3+e18.876j
-0490535633629843L-90.-.6545+0J
-0x260-052318172735L-32.54e1003e+26J
0x69-4721885298529L70.2-E124.53e-7j

以下是用Python编写的等效程序 -

s = 10
i = 1000
l = 1000000
f = 230.47
d = 30949.374
print "s: ", s
print "i: ", i
print "l: ", l
print "f: ", f
print "d: ", d

执行上述程序时,会产生以下结果 -

s:  10
i:  1000
l:  1000000
f:  230.47
d:  30949.374

Python还提供了用于数学计算的全系列内置函数,您可以像在C编程中使用它们一样使用它们。

Computer Programming - Characters

如果在计算机编程中使用数字很容易,那么使用字符会更容易。 字符是简单的字母表,如a,b,c,d ....,A,B,C,D,.....,但有一个例外。 在计算机编程中,任何单个数字(如0,1,2,......)和特殊字符(如$,%,+, - .....等)也被视为字符并以字符类型分配变量,你只需要将它们放在single quotes 。 例如,以下语句定义了一个字符类型变量ch ,我们为其赋值'a' -

char ch = 'a';

这里, ch是一个字符类型的变量,它可以保存实现的字符集的字符, 'a'被称为character literal或字符常量。 不仅是a,b,c,....而且当任何数字如1,2,3 ......或任何特殊字符如!,@,#,#,$,....保存在单引号内,那么它们将被视为字符文字并可以分配给字符类型的变量,因此以下是有效的声明 -

char ch = '1';

字符数据类型占用8位内存,这意味着您可以将任何内容存储在ASCII值介于-127到127之间的字符中,因此它可以保存256个不同值中的任何一个。 字符数据类型可以存储键盘上可用的任何字符,包括特殊字符,如!,@,#,#,$,%,^,&,*,(,),_,+,{,}等。

请注意,您只能在单引号内保留单个字母或单个数字,并且单引号内不允许使用多个字母或数字。 所以C语言编程中的以下语句无效 -

char ch1 = 'ab';
char ch2 = '10';

下面给出了一个简单的例子,它展示了如何用C编程语言定义,分配和打印字符 -

#include <stdio.h>
int main() {
   char  ch1;
   char  ch2;
   char  ch3;
   char  ch4;
   ch1 = 'a';      
   ch2 = '1';
   ch3 = '$';
   ch4 = '+';  
   printf( "ch1: %c\n", ch1);
   printf( "ch2: %c\n", ch2);
   printf( "ch3: %c\n", ch3);
   printf( "ch4: %c\n", ch4);
}

这里,我们使用%c来打印字符数据类型。 执行上述程序时,会产生以下结果 -

ch1: a
ch2: 1
ch3: $
ch4: +

转义序列 (Escape Sequences)

许多编程语言都支持一种名为Escape Sequence的概念。 当一个字符前面有反斜杠(\)时,它被称为转义序列,它对编译器有特殊意义。 例如,以下语句中的\ n是有效字符,它被称为换行符 -

char ch = '\n';

这里,字符n前面有一个反斜杠(\),它具有特殊含义,这是一个新行,但请记住,反斜杠(\)只有几个字符才有特殊含义。 以下陈述不会在C编程中传达任何含义,它将被视为无效陈述 -

char ch = '\1';

下表列出了C编程语言中可用的转义序列 -

逃脱序列 描述
\t 此时在文本中插入一个选项卡。
\b 此时在文本中插入退格。
\n 此时在文本中插入换行符。
\r 此时在文本中插入回车符。
\f 此时在文本中插入换页。
\' 此时在文本中插入单引号字符。
\" 此时在文本中插入双引号字符。
\\ 此时在文本中插入反斜杠字符。

以下示例显示了编译器如何解释print语句中的转义序列 -

#include <stdio.h>
int main() {
   char  ch1;
   char  ch2;
   char  ch3;
   char  ch4;
   ch1 = '\t';      
   ch2 = '\n';
   printf( "Test for tabspace %c and a newline %c will start here", ch1, ch2);
}

执行上述程序时,会产生以下结果 -

Test for tabspace     and a newline 
will start here

Java中的字符

以下是用Java编写的等效程序。 Java处理字符数据类型的方式与我们在C编程中看到的方式相同。 但是,Java为角色操作提供了额外的支持。

您可以尝试执行以下程序以查看输出,该输出必须与上述C示例生成的结果相同。

public class DemoJava {
   public static void main(String []args) {
      char  ch1;
      char  ch2;
      char  ch3;
      char  ch4;
      ch1 = 'a';      
      ch2 = '1';
      ch3 = '$';
      ch4 = '+';  
      System.out.format( "ch1: %c\n", ch1);
      System.out.format( "ch2: %c\n", ch2);
      System.out.format( "ch3: %c\n", ch3);
      System.out.format( "ch4: %c\n", ch4);
   }
}

执行上述程序时,会产生以下结果 -

ch1:  a
ch2:  1
ch3:  $
ch4:  +

Java也支持转义序列,就像在C编程中使用它们一样。

Python中的字符

Python不支持任何字符数据类型,但所有字符都被视为字符串,这是一个字符序列。 我们将在另一章中研究字符串。 在Python中使用单个字符时,您不需要任何特殊的安排。

以下是用Python编写的等效程序 -

ch1 = 'a';      
ch2 = '1';
ch3 = '$';
ch4 = '+'; 
print "ch1: ", ch1
print "ch2: ", ch2
print "ch3: ", ch3
print "ch4: ", ch4

执行上述程序时,会产生以下结果 -

ch1:  a
ch2:  1
ch3:  $
ch4:  +

Python支持转义序列的方式与在C编程中使用它们的方式相同。

Computer Programming - Arrays

考虑我们需要存储五个整数的情况。 如果我们使用编程的简单变量和数据类型概念,那么我们需要五个int数据类型的变量,程序将如下 -

#include <stdio.h>
int main() {
   int number1;
   int number2;
   int number3;
   int number4;
   int number5;
   number1 = 10;      
   number2 = 20;   
   number3 = 30;   
   number4 = 40; 
   number5 = 50;     
   printf( "number1: %d\n", number1);
   printf( "number2: %d\n", number2);
   printf( "number3: %d\n", number3);
   printf( "number4: %d\n", number4);
   printf( "number5: %d\n", number5);
}

这很简单,因为我们只需存储五个整数。 现在让我们假设我们必须存储5000个整数。 我们要使用5000个变量吗?

为了处理这种情况,几乎所有的编程语言都提供了一个名为array的概念。 数组是一种数据结构,可以存储相同数据类型的固定大小的元素集合。 数组用于存储数据集合,但将数组视为相同类型的变量集合通常更有用。

您只需声明一个整数类型的数组变量并使用number1 [0],number1 [1]和...,number1 [99]来代替单个变量,例如number1,number2,...,number99。代表个体变量。 这里,0,1,2,..... 99是与var变量相关联的index ,它们用于表示数组中可用的各个元素。

所有阵列都包含连续的内存位置。 最低地址对应于第一个元素,最高地址对应于最后一个元素。

C中的数组

创建数组

要在C中创建数组变量,程序员指定元素的类型和要存储在该数组中的元素数。 下面给出了一个在C编程中创建数组的简单语法 -

type arrayName [ arraySize ];

这称为一single-dimensional数组。 arraySize必须是大于零的整数常量, type可以是任何有效的C数据类型。 例如,现在声明一个名为number of int的10元素数组,使用此语句 -

int number[10];

这里, number是一个变量数组,足以容纳10个整数。

初始化数组 (Initializing Arrays)

您可以逐个初始化C中的数组,也可以使用单个语句,如下所示 -

int number[5] = {10, 20, 30, 40, 50};

大括号{}之间的值的数量不能大于我们在方括号[]之间为数组声明的元素的数量。

如果省略数组的大小,则会创建一个足以容纳初始化的数组。 因此,如果你写 -

int number[] = {10, 20, 30, 40, 50};

您将创建与上一示例中完全相同的阵列。 以下是分配数组的单个元素的示例 -

number[4] = 50;

上面的语句在数组中为元素编号5赋值为50.所有数组都将0作为其第一个元素的索引,也称为基本索引,数组的最后一个索引将是数组的总大小减去1.下图显示了我们上面讨论的阵列的图形表示 -

阵列演示

访问数组元素 (Accessing Array Elements)

通过索引数组名称来访问元素。 这是通过将元素的索引放在数组名称后面的方括号中来完成的。 例如 -

int var = number[9];

上面的语句将从数组中取出第10个元素,并将值赋给var变量。 以下示例使用上述所有三个概念即。 创建,分配和访问数组 -

#include <stdio.h>
int main () {
   int number[10]; /* number is an array of 10 integers */
   int i = 0;
   /* Initialize elements of array n to 0 */         
   while( i < 10 ) {
      /* Set element at location i to i + 100 */
      number[ i ] = i + 100;
      i = i + 1;
   }
   /* Output each array element's value */
   i = 0;
   while( i < 10 ) {
      printf("number[%d] = %d\n", i, number[i] );
      i = i + 1;
   }
   return 0;
}

编译并执行上述代码时,会产生以下结果 -

number[0] = 100
number[1] = 101
number[2] = 102
number[3] = 103
number[4] = 104
number[5] = 105
number[6] = 106
number[7] = 107
number[8] = 108
number[9] = 109

Java中的数组

以下是用Java编写的等效程序。 Java支持数组,但使用new运算符在Java中创建它们的方式略有不同。

您可以尝试执行以下程序以查看输出,该输出必须与上述C示例生成的结果相同。

public class DemoJava {
   public static void main(String []args) {
      int[] number = new int[10];
      int i = 0;
      while( i < 10 ) {
         number[ i ] = i + 100;
         i = i + 1;
      }
      i = 0;
      while( i < 10 ) {
         System.out.format( "number[%d] = %d\n", i, number[i] );
         i = i + 1;
      }
   }
}

执行上述程序时,会产生以下结果 -

number[0] = 100
number[1] = 101
number[2] = 102
number[3] = 103
number[4] = 104
number[5] = 105
number[6] = 106
number[7] = 107
number[8] = 108
number[9] = 109

Arrays (Lists) in Python

Python没有Array的概念,而Python提供了另一种名为list数据结构,它提供了与任何其他语言中的数组类似的功能。

以下是用Python编写的等效程序 -

# Following defines an empty list.
number = []
i = 0
while i < 10:
   # Appending elements in the list
   number.append(i + 100)
   i = i + 1
i = 0
while i < 10:
   # Accessing elements from the list
   print "number[", i,  "] = ", number[ i ]
   i = i + 1

执行上述程序时,会产生以下结果 -

number[ 0 ] =  100
number[ 1 ] =  101
number[ 2 ] =  102
number[ 3 ] =  103
number[ 4 ] =  104
number[ 5 ] =  105
number[ 6 ] =  106
number[ 7 ] =  107
number[ 8 ] =  108
number[ 9 ] =  109

Computer Programming - Strings

在我们讨论characters ,我们了解到字符数据类型处理单个字符,您可以将键盘中的任何字符分配给字符类型变量。

现在,让我们先行一点,考虑一下我们需要在变量中存储多个字符的情况。 我们已经看到C编程不允许在字符类型变量中存储多个字符。 因此,以下语句在C编程中无效并产生语法错误 -

char ch1 = 'ab';
char ch2 = '10';

我们还看到了如何使用arrays的概念在变量中存储多个相似数据类型的值。 以下是在int类型数组中存储和打印五个数字的语法 -

#include <stdio.h>
main() {
   int number[5] = {10, 20, 30, 40, 50};
   int i = 0;
   while( i < 5 ) {
      printf("number[%d] = %d\n", i, number[i] );
      i = i + 1;
   }
}

编译并执行上述代码时,会产生以下结果 -

number[0] = 10
number[1] = 20
number[2] = 30
number[3] = 40
number[4] = 50

现在,让我们以与数字相同的方式定义一个包含五个字符的数组,并尝试打印它们 -

#include <stdio.h>
main() {
   char ch[5] = {'H', 'e', 'l', 'l', 'o'};
   int i = 0;
   while( i < 5 ) {
      printf("ch[%d] = %c\n", i, ch[i] );
      i = i + 1;
   }
}

在这里,我们使用%c来打印字符值。 编译并执行上述代码时,会产生以下结果 -

ch[0] = H
ch[1] = e
ch[2] = l
ch[3] = l
ch[4] = o

如果你已经完成了上面的例子,那么我认为你理解字符串在C编程中是如何工作的,因为strings in C are represented as arrays of characters 。 C编程简化了字符串的赋值和打印。 让我们用简化的语法再次检查相同的例子 -

#include <stdio.h>
main() {
   char ch[5] = "Hello";
   int i = 0;
   /* Print as a complete string */
   printf("String = %s\n", ch);  
   /* Print character by character */
   while( i < 5 ) {
      printf("ch[%d] = %c\n", i, ch[i] );
      i = i + 1;
   }
}

这里,我们使用%s来使用数组名ch打印完整的字符串值,这实际上是保存ch变量的内存地址的开头,如下所示 -

C/C ++中的字符串表示

虽然从上面的示例中看不到它,但是C程序在内部将空字符'\0'为每个字符串的最后一个字符。 它表示字符串的结尾,这意味着如果要在数组中存储5个字符的字符串,则必须将数组大小定义为6作为一种好习惯,尽管C不会抱怨它。

如果上面的代码被编译并执行,它会产生以下结果 -

String = Hello
ch[0] = H
ch[1] = e
ch[2] = l
ch[3] = l
ch[4] = o

基本字符串概念

基于以上讨论,我们可以得出以下有关C编程语言中字符串的重要观点 -

  • C中的字符串表示为字符数组。

  • 我们可以通过将字符分配到字符数组中来构成C编程中的字符串。

  • 我们可以通过分配用双引号括起来的完整字符串来构成C编程中的字符串。

  • 我们可以使用数组下标或完整字符串通过使用不带下标的数组名来逐字符打印字符串。

  • 每个字符串的最后一个字符是空字符,即'\0'

  • 大多数编程语言提供了操作字符串的内置函数,即,您可以连接字符串,您可以从字符串中搜索,您可以从字符串中提取子字符串等。有关更多信息,您可以查看我们的详细教程。 C编程或任何其他编程语言。

Java中的字符串

虽然您可以使用字符数组来存储字符串,但Java是一种高级编程语言,其设计者试图提供其他功能。 Java提供字符串作为内置数据类型,就像任何其他数据类型一样。 这意味着您可以直接定义字符串,而不是将它们定义为字符数组。

以下是用Java编写的等效程序。 Java使用new运算符来创建字符串变量,如以下程序所示。

您可以尝试执行以下程序以查看输出 -

public class DemoJava {
   public static void main(String []args) {
      String str = new String("Hello");  
      System.out.println( "String = " + str );
   }
}

执行上述程序时,会产生以下结果 -

String = Hello

Python中的字符串

在Python中创建字符串就像使用单引号或双引号将字符串分配到Python变量一样简单。

下面给出一个简单的程序,它创建两个字符串并使用print()函数打印它们 -

var1 = 'Hello World!'
var2 = "Python Programming"
print "var1 = ", var1
print "var2 = ", var2

执行上述程序时,会产生以下结果 -

var1 =  Hello World!
var2 =  Python Programming

Python不支持字符类型; 这些被视为长度为1的字符串,因此也被视为子字符串。

要访问子字符串,请使用方括号进行切片以及索引或索引以获取子字符串。 看看以下代码段 -

var1 = 'Hello World!'
var2 = "Python Programming"
print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]

执行上述代码时,会产生以下结果 -

var1[0]:  H
var2[1:5]:  ytho

Computer Programming - 函数

函数是有组织的可重用代码块,用于执行单个相关操作。 函数为您的应用程序提供了更好的模块化,并且可以高度重用代码。 您已经看过各种函数,如printf()main() 。 这些被称为语言本身提供的内置函数,但我们也可以编写自己的函数,本教程将教你如何用C编程语言编写和使用这些函数。

关于功能的好处是它们以多个名字而闻名。 不同的编程语言对它们的命名方式不同,例如,函数,方法,子例程,过程等。如果您遇到任何此类术语,那么只需想象一下我们将在本教程中讨论的相同概念。

让我们从一个程序开始,我们将定义两个数字数组,然后从每个数组中,我们将找到最大的数字。 以下是从一组给定数字中找出最大数量的步骤 -

1. Get a list of numbers L<sub>1</sub>, L<sub>2</sub>, L<sub>3</sub>....L<sub>N</sub>
2. Assume L<sub>1</sub> is the largest, Set max = L<sub>1</sub>
3. Take next number L<sub>i</sub> from the list and do the following
4.    If max is less than L<sub>i</sub>
5.       Set max = L<sub>i</sub>
6.    If L<sub>i</sub> is last number from the list then
7.       Print value stored in max and come out
8. Else prepeat same process starting from step 3

让我们用C编程语言翻译上面的程序 -

#include <stdio.h>
int main() {
   int set1[5] = {10, 20, 30, 40, 50};
   int set2[5] = {101, 201, 301, 401, 501};
   int i, max;
   /* Process first set of numbers available in set1[] */
   max = set1[0];
   i = 1;    
   while( i < 5 ) {
      if( max <  set1[i] ) {
         max = set1[i];
      }
      i = i + 1;
   }
   printf("Max in first set = %d\n", max );
   /* Now process second set of numbers available in set2[] */
   max = set2[0];
   i = 1;    
   while( i < 5 ) {
      if( max <  set2[i] ) {
         max = set2[i];
      }
      i = i + 1;
   }
   printf("Max in second set = %d\n", max );
}

编译并执行上述代码时,会产生以下结果 -

Max in first set = 50
Max in second set = 501

如果你清楚上面的例子,那么我们就会很容易理解为什么我们需要一个函数。 在上面的示例中,只有两组数字,set1和set2,但考虑一种情况,我们有10个或更多相似的数字集来找出每组中的最大数字。 在这种情况下,我们将不得不重复,处理10次或更多次,并且最终,程序将因重复代码而变得太大。 为了处理这种情况,我们编写了函数,我们尝试保留源代码,这些源代码将在我们的编程中一次又一次地使用。

现在,让我们看看如何用C编程语言定义一个函数,然后在后面的章节中,我们将解释如何使用它们。

定义一个函数 (Defining a Function)

C编程语言中函数定义的一般形式如下 -

return_type function_name( parameter list ) {
   body of the function
   return [expression];
}

C编程中的函数定义由function headerfunction body 。 以下是函数的所有部分 -

  • Return Type - 函数可以返回值。 return_type是函数返回的值的数据类型。 某些函数执行所需的操作而不返回值。 在这种情况下,return_type是关键字void

  • Function Name - 这是Function Name的实际名称。 函数名称和参数列表一起构成函数签名。

  • Parameter List - 参数类似于占位符。 调用函数时,将值作为参数传递。 该值称为实际参数或参数。 参数列表是指函数参数的类型,顺序和数量。 参数是可选的; 也就是说,函数可能不包含任何参数。

  • Function Body - 函数体包含一组语句,用于定义函数的功能。

调用一个函数 (Calling a Function)

在创建C函数时,您可以定义函数必须执行的操作。 要使用函数,您必须调用该函数来执行已定义的任务。

现在,让我们在函数的帮助下编写上面的例子 -

#include <stdio.h>
int getMax( int set[] ) {
   int i, max;
   max = set[0];
   i = 1;    
   while( i < 5 ) {
      if( max <  set[i] ) {
         max = set[i];
      }
      i = i + 1;
   }
   return max;
}
main() {
   int set1[5] = {10, 20, 30, 40, 50};
   int set2[5] = {101, 201, 301, 401, 501};
   int max;
   /* Process first set of numbers available in set1[] */
   max = getMax(set1);
   printf("Max in first set = %d\n", max );
   /* Now process second set of numbers available in set2[] */
   max = getMax(set2);
   printf("Max in second set = %d\n", max );
}

编译并执行上述代码时,会产生以下结果 -

Max in first set = 50
Max in second set = 501

Java中的函数

如果你清楚C编程中的函数,那么在Java中也很容易理解它们。 Java编程将它们命名为methods ,但其余概念或多或少相同。

以下是用Java编写的等效程序。 您可以尝试执行它以查看输出 -

public class DemoJava {
   public static void main(String []args) {
      int[] set1 = {10, 20, 30, 40, 50};
      int[] set2 = {101, 201, 301, 401, 501};
      int max;
      /* Process first set of numbers available in set1[] */
      max = getMax(set1);
      System.out.format("Max in first set = %d\n", max );
      /* Now process second set of numbers available in set2[] */
      max = getMax(set2);
      System.out.format("Max in second set = %d\n", max );
   }
   public static int getMax( int set[] ) {
      int i, max;
      max = set[0];
      i = 1;    
      while( i < 5 ) {
         if( max <  set[i] ) {
            max = set[i];
         }
         i = i + 1;
      }
      return max;
   }
}

执行上述程序时,会产生以下结果 -

Max in first set = 50
Max in second set = 501

Python中的函数

再一次,如果您了解C和Java编程中的函数概念,那么Python就没有太大的不同。 下面给出了在Python中定义函数的基本语法 -

def function_name( parameter list ):
   body of the function
   return [expression]

在Python中使用这种函数语法,上面的例子可以写成如下 -

def getMax( set ):
   max = set[0]
   i = 1   
   while( i < 5 ):
      if( max <  set[i] ):
         max = set[i]
      i = i + 1
   return max
set1 = [10, 20, 30, 40, 50]
set2 = [101, 201, 301, 401, 501]
# Process first set of numbers available in set1[]
max = getMax(set1)
print "Max in first set = ", max
# Now process second set of numbers available in set2[]
max = getMax(set2)
print "Max in second set = ", max

执行上述代码时,会产生以下结果 -

Max in first set =  50
Max in second set =  501

Computer Programming - File I/O

计算机文件

计算机文件用于以数字格式存储数据,如纯文本,图像数据或任何其他内容。 可以在不同目录中组织计算机文件。 文件用于保存数字数据,而目录用于保存文件。

计算机文件可以被视为纸质文档的数字对应物。 编程时,将源代码保存在具有不同扩展名的文本文件中,例如,C编程文件以扩展名.c结尾,Java编程文件以.java结尾,Python文件以.py结尾。

File Input/Output

通常,您使用文本编辑器(如记事本,MS Word,MS Excel或MS Powerpoint等)创建文件。但是,很多时候,我们还需要使用计算机程序创建文件。 我们可以使用计算机程序修改现有文件。

文件输入表示写入文件的数据,文件输出表示从文件读取的数据。 实际上,输入和输出术语与屏幕输入和输出更相关。 当我们在屏幕上显示结果时,它被称为输出。 同样,如果我们从命令提示符为程序提供一些输入,那么它被称为输入。

现在,记住写入文件是文件输入并从文件中读取文件输出就足够了。

文件操作模式

在我们开始使用计算机程序处理任何文件之前,我们需要创建一个新文件(如果它不存在)或打开现有文件。 在任何一种情况下,我们都可以在以下模式下打开文件 -

  • Read-Only Mode - 如果您只想读取现有文件而又不想在文件中写入任何其他内容,则将以只读模式打开该文件。 几乎所有的编程语言都提供了以只读模式打开文件的语法。

  • Write-Only Mode - 如果要写入现有文件或新创建的文件但不想从该文件中读取任何书面内容,则将以只写模式打开该文件。 所有编程语言都提供了以只写模式打开文件的语法。

  • Read & Write Mode - 如果您要读取和写入同一文件,则将以读写模式打开文件。

  • Append Mode - 当您打开文件进行写入时,它允许您从文件的开头开始写入; 但是它会覆盖现有内容,如果有的话。 假设我们不想覆盖任何现有内容,那么我们以追加模式打开文件。 追加模式最终是一种写入模式,允许将内容附加到文件的末尾。 几乎所有的编程语言都提供了在附加模式下打开文件的语法。

在以下部分中,我们将学习如何打开一个全新的文件,如何写入它,以及后来如何阅读和添加更多内容到同一个文件中。

打开文件

您可以使用fopen()函数创建新文件或打开现有文件。 此调用将初始化FILE类型的对象,该对象包含控制流所需的所有信息。 这是原型,即此函数调用的签名 -

FILE *fopen( const char * filename, const char * mode );

这里, filename是字符串文字,您将使用它来命名文件,访问mode可以具有以下值之一 -

Sr.No 模式和说明
1

r

打开现有文本文件以供阅读。

2

w

打开文本文件进行写入。 如果它不存在,则创建一个新文件。 在这里,您的程序将开始从文件的开头编写内容。

3

a

打开文本文件以便以附加模式写入。 如果它不存在,则创建一个新文件。 在这里,您的程序将开始在现有文件内容中附加内容。

4

r+

打开文本文件以进行读写。

5

w+

打开文本文件以进行读写。 它首先将文件截断为零长度(如果存在); 否则创建文件,如果它不存在。

6

a+

打开文本文件以进行读写。 如果文件不存在,它会创建一个文件。 读数将从头开始,但只能附加写入。

关闭一个文件 (Closing a File)

要关闭文件,请使用fclose( )函数。 这个功能的原型是 -

 int fclose( FILE *fp );

如果在关闭文件时出错,则fclose( )函数在成功时返回零,或EOF ,特殊字符。 此函数实际上将缓冲区中仍未处理的任何数据刷新到文件,关闭文件,并释放用于该文件的所有内存。 EOF是头文件stdio.h定义的常量。

C标准库提供了各种功能,用于按字符或以固定长度字符串的形式读取和写入文件字符。 让我们在下一节中看到其中的一些。

写一个文件 (Writing a File)

下面给出了将单个字符写入流的最简单的功能 -

int fputc( int c, FILE *fp );

函数fputc()将参数c的字符值写入fp引用的输出流。 它返回成功写入的书面字符,否则返回EOF如果有错误)。 您可以使用以下函数将以null结尾的字符串写入流 -

int fputs( const char *s, FILE *fp );

函数fputs()将字符串s写入fp引用的文件中。 它在成功时返回非负值,否则在发生任何错误时返回EOF 。 您还可以使用函数int fprintf(FILE *fp,const char *format, ...)将字符串写入文件。 试试下面的例子 -

#include <stdio.h>
int main() {
   FILE *fp;
   fp = fopen("/tmp/test.txt", "w+");
   fprintf(fp, "This is testing for fprintf...\n");
   fputs("This is testing for fputs...\n", fp);
   fclose(fp);
}

编译并执行上述代码时,它会在/tmp目录中创建一个新文件test.txt ,并使用两个不同的函数写入两行。 我们将在下一节中阅读此文件。

Reading a File

以下是按字符读取文本文件的最简单函数 -

int fgetc( FILE * fp );

fgetc()函数从fp引用的输入文件中读取一个字符。 返回值是读取的字符; 或者在出现任何错误的情况下,它返回EOF 。 以下函数允许您从流中读取字符串 -

char *fgets( char *buf, int n, FILE *fp );

函数fgets()fp引用的输入流中读取最多n-1个字符。 它将读取的字符串复制到缓冲区buf ,附加null字符以终止字符串。

如果此函数在读取最大字符数之前遇到换行符'\ n'或EOF,则它仅返回读取到该点的字符,包括换行符。 您还可以使用int fscanf(FILE *fp, const char *format, ...)从文件中读取字符串,但在遇到第一个空格字符后它会停止读取。

#include <stdio.h>
main() {
   FILE *fp;
   char buff[255];
   fp = fopen("/tmp/test.txt", "r");
   fscanf(fp, "%s", buff);
   printf("1 : %s\n", buff );
   fgets(buff, 255, (FILE*)fp);
   printf("2: %s\n", buff );
   fgets(buff, 255, (FILE*)fp);
   printf("3: %s\n", buff );
   fclose(fp);
}

编译并执行上述代码时,它会读取上一节中创建的文件并生成以下结果 -

1 : This
2 : is testing for fprintf...
3 : This is testing for fputs...

让我们分析一下这里发生了什么。 首先, fscanf()方法读取This因为之后它遇到了一个空格。 第二个调用是fgets() ,它读取剩余的行,直到它遇到行结束。 最后,最后一次调用fgets()完全读取第二行。

Java中的文件I/O.

Java提供了更丰富的函数集来处理文件I/O. 有关此主题的更多信息,我们建议您查看我们的Java教程。

在这里,我们将看到一个简单的Java程序,它相当于上面解释的C程序。 该程序将打开一个文本文件,在其中写入几行文本,然后关闭该文件。 最后,打开相同的文件,然后从已创建的文件中读取。 您可以尝试执行以下程序以查看输出 -

import java.io.*;
public class DemoJava {
   public static void main(String []args) throws IOException {
      File file = new File("/tmp/java.txt");
      // Create a File
      file.createNewFile();
      //  Creates a FileWriter Object using file object
      FileWriter writer = new FileWriter(file); 
      // Writes the content to the file
      writer.write("This is testing for Java write...\n");
      writer.write("This is second line...\n");
      // Flush the memory and close the file
      writer.flush();
      writer.close();
      // Creates a FileReader Object
      FileReader reader = new FileReader(file); 
      char [] a = new char[100];
      // Read file content in the array
      reader.read(a);
      System.out.println( a );
      // Close the file
      reader.close();
   }
}

执行上述程序时,会产生以下结果 -

This is testing for Java write...
This is second line...

Python中的文件I/O.

以下程序显示了相同的功能,可以打开一个新文件,将一些内容写入其中,最后读取相同的文件 -

# Create a new file
fo = open("/tmp/python.txt", "w")
# Writes the content to the file
fo.write( "This is testing for Python write...\n");
fo.write( "This is second line...\n");
# Close the file
fo.close()
# Open existing file
fo = open("/tmp/python.txt", "r")
# Read file content in a variable
str = fo.read(100);
print str
# Close opened file
fo.close()

执行上述代码时,会产生以下结果 -

This is testing for Python write...
This is second line...

Computer Programming - Summary

感谢您耐心等待本教程。 我们试图保持简洁,但由于这个主题包含几个主题,我们已经详细展示了一些例子。

如果您还没有理解任何概念,那么我们建议您再次阅读本教程,一旦您对本教程中介绍的概念感到满意,您就可以继续学习。

还有许多其他与计算机编程相关的主题,我们没有故意覆盖以避免任何混淆,但我们确信只要您对本教程中解释的概念感到满意,这些概念就不难理解。

在iowiki,我们花了很多精力准备关于C,Java和Python编程语言的综合教程,我们强烈建议您在完成本教程后启动其中任何一个。

C编程 Java编程 Python编程

请与我们分享您对本教程的看法,并在webmaster@iowiki.com的主题行中提及教程名称。 如果您有任何建议可以进一步改进本教程,那么我们肯定希望收到您的来信。

↑回到顶部↑
WIKI教程 @2018