感性认识计算机程序(Week 4)

引入

编程序 = 给计算机设计好运行步骤

程序 = 人们用来告诉计算机应该做什么的东西

问题➡️该告诉计算机什么?用什么形式告诉?

如果要创造一门“程序设计语言“

问题1: 是不是无论什么”单词“,计算机都能明白

问题2: 是不是我们无论在程序里写什么“数”和“计算符号”,计算机都能明白?

问题3: 我们需要多少“句式”才够描述各种逻辑

答案1:NO。定义一些有特定含义的“关键字”,计算机只能明白这些字的意义。

​ 可以通过少量词定义更多词(30+关键字)

答案2:NO。定义一些“数据的类型”和相应的“操作符号”,计算机只能明白这些类型。(10+基本数据类型,30+运算符号)

答案3:顺序、分支、循环,只需要3种。

程序中的套话

#include <iostream>
using namespace std;
int main()
{
//Type your code in here
retuen 0;
}

简单的程序

定义变量,输出数据:

int a = 0;
cout<<a<<endl;

定义变量,输入数据:

int a = 0;
cout<<"请输入一个数"<<endl;
cin>>a;
cout<<"我刚刚输入的a:"<<a<<endl;

实型变量,顺序语句:

float a = 0,b = 0,temp = 0;
cout<<"Input a and b:"<<endl;
cin>>a>>b;
cout<<"a = "<<a<<",b = "<<b<<endl;
temp = a; a = b; b = temp;
cout<<"a = "<<a<<",b = "<<b<<endl;

分支语句(if语句)

int x = 0,y = 0;
cin>>x>>y;
if(x>y)
cout<<"Max number is:"<<x<<endl;
else
cout<<"Max number is:"<<y<<endl;

循环语句(for语句)

int i = 0;
cout<<"20以内的奇数: "<<endl;
for(i = 0;i < 20;i++)
{
if(i%2!=0)
cout<<i<<endl;
}

循环语句,数组

int i = 0;
char a[10] = {'a','b','c','d','e','f','g','h','i','j'}
cout<<"字母表中序号为奇数的前五个字母:"<<endl;
for(i = 0; i < 10; i=i+2)
{
cout<<a[i]<<endl;
}

综合程序,注释和缩进增加可读性

char a='';//用于存放用户输入的字母
cout<<"猜我是哪个字母,最多5次:" <<endl;
int i = 0;//用于记录猜过多少次
for(i = 0;i < 5;i++)
{
cin>>a;
if(a=='G')//如果猜中
{
cout<<"Good Job!"<<endl;
break;//终止循环
}
else //如果没有被猜中
cout<<"Wrong! Try it again!"
}

好程序的特点

  • 结果运行正确
  • 程序易于被他人看懂
  • 程序结构清楚

作业

Quiz1

实现冒泡排序

#include <iostream>
using namespace std; int main() {
int n, a[1000];//一共n个数,n不超过1000,a用来保存这些数
cin>>n;//输入n个数
for (int i = 0; i < n; i++) {
cin>>a[i];
}
//冒泡,不断比较相邻的两个数,如果顺序错了,那么就交换
for (int i = 0; i < n; i++) {
for (int j = 1; j < n-i; j++) {
if(a[j-1]>a[j])
{
int temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
}
}
}
// 依次输出
for (int i = 0; i < n; i++) {
cout<<a[i]<<endl;
}
return 0;
}

Quiz2

奇偶排序(一)

#include "iostream"
using namespace std; int main(){
int a[10];
for (int i = 0; i < 10; i++) {
cin >> a[i];
}
//首先,我们把奇数放到数组左边,偶数放到数组右边
int l = 0, r = 9;//用左手和右手分别指向数组两端
while (l <= r){
bool leftIsOdd = a[l] % 2 == 1;
bool rightIsEven = a[r] % 2 == 0;
if (leftIsOdd){
l++;
} else if (rightIsEven){
r--;
} else if (!leftIsOdd && !rightIsEven){
int temp = a[l];
a[l] = a[r];
a[r] = temp;
}
}
//对l左边(奇数部分)进行冒泡排序
int start = 0, end = l;
for (int i = start; i < end-1; i++) {
for (int j = start+1; j <start + end - i ; j++) {
if(a[j-1] > a[j]){
int temp = a[j-1];
a[j-1] = a[j];
a[j] = temp;
}
}
}
//对l右边(偶数部分)进行冒泡排序
start = l, end = 10;
for (int i = start; i < end - 1; i++) {
for(int j = start + 1; j < start + end - i;j++){
if(a[j-1] > a[j]){
int temp = a[j-1];
a[j-1] = a[j];
a[j] = temp;
}
}
}
for (int i = 0; i < 10; i++) {
cout<<a[i]<<' ';
}
return 0;
}

Quiz3

奇偶排序(二)

#include <iostream>
using namespace std; int main(){
int a[10];
for (int i = 0; i < 10; i++) {
cin>>a[i];
}
//冒泡,不断比较相邻的两个数,如果顺序错了,那么就交换
for (int i = 0; i < 9; i++) {
for (int j = 1; j < 10-i; j++) {
//与刚才的冒泡排序不同,我们不只是通过比较数字大小决定顺序
//如果左边的为偶数,右边的为奇数,顺序也是需要颠倒的
bool leftIsEven = a[j - 1] % 2 == 0;
bool rightIsEven = a[j] % 2 == 0;
if((leftIsEven && !rightIsEven) ||
(leftIsEven == rightIsEven && a[j-1]>a[j])){
int temp = a[j - 1];
a[j - 1] = a[j];
a[j] = temp;
} }
}
for (int i = 0; i < 10; i++) {
cout<<a[i]<<' ';
}
return 0;
}

