计算机和编程语言初见

news/2024/11/27 21:35:52/

学习程序设计的目的是什么呢?

不一定要做出一个软件或系统出来,更重要的是理解计算机是如何工作的以及它的长处和短处。

计算机本身是无意识的,因此我们要求它为我们做事时:应该将步骤细化、“直”化(规律化);其实计算机什么也不会,我们必须手把手地教他一步一步的做。而计算机的某个优点也正是如此——听话,你叫它往东它绝不往西。然后我们还得教计算机哪些步骤串成一个功能,而此种联系、规范就是程序!而我们通过编程语言来交流、认识计算机。

int u = 32;
int v = 26;
while(v != 0){int temp = u%v;u = v;v = temp;
}
printf("%d", u);

(“程序画”一览)

  • 计算机做的所有事情都叫 计算(万物皆数)
  • 计算的步骤就是算法

计算机的思维方式:重复

人类最讨厌做重复的事情了,而计算机恰恰相反——它最喜欢做重复的事情。在计算机的世界里当你造出第一个轮子时,那么距离造出成千上万的轮子就不远了。

编程语言单以执行方式分类:

  1. 解释:同声传译
  2. 编译:翻译出书

C 语言

C 是一种比较基础的编程语言,其后的语言几乎都是”C-like“语言。(语言的能力/适用领域主要由其函数库决定的)

变量(缓冲数据)

将一个数据用变量缓冲下来,这就能确保它能参与到后面的计算中。格式如下:

<类型名称> <变量名称>;

C 的保留字一览:

auto,break,case,char,const,continue,default,do,double,else,enum,extern,float,for,goto,ifint,long,registerreturn,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile,while,inline.restrict

所谓赋值和初始化

“=”可用作赋值,即把右边的值赋值给左边:<——

初始化:在定义的同时就已经赋值了

注意!C 是一种有类型的语言,所有变量在使用前必须定义或声明(即所有变量都应有确定的数据类型)。数据类型表明在变量可以存储什么样的数据(是一种指定规范)

 读值

scanf("%d", &price);

其中“&”是取地址符,自己可以 try 一 try!

常量(固定不变的数)

在运算过程中值不变的数就是常量(直接量 literal),以下是定义示例:

const int AMOUNT = 100;

运行逻辑

if...else

1.
if(逻辑表达式) {}2.
if(逻辑表达式) {}else {}3.
if(逻辑表达式) {}else if(逻辑表达式){...}...
逻辑表达式(条件)
运算符意义
=相等
!=不相等
>大于
>=大于或等于
<小于
<=小于或等于

循环*

  • while:不确定循环次数多用此
  • do...while:至少执行一次的循环
  • for:已确定循环次数多用此

(数据类型就不全说了,上网查吧!)

数组

数据可以存放在变量里,每一个变量有一个名字,有一个类型,还有它的生存空间。如果我们需要保存一些相同类型、相似含义、相同生存空间的数据,我们可以用数组来保存这些数据,而不是用很多个独立的变量。数组是长度固定的数据结构,用来存放指定的类型的数据。一个数组里可以有很多个数据,所有的数据的类型都是相同的。(引用一手)

const int number = 10;
int x;
int count[number];
int i;
for(i=0; i<number; i++) {count[i] = 0;
}
scanf("%d", &x);
while(x!=-1) {if(x>=0 && x<=9) {count[x]++;}scanf("%d", &x);
}
for(i=0; i<number; i++) {printf("%d:%d\n", i, count[i]);
}

函数(一块代码)y=f(x)

main() 函数是 C 语言程序的正式入口!

函数的好处:提高了代码复用性和可读性及更方便的调用调试。

函数接收0/若干个参数,做个事情并返回0/若干个值

函数原型:就是提前写出函数头而未有函数体,目的是先告诉编辑器这个函数的基本信息(参数列表定义等等)

每个函数都有自己的变量空间,其参数也位于这个独立的空间中,与其它函数无关(一般叫函数参数表中的参数为“形式参数”,而实际调用函数时给的值称作“实际参数”)

扩展:

  1. 变量的生存期和作用域
  2. 二维数组 如 int a[3][5];(通常理解为一个3行5列的矩阵)

注意!C 语言不允许函数嵌套定义

井字棋(第一个 C语言程序)

