C语言学习记录(一)

一、知识要点(程序设计概述)

1、程序与程序设计语言

  • 概念:程序就是给计算机下一系列指令,使其完成任务。而编写这些指令就是程序设计。
  • 程序设计语言
    • 第一代程序设计语言(1GL):机器语言

      • 以二进制编码形式的机器基本指令集为基础的语言,称为机器语言。
      • 机器语言直接针对计算机硬件,所以速度很快,但是编写起来非常繁琐、复杂,且容易出错,修改困难。
    • 第二代程序设计语言(2GL):汇编语言
      • 人们用与代码指令意思相近的英文缩写词、字母和数字取代二进制码,这种程序语言叫做汇编语言
      • 汇编语言仍是面向机器的语言,还是比较复杂,但是用其编写的程序占内存少,运行速度快
      • 需要汇编程序将汇编符号翻译成机器语言。
    • 第三代程序设计语言(3GL):高级语言
      • 高级语言是一种与人类自然语言相近且不面向机器的程序设计语言。
      • 用高级语言编写的程序叫做源程序,源程序必须被翻译成机器代码后才能运行。
      • 编译方式:先将源程序完全翻译后,再运行。使用比较方便,效率较高。
      • 解释方式:一边翻译源程序一边运行,效率比较低,但是修改很灵活。
      • 早期的高级语言大多是面向过程的,很注重整个程序的执行方向。现在很多都是面向对象,不用在意子程序在程序中的位置。C++就是面向对象的程序设计语言。
    • 第四代程序设计语言(4GL):面向问题语言
      • 建立在面向过程之上,写代码时,只要寥寥几句,就可以让4GL包办了。
      • 4GL应比3GL提高生产率一个数量级以上;4GL只需告知计算机做什么,而不必告诉计算机该怎么做;4GL应有良好的用户界面,简单易学,使用灵活;4GL应具有生命性,不能适用范围太窄。

2、算法概述

  • 概念:为解决一个问题而采取的方法和步骤就叫算法。

    • 程序=数据结构+算法,其中数据结构就是数据的类型和数据的组织形式,是对程序中数据的描述。算法则是对程序中操作步骤的描述。
    • 程序设计的本质就是要将算法转化为计算机程序
  • 算法的表示方法
    • 使用自然语言描述算法:这种方法容易掌握,但有些操作不宜表述清楚,还可能造成歧义。
    • 使用流程图描述算法:传统流程图的一个主要不足就是流程线的用法缺乏规范,容易导致错误。人们设计的N-S流程图由于没有流程线,不能随意转换控制,算法按照从上到下,从左到右的方向执行,具有结构化的特点。
    • 使用伪代码描述算法:伪代码是一种主要采用自然语言,同时采用高级程序语言的基本控制结构来描述算法的执行顺序。虽然伪代码不如流程图直观,但是用它写出的算法容易转化为程序代码。

3、结构化程序设计方案

  • 结构化程序基本控制结构:以模块化设计为中心,将要编写的软件划分为几个相互独立的子模块,每一个模块的功能单纯、明确。

    • 顺序结构:是依次执行的结构,每条指令都必须执行,且只执行一次。
    • 选择(分支)结构:选择结构根据逻辑判断的结果,做不同的处理。
    • 循环结构:在循环结构中,当条件满足时,反复执行某语句,知道条件不满足时为止。
  • 结构化程序设计的原则和步骤
    • 原则

      • 自上而下:设计程序时,先考虑全局,再考虑细节;先考虑全局目标,再考虑局部目标。一开始不要追求太多细节,先从顶层总目标设计,逐步把问题具体化。
      • 逐步细化:对于复杂的问题,要把一些子目标设计成过渡,逐步细化。
      • 模块化:一个复杂的问题必须由许多稍微简单的问题组成。模块化就是把程序要解决的总目标分解成子目标,再进一步分解成具体的小目标,把每个小目标称为一个模块。
      • 限制goto语句的使用
    • 步骤:问题分析→建立数学模型→算法设计→程序编码→测试→建立程序文档(写注释)

问题解答

1、什么是程序设计?——编写指令,然后让计算机执行指令就是程序设计。

2、低级语言和高级语言的主要区别是什么?——低级语言面向机器,编写复杂困难但执行速度快。而高级语言在一定程度上与计算机硬件无关。

3、为什么说算法是程序的灵魂?——算法由数据结构和算法构成,数据结构相当于原材料,而算法则把这些材料组合起来了。

4、结构化程序设计的基本思想是什么?——将一个大程序拆分成一个个独立的子程序,然后再细化编写,直至各个小问题获得解决为止。