Coursera课程笔记----计算导论与C语言基础----Week 4的更多相关文章

  1. Coursera课程笔记----计算导论与C语言基础----Week 6

    理性认识C程序 导论(Week 6) 明确学习进度 讲课内容 感性➡️理性➡️函数➡️指针等 作业练习 初级阶段 ➡️正常作业练习 C语言的由来 程序设计语言的分类 低级语言之机器语言 0010101 ...

  2. Coursera课程笔记----计算导论与C语言基础----Week 8

    C语言中的运算成分(Week 8) 赋值运算符 "="赋值运算符 给赋值号左边的变量赋予数值 在变量定义的同时可以为变量赋初值 要点一:两面类型不同 若=两边的类型不一致,赋值时要 ...

  3. Coursera课程笔记----计算导论与C语言基础----Week 7

    C语言中的数据成分(Week7) 内存 把内存想象成长带,带子上有许多方格,每个方格有8位(8bit) 2^10 = 1024 1B = 8 b 1KB = 1024Byte MB.GB.TB.PB- ...

  4. Coursera课程笔记----计算导论与C语言基础----Week 2

    计算机的历史与未来(Week 2) 计算机历史 早期计算机:手工计算器➡️机械计算器➡️计算机原型 现代计算机:电子管计算机➡️晶体管计算机➡️集成电路计算机➡️超大规模集成电路 早期的手工计算辅助工 ...

  5. Coursera课程笔记----计算导论与C语言基础----Week 9

    C语言中的控制成分(Week 9) 计算机程序的基本结构 任何具有单入口单出口的程序,都可以用顺序结构.分支结构.循环结构来表达 分支语句 在执行if语句前,先对表达式求解 if()内可以是任意的数值 ...

  6. Coursera课程笔记----计算导论与C语言基础----Week 3

    存储程序式计算机 冯·诺伊曼式计算机 "关于EDVAC的报告草案" 组成:控制器(协调工作).运算器(算数&逻辑运算).存储器(存储操作信息和中间结果).输入设备.输出设备 ...

  7. Coursera课程笔记----计算导论与C语言基础----Week 1

    计算机的基本原理(Week 1) 第一次数学危机 公元前500年,毕达哥拉斯学派,他们相信数是万物的本源:一切数均可表示成整数或者整数之比 然而毕达哥拉斯证明了勾股定理,某些直角三角形的三边比不能用整 ...

  8. Coursera课程笔记----计算导论与C语言基础----Week 12

    期末编程测试(Week 12) Quiz1 判断闰年 #include <iostream> using namespace std; int main() { int year; cin ...

  9. Coursera课程笔记----计算导论与C语言基础----Week 11

    C程序中的字符串(Week 11) 字符数组 所有的字符串,都是以\0结尾的 只能在数组定义并初始化的时候:char c[6] = "China"; 不能用赋值语句将一个字符串常量 ...

随机推荐

  1. 2019-07-31【机器学习】无监督学习之降维PCA算法实例 (鸢尾花)

    样本 代码: import matplotlib.pyplot as plt from sklearn.decomposition import PCA from sklearn.datasets i ...

  2. Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(八)之Polymorphism

    Polymorphism is the third essential feature of an object-oriented programming language,after data ab ...

  3. 【three.js第二课】页面自适应

    1.在[three.js第一课]的基础上加入以下代码,改变窗口大小时,页面内容会自适应 //加入事件监听器,窗口自适应 window.addEventListener('resize', functi ...

  4. 简单的Tuple声明和输出

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  5. 当文件目录变得杂乱不堪怎么办,python帮你轻松搞定

    这几天和几个小伙伴,在一起合做一个ppt. 做ppt之前有原版的ppt,和一个word大纲,在制作过程中,又不断添加图片.视频等素材,最终,整个目录变得杂乱不堪(见下图-处理之前) 那我想,可不可以做 ...

  6. L23模型微调fine tuning

    resnet185352 链接:https://pan.baidu.com/s/1EZs9XVUjUf1MzaKYbJlcSA 提取码:axd1 9.2 微调 在前面的一些章节中,我们介绍了如何在只有 ...

  7. vue2.x学习笔记(十二)

    接着前面的内容:https://www.cnblogs.com/yanggb/p/12592256.html. 组件基础 组件化是vue的一个重要特性,也是vue学习中非常重要的一个知识点. 基础示例 ...

  8. 初识phar反序列化&&复现bytectf_2019_easycms&&RSS思路

    概要 来自Secarma的安全研究员Sam Thomas发现了一种新的漏洞利用方式,可以在不使用php函数unserialize()的前提下,引起严重的php对象注入漏洞.这个新的攻击方式被他公开在了 ...

  9. anaconda 使用conda命令创建虚拟环境

    1.首先在所在系统中安装Anaconda.可以打开命令行输入conda -V检验是否安装以及当前conda的版本. 2.conda常用的命令. 1)conda list 查看安装了哪些包. 2)con ...

  10. 【FishFX】花式撩骚,打造TypeScript易用框架。

    · 栗子入手 假设有以下foo数组,数组中每个对象都拥有id,name两个属性,现在需要查找id > 0的对象数量. const foo: Array<{ id: number, name ...