【从零开始的 C 语言笔记】第三篇-基本的程序结构介绍 & 列印三角形

不怎麽重要的前言

上一篇我们学会怎麽创建档案,也运行了我们的第一个程序,接下来会介绍上次的程序码,分析一个最基本的程序结构是什麽,最後我们来做个小作业,来列印一些「Hello World!」之外的东西吧!

然後我想大家都知道,不管学习什麽事物,一定要多去尝试与变化才能学得更多,能更好学习新的东西也更好理解。

还是再次重申,这篇教学文比较适合不太会使用电脑/程序设计经验0/对程序语言抱持恐惧或是不知从何下手,但仍然想学习想尝试看看的人,所以会很繁琐很简单,也会附上很多图文步骤,已经有一些基础的人是不太适合的。


基本的程序结构介绍

我们要先知道程序码是一行一行由上而下接着执行的,而上次我们使用的程序码在这里:

#include <stdio.h>

int main(){
    printf("Hello World!\n");
    
    return 0;
}

我们大致分成这样来解释:
https://ithelp.ithome.com.tw/upload/images/20211007/20142565MKhTeKWHvK.png

  1. 上段的部分--引入函式库:
#include <stdio.h>

我们大致分成这样来解释:
https://ithelp.ithome.com.tw/upload/images/20211007/20142565L3MLHVL0Yo.png

(1) 我们可以使用这个「#include」来引入其他的函式库档案函式库就像是别人做好的工具包,会包含了很多方便使用的函式(工具),而我们可以藉由在程序码的开头使用「#include」,来取得函式库才能在接下来的程序码中使用它包含的函式

#include

(2) 而後面stdio.h」,则是被引入的函式库,「stdio.h」是一个C语言的标准输入输出函式库(可以当成基础工具包),而我们会称这个.h的档案为标头档(Header)。

#include <stdio.h>

在 「#include」之後使用「< >」引入文件时,它会去include的预设目录寻找档案;而如果使用「" "」引入文件时,则会在档案所在之目录寻找档案。(若有兴趣可以参考此连结)

  1. 和下段的部分--主函式:
int main(){
    printf("Hello World!\n");
    
    return 0;
}

我们大致分成这样来解释:
https://ithelp.ithome.com.tw/upload/images/20211007/20142565A61rB6PZN3.png

(1) 我们会称被以下这个「{ }」所包含的部分为主函式,它是这个程序的主体也是最主要的核心,而结尾部分的「return 0;」是我们习惯用来确认执行时程序有好好结束(而详细原因我们在之後会说)。

int main(){
    
    return 0;
}

(2) 而被这个主程序包含的内容中,这个「printf("Hello World!\n");」的部分,是让我们能在运行(run)後看到「Hello World!」的工程,我们也称「printf( );」为一个列印的函式

printf("Hello World!\n");

(结尾的\n是换行符号)

  1. 最後是写C语言程序码的重要规则,在结束一行程序码时我们会用「;」作为结尾,因为C语言其实并不强制换行与缩排,所以在结尾时加上「;」是非常重要的事情,会影响程序码能不能被好好执行;而包裹主函式内容的「{ }」,则是表示被包裹的部分为前段程序码的body(或是说为block),而在包含的部份我们会习惯缩排(通常是按tab一下),虽然并不强制但会很影响程序的阅读性(之後会在说明怎麽增加程序阅读性)。
    https://ithelp.ithome.com.tw/upload/images/20211007/20142565hoQJTtnfN2.png

来测试一下printf吧!

前面我们有讲到「printf();」是用来列印的程序码,所以我们使用「printf("Hello World!\n");」来列印出「Hello World!」,不知道你们有没有用它来试着列印一点别的东西,透过修改「" "」内的内容就可以列印出你想要的东西了。

不管有没有,我们都来列印看看下面的三角形吧,可以试着用不同的写法来完成喔!

*
**
***
****
*****

(要记得\n可以换行呀!)


辛苦看到这里的你们,不知道有没有对程序结构比较了解了呢?

下一篇我们来介绍运算子(+ - * / %)并实际使用看看吧!


<<:  [Q1][STM32G4系列] TIMER观察 - 使用TIMER触发ADC,透过DMA方式结合

>>:  开放最短路径优先 (OSPF)

Day 8 - 目前(传统)的机器学习三步骤(3)-训练

第三步 Training : 训练并验证,找出最佳结果 挑选[学习演算法] 什麽是演算法(Algor...

【学习笔记-CSS】background 各属性

CSS-background各属性 共用的css 写在最上面 body { margin: 0; b...

【第16天】训练模型-DenseNet201

摘要 DenseNet201 1.1 来源 1.2 架构 1.3 特性 训练过程 2.1 预训练模型...

Day05 - Python基本语法 Part 2,关於「集合」

接续昨天的基本语法,今天将主要集中在「集合」的内容整理。 范例程序主要来自於W3Schools。 集...

CSS微动画 - 不使用图片制作「加到最爱」开关按钮

Q: 请问icon要怎麽出图好呢? A: 一定要用图片吗? 本篇要实作的是「加到最爱」的按钮,结合...