#include <stdio.h>int main() {int board[3][3] = {{0,0,0},{0,0,0},{0,0,0}};int i = 0,x,y;int result = 0; //0:没人赢,1:X赢,2:O赢int round = 0; //回合数    while (i < 50){printf("\n第%d回合开始:\n\n", ++round);show(board);printf("\nX方请选择您的横纵坐标:(中间用空格隔开)");scanf("%d %d", &x, &y);board[y][x] = 1;printf("O方请选择您的横纵坐标:(中间用空格隔开)");scanf("%d %d", &x, &y);board[y][x] = 2;if (judge(board) == 0){continue;}else if (judge(board) == 1){show(board);printf("恭喜X方胜利!");break;}else if (judge(board) == 2){show(board);printf("恭喜O方胜利!");break;}i++;}return 0;
}
int show(int board[3][3]) {for (int i = 0; i < 3; i++){for (int j = 0; j < 3; j++){if (board[i][j] == 1){printf("X    ");continue;}else if (board[i][j] == 2){printf("O    ");continue;}else {printf("_    ");continue;}}printf("\n\n");}return 0;
}
int judge(int board[3][3]){int row_numOfX = 0;int row_numOfO = 0;int col_numOfX = 0;int col_numOfO = 0;int i,j;for (i = 0; i < 3; i++){for (j = 0; j < 3; j++){if (board[i][j] == 1){row_numOfX ++;}else if (board[i][j] == 2){row_numOfO ++;}}if (board[j][i] == 1){col_numOfX ++;}else if (board[j][i] == 2){col_numOfO ++;}if (row_numOfX == 3 || col_numOfX == 3){return 1;}else if (row_numOfO == 3 || col_numOfO == 3){return 2;}}return 0;
}


http://www.ppmy.cn/news/1121460.html

相关文章

02强化学习基本概念

强化学习基本概念 前言1、State、Action、Policy等① State② Action③ State transition④ State transition probability⑤ Polity 2、Reward、Return、MDP等① Reward② Trajectory and return③ Discounted return④ Episode⑤ MDP 总结&#xff1a; 前言 本文来自西湖大学…

走心分享!天津诚筑说Java大数据培训我该如何选择?

随着互联网的发展&#xff0c;IT行业变得越来越炙手可热&#xff0c;其中较为火热的当属大数据和Java了&#xff0c;许多学员都很纠结&#xff0c;Java和大数据我应该如何选择呢?今天小编带大家了解一下Java和大数据之间的区别&#xff01; Java和大数据的关系 Java是一种面…

Android WebSocket

WS Android WebSocket 资源 名字资源AAR下载GitHub查看Gitee查看 Maven 1.build.grade allprojects {repositories {...maven { url https://jitpack.io }} }2./app/build.grade dependencies {implementation com.github.RelinRan:WS:2022.2023.9.23.1 }初始化 配置权…

day-60 代码随想录算法训练营(19)单调栈 part 03

84.柱状图中最大的矩形 思路一&#xff1a;单调栈 class Solution { public:int largestRectangleArea(vector<int>& heights) {heights.insert(heights.begin(),0);//头加0&#xff0c;防止刚开始heights.push_back(0);//尾巴上加0&#xff0c;防止一直递增最后丢…

Docker没有vim如何安装,apt-get update报ERR404解决方案

问题描述 docker容器中安装vim报错执行apt-get install vim后报错&#xff1a; E: Unable to locate package vim 更新安装源也报错docker容器中执行apt-get update后报错&#xff1a; #进入镜像命令#docker exec -it 镜像Id或镜像name /bin/bash [roottdengine ~]# docker …

用selenium和xpath定位元素并获取属性值以及str字符型转json型

页面html如图所示&#xff1a; 要使用xpath定位这个div元素&#xff0c;并且获取其属性data-config的内容值。 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.options import Optionshost127.0.0.1 port10808 …

三叠云电梯维保系统,全面提升电梯维保管理效率与质量

随着城市化进程的不断加速&#xff0c;电梯已成为现代建筑中不可或缺的交通工具。然而&#xff0c;电梯的安全和正常运行对于居民和物业公司来说至关重要&#xff0c;同时电梯维保一直是一个困扰物业管理公司和维保企业的难题。传统的维保方式因纸质记录的繁琐和错误频发&#…

服从正态分布的正弦函数、余弦函数期望

服从正态分布的正弦函数期望 服从正态分布的正弦函数、余弦函数期望。 服从正态分布的正弦函数、余弦函数期望。 如果X服从均值为 μ \mu μ&#xff0c;方差为 σ 2 \sigma^2 σ2的正态分布&#xff0c;计算sin(X)与cos(X)的数学期望。 利用特征函数(Characteristic Functio…