![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程范式
_pureheart
这个作者很懒,什么都没留下…
展开
-
编程方式6 笔记 stack
int栈typedef struct{ int* elems; int logicallen;//当前元素个数 int alloclength;//最大容量}stack;void StackNew(stack* s);void StackDespose(stack* s);void StackPush(stack* s,int value);int StackPop(原创 2017-09-04 13:39:44 · 293 阅读 · 0 评论 -
编程范式 17 笔记 并行化
哲学家吃饭Samphore fork[]={1,1,1,1,1};Samphore numAllToEat(2);void Philosepher(int id){ for(int i=0;i<3;i++){ Think(); sw(numAllToEat); sw(forks[id]) sw(forks[(id+1)%5原创 2017-09-19 13:24:10 · 558 阅读 · 0 评论 -
编程范式11 笔记
指针swap 汇编void foo(){ int x; int y; x=11; y=17; swap(&x,&y);}按照指针传递话引用传递的汇编是一样的SP=SP-8;M[SP+4]=11;M[SP]=17;R1=SP;//&yR2=SP+4;//&xSP=SP-8;M[SP]=R2;M[SP+4]=R1;CALL<swap>;SP=原创 2017-09-11 16:14:18 · 363 阅读 · 1 评论 -
编程范式 22 笔记 函数式编程递归
power set包含所有子集的集合 幂集 In computer programming, car /kɑːr/ (About this sound listen) and cdr (/ˈkʌdər/ (About this sound listen) or /ˈkʊdər/ (About this sound listen)) are primitive operations on cons原创 2017-09-28 14:02:32 · 358 阅读 · 0 评论 -
编程范式12 笔记 编译预处理 宏展开
宏#define w 40#define h 80#define pere 2*(w+h)#define MAX(a,b) (a>b?a:b)MAX(10,40)//预处理替换为(10>40?10:40)//速度比函数快//而且不需要管类型MAX(40.2,"Hello")//报错#define func(a,b,c) ((char*)a+b*c) assert是个宏#ifdef N原创 2017-09-12 12:20:29 · 231 阅读 · 0 评论 -
编程范式 18 冰淇淋商店
clerks 40 cones 10 customers 每人吃1-4个冰淇淋 FIFO manager不同意要重做 同时只能有一个clerk和manager见面 cashier 需要四类线程managerclerkscustomerscashierint main(){ int totalCones=0; InitThreadPackage(); Se原创 2017-09-20 12:44:38 · 393 阅读 · 0 评论 -
编程范式3 笔记 struct 内存模型
上一次课讲的short s=45;double d=*(doubule *)&s;结果在大端机器和小端机器上是一样的struct 内存模型struct fraction{ int num; int denum;}fraction pi;pi.num=22pi.denum=7;(fraction *)&(pi.denum)->num=12;//从denum可以得到frac原创 2017-08-29 14:54:48 · 336 阅读 · 0 评论 -
编程范式23 笔记
memory model> '(1 2 3)有一个1 2 3的链表 返回首地址>(define seq '(1 2 3))>(car seq)1>(cdr seq)//跳到指针域2 3>(cons '(1 2 3)'(4 5 6))cons的memory model 指向数据域两次的list ((lambda(x)(cons x x))'(1 2))泛型map>(map car '((原创 2017-09-29 12:57:04 · 377 阅读 · 0 评论 -
编程范式19 函数范式与Scheme
过程 C OO C++ 函数范式是面向函数返回值的函数式编程简介参考 http://blog.csdn.net/wwj_ff/article/details/48031567lisp语法参考 http://blog.csdn.net/zhutulang/article/details/51233918函数式编程的优点作者:nameoverflow 链接:https://www.zhihu原创 2017-09-21 13:13:49 · 250 阅读 · 0 评论 -
编程范式 24 python
def getherDivisors(number): divisors=[]; for dir in range(0,number+1); if number%dir==0: divisors.append(dir) return divisors;原创 2017-09-30 13:30:44 · 310 阅读 · 0 评论 -
编程范式16 笔记 信号量
void SellTickets(int i,int TicketsToSell,int numTickets,Samephore lock){ while(True){ /*临界区开始*/ SamephoreWait(lock); (*numTickets)--; SamephoreSignal(lock);原创 2017-09-18 14:12:05 · 499 阅读 · 0 评论 -
编程范式5 笔记 泛型
linear&binary searchvoid *lsearch(void* key,void base,int n,int elemSize, int (*cmpfn)(void *,void *)){ for(int i<0;i<n;i++) { void* elemAddr=(char*)base+i*elemSize; //要显式指明指针类原创 2017-08-31 14:24:36 · 278 阅读 · 0 评论 -
编程范式21
>(double-all `(1 2 3 4))(2 4 6 8)>(incr-all `(1 2 3 4))(2 3 4 5)(define (double x)(* x 2))(define (incr x)(+ = 1))map>(map double '(1 2 3 4))(2 4 6 8)evalhttps://www.ibm.com/developerworks/cn/linu原创 2017-09-25 12:56:51 · 238 阅读 · 0 评论 -
编程范式7 笔记 泛型栈
typedef struct{ void* elems; int elemSize; int logicallen; int alloclength;}stack;void StackNew(stack* s,int elemSize);void StackDespose(stack* s);void StackPush(stack* s,void* elemA原创 2017-09-05 13:35:04 · 239 阅读 · 0 评论 -
编程范式2 笔记
Low-level memory mechanics C/C++类型 大小 bool 比较复杂,可以为1bit char 1B short 2B int 4B long 4B float 4B double 8Bbit(binary digit) 1B可以有2^8=256个取值 ord(A)=65=64+1=0b01000001原创 2017-08-28 13:21:20 · 225 阅读 · 0 评论 -
编程范式8 笔记 C/C++内存
heap在低地址malloc分配heap的地址int* arr=malloc(40*sizeof(int));160B(实际164B或者168B,多出来的在头部,用于记录大小等信息,但是返回的指针是在这个头的后面) 执行free函数时,指针会机械地回退4B or 8B 获取大小信息,并且free掉后面相应大小的内容int* arr=malloc(100*sizeof(int));free(arr原创 2017-09-06 13:36:51 · 223 阅读 · 0 评论 -
编程范式13 笔记
C的编译链接运行#include<stdio.h>#include<stdlib.h>#include<assert.h>int main(){ void *mom=malloc(foo); assert(mom!=NULL); printf("Year!\n"); free(mum); return 0;}gcc后会产生.o文件 然后连接产生可执原创 2017-09-13 13:41:02 · 373 阅读 · 0 评论 -
编程范式14 笔记
void foo(){ int array[4]; int i; for(i=0;i<=4;i++) { array[i]-=4; }}有些操作系统的内存模型不同 访问相同内存void ReclareAndInitArray(){ int array[100]; int i; for(i=0;i<100;i++)原创 2017-09-14 14:12:44 · 257 阅读 · 0 评论 -
编程范式9 笔记 伪汇编语言
example 1int i;int j;i=10;j=i+7;j++;i,j存在stack中i=10; j=i+7;M[R1+4]=10;//store operationR2=M[R1+4];//load operationR3=R2+7;//ALU operationM[R1]=R3;//storej++R2=M[R1];R2=R2+1;M[R1]=R2;example原创 2017-09-07 13:44:00 · 265 阅读 · 0 评论 -
编程范式15 笔记 并行化
并行计算假设有一个买票程序int mian(){ int Agents=10; int Tickets=150; for(int i=1;i<=Agent;i++) { SellTicket(i,Agents,Tickets) }}void SellTickets(int i,int TicketsToSell){ while(T原创 2017-09-15 13:49:52 · 340 阅读 · 2 评论 -
编程范式4 笔记 C语言泛型
swapint swap(int *ap,int *bp){ int temp=*ap; *ap=*bp; *bp=temp}写一个更加通用的形式,能交换任何东西 下面的是错误版本void swap(void* vp1,void* vp2){ void temp=*vp1; //1.不能声明void变量 //2.不能对void指针解引用,因为机原创 2017-08-30 13:54:34 · 506 阅读 · 0 评论 -
编程范式 10 笔记 函数栈帧
int foo(int bar,int* baz){ char snink[4]; short* why; why=(short *)(snink+2); *why=50; return 0; }栈信息: baz bar 存储调用函数的某些信息,谁调用了它 char snink[4] short* whyint main(int argc, char** argv){原创 2017-09-08 14:24:48 · 259 阅读 · 0 评论 -
编程范式20 函数式编程
lisp 定义函数(define sum-list (numlist) (if (null?num-list) 0 (+(car num-list) (sum-list (cdr num-list))))>(sum-list '(1 2 3 4 5))15>(sum-list '()0(define fib(n) (if(zero?n)原创 2017-09-22 12:48:40 · 216 阅读 · 0 评论