C语言学习记录(一)的更多相关文章

  1. 学习iOS笔记第一天的C语言学习记录

    c语言基础学习 int num1 = 15; int num2 = 5; int temp = 0; //先把num1放到temp里 temp = num1; //先把num2放到num1里 num1 ...

  2. C语言学习记录_2019.02.10

    sizeof:给出某个类型或某个变量在内存中占据的字节数:(1个字节8位,即8比特) 格式符 (1)%ld表示数据按十进制有符号长型整数输入或输出. (2)%d表示数据按十进制有符号整型数输入或输出. ...

  3. C语言学习记录

    思路: 工具书: <c程序设计语言> R&K <linux C 编程一站式学习>

  4. Arduino语言学习记录(持续更新)

    几天前某宝买了一套,这几天没工夫.今天开始学学这个“玩具”. 1.Arduino的变量数据类型: 数据类型  数据类型 RAM 范围 void keyword N/A N/A boolean 1 by ...

  5. C语言学习记录之二

    各种语句及编程笔记记录 1.if & else #include<stdio.h> int main(){     int if (situation) {         //m ...

  6. C语言学习记录_2019.02.23

    char类型的输出: scanf("%d",&i);//i=49; char x=i; printf("x=%d\n",x); printf(" ...

  7. C语言学习记录_2019.02.07

    C99开始,可以用变量来定义数组的大小:例如,利用键盘输入的变量来定义数组大小: 赋值号左边的值叫做左值: 关于数组:编译器和运行环境不会检查数组下标是否越界,无论读还是写. 越界数组可能造成的问题提 ...

  8. C语言学习记录_2019.02.05

    switch只能判断整数,而分段函数的判别是一个范围,我们无法用整数来表示范围 跟踪语句的方法: (1)debug调试 (2)printf( )语句跟踪 小套路:当循环次数很大时,可以先模拟较小次数的 ...

  9. C语言学习记录_2019.02.04

    逻辑性变量的定义符:bool,在C语言中只有true和false: 定义方式:bool t = true; 逻辑运算符: !:逻辑非 &&:逻辑与 ||:逻辑或 表达区间的错误形式:4 ...

  10. C语言学习记录_2019.02.02

    变量在第一次被使用之前应该赋初值 scanf(“%d”,&price); scanf(“price%d %d”,&price);  scanf中的东西一定是要输入的东西. 定义常量:c ...

随机推荐

  1. 使用JsonTextReader提高Json.NET反序列化的性能

    一.碰到的问题 在服务器的文件系统上有一个业务生成的BigTable.json文件,其可能包含的JSON字符串很大,同时里边的集合会包含很多的记录:我们使用以下的代码来反序列化,虽然使用了异步的Rea ...

  2. CF1736C1 Good Subarrays (Easy Version)

    题目传送门 思路 给出一种不需要脑子的做法. 首先我们把每个 \(a_i\) 都减去 \(i\),这样原问题就转化为对于每一个左端点 \(i\),寻找一段连续的区间,使得这段区间的最小值加上 \(i- ...

  3. 内网安全之:Windows系统帐号隐藏

    Windows系统帐号隐藏 目录 Windows系统帐号隐藏 1 CMD下创建隐藏账户 2 注册表创建隐藏账户 3 利用工具隐藏账户 1 CMD下创建隐藏账户 CMD下创建隐藏账户 net user ...

  4. “堆内存持续占用高 且 ygc回收效果不佳” 排查处理实践

    作者:京东零售 王江波 说明:部分素材来源于网络,数据分析全为真实数据. 一. 问题背景 自建的两套工具,运行一段时间后均出现 内存占用高触发报警,频繁young gc且效果不佳.曾经尝试多次解决,因 ...

  5. Java 反射概念的引入

    反射是什么 学Java的人都知道类概念,反射技术就是一种控制类的技术,JAVA程序在运行时,通过反射这个技术,能动态的获取到类实例的信息.创建实体类.操作实体类. 反射的功能列表: 获取任意类的名称. ...

  6. LeetCode-630 课程表Ⅲ

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/course-schedule-iii 题目描述 这里有 n 门不同的在线课程,按从 1 到 n  ...

  7. 【10】java之final关键字

    1.使用final 定义的变量就变成了常量,常量必须在定义的时候就设置好内容且不能修改. public static final 声明的就是全局常量. public static final Stri ...

  8. @FileLimit – AOP最佳实践:上传文件大小限制

    @FileLimit 结构分析 1.FileLimitUnit 定义枚举:文件的单位 public enum FileLimitUnit { KB, MB, GB } 2.定义注解 import or ...

  9. LP1-5:接口测试方法

  10. 代码随想录训练营day 3|59.螺旋矩阵II 加 数组总结篇

    59.螺旋矩阵II 题目链接:59.螺旋矩阵II 题目描述:给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵. 示例: 输入: 3 输出: [ [ 1 ...