1.cè¯è¨ç¨åºä»£ç 大å
¨(cè¯è¨ç¨åºç¼ç¨ä»£ç 大å
¨)
2.源代码与伪代码有何不同?
3.[Dev] Xcode的记录
cè¯è¨ç¨åºä»£ç å¤§å ¨(cè¯è¨ç¨åºç¼ç¨ä»£ç å¤§å ¨)
cè¯è¨ç¨åºä»£ç
Cè¯è¨æºä»£ç ï¼å°±æ¯ä¾æ®Cè¯è¨è§åæååºçç¨åºä»£ç ï¼å¸¸è§çåå¨æ件æ©å±å为.cæ件å.hæ件ï¼åå«å¯¹åºCæºæ件(sourcefile)åC头æ件(headerfile)ã
Cè¯è¨æ¯ä¸é¨ç¼ç¨è¯è¨ï¼ç®åç¹è¯´ï¼å°±æ¯ç±äººç±»ä¹¦åæç §ä¸å®è§è书åçå符ï¼éè¿ä¸å®æ段ï¼ç¼è¯é¾æ¥ï¼è½¬æ¢åï¼å¯ä»¥è®©çµèæè å ¶å®çµåè¯çï¼è¯»æï¼ï¼å¹¶æç §å ¶è¦æ±å·¥ä½çè¯è¨ãå¨ææçç¼ç¨è¯è¨ä¸ï¼Cè¯è¨æ¯ç¸å¯¹å¤èèåå§çï¼åæ¶ä¹æ¯å¨åç±»è¯è¨ä¸æ´æ¥è¿ç¡¬ä»¶ï¼æ为é«æçç¼ç¨è¯è¨ã
ç¸å ³å 容ï¼
Cè¯è¨æ¯ä¸é¨é¢åè¿ç¨ç计ç®æºç¼ç¨è¯è¨ï¼ä¸C++ãC#ãJavaçé¢å对象ç¼ç¨è¯è¨ææä¸åãCè¯è¨ç设计ç®æ æ¯æä¾ä¸ç§è½ä»¥ç®æçæ¹å¼ç¼è¯ãå¤çä½çº§åå¨å¨ãä» äº§çå°éçæºå¨ç 以åä¸éè¦ä»»ä½è¿è¡ç¯å¢æ¯æ便è½è¿è¡çç¼ç¨è¯è¨ã
Cè¯è¨æè¿°é®é¢æ¯æ±ç¼è¯è¨è¿ éãå·¥ä½éå°ãå¯è¯»æ§å¥½ãæäºè°è¯ãä¿®æ¹å移æ¤ï¼è代ç è´¨éä¸æ±ç¼è¯è¨ç¸å½ãCè¯è¨ä¸è¬åªæ¯æ±ç¼è¯è¨ä»£ç çæçç®æ ç¨åºæçä½%-%ãå æ¤ï¼Cè¯è¨å¯ä»¥ç¼åç³»ç»è½¯ä»¶ã
å½åé¶æ®µï¼å¨ç¼ç¨é¢åä¸ï¼Cè¯è¨çè¿ç¨é常ä¹å¤ï¼å®å ¼é¡¾äºé«çº§è¯è¨åæ±ç¼è¯è¨çä¼ç¹ï¼ç¸è¾äºå ¶å®ç¼ç¨è¯è¨å ·æè¾å¤§ä¼å¿ã计ç®æºç³»ç»è®¾è®¡ä»¥ååºç¨ç¨åºç¼åæ¯Cè¯è¨åºç¨ç两大é¢åãåæ¶ï¼Cè¯è¨çæ®éè¾å¼ºï¼å¨è®¸å¤è®¡ç®æºæä½ç³»ç»ä¸é½è½å¤å¾å°éç¨ï¼ä¸æçæ¾èã
Cè¯è¨æ¥æç»è¿äºæ¼«é¿åå±åå²çå®æ´çç论ä½ç³»ï¼å¨ç¼ç¨è¯è¨ä¸å ·æ举足轻éçå°ä½ã
cè¯è¨è·ªæ±æç®åçæ±åç¨åºä»£ç
ä¸é¢æ¯Cè¯è¨ä¸çä¸ä¸ªæç®åçæ±åç¨åºï¼
Copycode#includestdio.h
intmain()
{
intnum1=1,num2=2,sum;
sum=num1+num2;
printf("两æ°ä¹å为ï¼%d",sum);
return0;
}
å¨è¿ä¸ªç¨åºä¸ï¼æ们å®ä¹äºä¸¤ä¸ªæ´ååénum1ånum2ï¼å¹¶å°å®ä»¬ç¸å å¾å°sumãæåè¾åºäºsumçå¼ã
è¿ä¸ªç¨åºæ¯æç®åçæ±åç¨åºä¹ä¸ï¼åªæ¶åå°ä¸¤ä¸ªæ°åçç¸å æä½ï¼é常æäºç解åæä½ãä½æ¯ï¼éè¦æ³¨æçæ¯ï¼å¨å®é ç¼åå¤æçç¨åºæ¶ï¼è¿éè¦å¦ä¹ æ´å¤çCè¯è¨ç¥è¯åæå·§ã
cè¯è¨å¿ è代ç æåªäºï¼1ã/*è¾åº9*9å£è¯ãå ±9è¡9åï¼iæ§å¶è¡ï¼jæ§å¶åã*/
#include"stdio.h"
main()
{ inti,j,result;
for(i=1;i;i++)
{ for(j=1;j;j++)
{
result=i*j;
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对é½ï¼å 3ä½*/
}
printf("\n");/*æ¯ä¸è¡åæ¢è¡*/
}
}
2ã/*å¤å ¸é®é¢ï¼æä¸å¯¹å åï¼ä»åºçå第3个æèµ·æ¯ä¸ªæé½çä¸å¯¹å åï¼å°å åé¿å°ç¬¬ä¸ä¸ªæåæ¯ä¸ªæåçä¸å¯¹å åï¼åå¦å åé½ä¸æ»ï¼é®æ¯ä¸ªæçå åæ»æ°ä¸ºå¤å°ï¼
å åçè§å¾ä¸ºæ°å1,1,2,3,5,8,,....*/
main()
{
longf1,f2;
inti;
f1=f2=1;
for(i=1;i=;i++)
{ printf("%ld%ld",f1,f2);
if(i%2==0)printf("\n");/*æ§å¶è¾åºï¼æ¯è¡å个*/
f1=f1+f2;/*å两个æå èµ·æ¥èµå¼ç»ç¬¬ä¸ä¸ªæ*/
f2=f1+f2;/*å两个æå èµ·æ¥èµå¼ç»ç¬¬ä¸ä¸ªæ*/
}
}
3ã/*å¤æ-ä¹é´æå¤å°ä¸ªç´ æ°ï¼å¹¶è¾åºææç´ æ°åç´ æ°ç个æ°ã
ç¨åºåæï¼å¤æç´ æ°çæ¹æ³ï¼ç¨ä¸ä¸ªæ°åå«å»é¤2å°sqrt(è¿ä¸ªæ°)ï¼å¦æè½è¢«æ´é¤ï¼
å表ææ¤æ°ä¸æ¯ç´ æ°ï¼åä¹æ¯ç´ æ°ã*/
#include"math.h"
main()
{
intm,i,k,h=0,leap=1;
printf("\n");
for(m=;m=;m++)
{ k=sqrt(m+1);
for(i=2;i=k;i++)
if(m%i==0)
{ leap=0;break;}
if(leap)/*å 循ç¯ç»æåï¼leapä¾ç¶ä¸º1ï¼åmæ¯ç´ æ°*/
{ printf("%-4d",m);h++;
if(h%==0)
printf("\n");
}
leap=1;
}
printf("\nThetotalis%d",h);
}
4ã/*ä¸ä¸ªæ°å¦ææ°å¥½çäºå®çå åä¹åï¼è¿ä¸ªæ°å°±ç§°ä¸º"å®æ°"ãä¾å¦6=1ï¼2ï¼3.ç¼ç¨
æ¾åºä»¥å çææå®æ°ã*/
main()
{
staticintk[];
inti,j,n,s;
for(j=2;j;j++)
{
n=-1;
s=j;
for(i=1;ij;i++)
{ if((j%i)==0)
{ ?n++;
s=s-i;
k[n]=i;
}
}
if(s==0)
{ printf("%disawanshu:?",j);
for(i=0;in;i++)
printf("%d,",k[i]);
printf("%d\n",k[n]);
}
}
}
5ã/*ä¸é¢ç¨åºçåè½æ¯å°ä¸ä¸ª4Ã4çæ°ç»è¿è¡éæ¶éæ转度åè¾åºï¼è¦æ±åå§æ°ç»çæ°æ®éæºè¾å ¥ï¼æ°æ°ç»ä»¥4è¡4åçæ¹å¼è¾åºï¼
请å¨ç©ºç½å¤å®åç¨åºã*/
main()
{ ?int?a[4][4],b[4][4],i,j;?/*aåæ¾åå§æ°ç»æ°æ®ï¼båæ¾æ转åæ°ç»æ°æ®*/
printf("inputnumbers:");
/*è¾å ¥ä¸ç»æ°æ®åæ¾å°æ°ç»aä¸ï¼ç¶åæ转åæ¾å°bæ°ç»ä¸*/
for(i=0;i4;i++)
for(j=0;j4;j++)
{ ?scanf("%d",a[i][j]);
b[3-j][i]=a[i][j];
}
printf("arrayb:\n");
for(i=0;i4;i++)
{ ?for(j=0;j4;j++)
printf("%6d",b[i][j]);
printf("\n");
}
}
6ã/*ç¼ç¨æå°ç´è§æ¨è¾ä¸è§å½¢*/
main()
{ inti,j,a[6][6];
for(i=0;i=5;i++)
{ a[i][i]=1;a[i][0]=1;}
for(i=2;i=5;i++)
for(j=1;j=i-1;j++)
a[i][j]=a[i-1][j]+a[i-1][j-1];
for(i=0;i=5;i++)
{ for(j=0;j=i;j++)
printf("%4d",a[i][j]);
printf("\n");}
}
7ã/*éè¿é®çè¾å ¥3åå¦ç4é¨è¯¾ç¨çæ绩ï¼
åå«æ±æ¯ä¸ªå¦ççå¹³åæ绩åæ¯é¨è¯¾ç¨çå¹³åæ绩ã
è¦æ±æææ绩åæ¾å ¥ä¸ä¸ª4è¡5åçæ°ç»ä¸ï¼è¾å ¥æ¶åä¸äººæ°æ®é´ç¨ç©ºæ ¼,ä¸å人ç¨å车
å ¶ä¸æåä¸ååæåä¸è¡åå«æ¾æ¯ä¸ªå¦ççå¹³åæ绩ãæ¯é¨è¯¾ç¨çå¹³åæ绩åç级æ»å¹³ååã*/
#includestdio.h
#includestdlib.h
main()
{ floata[4][5],sum1,sum2;
inti,j;
for(i=0;i3;i++)
for(j=0;j4;j++)
scanf("%f",a[i][j]);
for(i=0;i3;i++)
{ sum1=0;
for(j=0;j4;j++)
sum1+=a[i][j];
a[i][4]=sum1/4;
}
æ±è¡ç®åCè¯è¨ç¨åºä»£ç ï¼åºç¡ç就好#includestdio.h
#includestdlib.h
#defineNUM
/*runthisprogramusingtheconsolepauseroraddyourowngetch,system("pause")orinputloop*/
//å泡æåºç®æ³
//åºæ¬ææ³ï¼æ¯è¾ç¸é»ç两个æ°ï¼å¦æåè æ¯åè 大ï¼åè¿è¡äº¤æ¢ãæ¯ä¸è½®æåºç»æï¼éåºä¸ä¸ªæªæåºä¸æ大çæ°æ¾å°æ°ç»åé¢ã
voidbubbleSort(int*arr,intn){
inti,j;
for(i=0;in-1;i++)
for(j=0;jn-i-1;j++){
//å¦æåé¢çæ°æ¯åé¢å¤§ï¼è¿è¡äº¤æ¢
if(arr[j]arr[j+1]){
inttemp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
//æå·®æ¶é´å¤æ度为O(n^2),å¹³åæ¶é´å¤æ度为O(n^2)ã稳å®æ§ï¼ç¨³å®ãè¾ å©ç©ºé´O(1)ã
//å级çå泡æåºæ³ï¼éè¿ä»ä½å°é«éåºæ大çæ°æ¾å°åé¢ï¼åä»é«å°ä½éåºæå°çæ°æ¾å°åé¢ï¼
//å¦æ¤åå¤ï¼ç´å°å·¦è¾¹çåå³è¾¹çéåãå½æ°ç»ä¸æå·²æåºå¥½çæ°æ¶ï¼è¿ç§æåºæ¯ä¼ ç»å泡æåºæ§è½ç¨å¥½ã
//å级çå泡æåºç®æ³
voidbubbleSort_1(int*arr,intn){
//设置æ°ç»å·¦å³è¾¹ç
intleft=0,right=n-1;
//å½å·¦å³è¾¹çæªéåæ¶ï¼è¿è¡æåº
while(left=right){
inti,j;
//ä»å·¦å°å³éåéåºæ大çæ°æ¾å°æ°ç»å³è¾¹
for(i=left;iright;i++){
if(arr[i]arr[i+1]){
inttemp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
}
}
right--;
//ä»å³å°å·¦éåéåºæå°çæ°æ¾å°æ°ç»å·¦è¾¹
for(j=right;jleft;j--){
if(arr[j+1]arr[j]){
inttemp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
left++;
}
}
intmain(intargc,char*argv[]){
intarr[NUM],i,j,temp;
printf("请è¾å ¥ä¸ªæ°ï¼\n");
for(i=0;iNUM;i++){
printf("请è¾å ¥ç¬¬(%d)个æ°ï¼",i+1);
scanf("%d",arr[i]);
}
printf("\nè¾å ¥å¦ä¸æåï¼\n");
for(i=0;iNUM;i++){
printf("%4d",arr[i]);
}/
*for(i=0;iNUM;i++){
for(j=i+1;jNUM;j++){
if(arr[i]arr[j]){
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}*/
bubbleSort_1(arr,NUM);
/*printf("\nä»å°å°å¤§å¦ä¸æåï¼\n");
for(i=0;iNUM;i++){
printf("%4d",arr[i]);
}*/
printf("\nä»å¤§å°å°å¦ä¸æåï¼\n");
for(i=NUM-1;i=0;i--){
printf("%4d",arr[i]);
}
return0;
}
cè¯è¨ç¼ç¨ä»£ç 两ç§æ¹æ³æåå¨ä¸èµ·ï¼å¯ä»¥ç¬ç«æå¼ã
#includestdio.h
voidfinda1(chara[3][]);
voidfinda2(chara[3][]);
voidshow(char(*p)[]);
intmain()
{
chara[3][]={ { "gehajl"},{ "aa7"},{ "ccabbbabbb"}};printf("åæ°ç»å 容:\n");show(a);printf("\n1ãç¨æ°ç»æéçæ¹æ³ï¼å½æ°finda1ï¼ï¼\n");finda1(a);printf("æ§è¡å:\n");show(a);printf("\n---------------------\n");charb[3][]={ { "gehajl"},{ "aa7"},{ "ccabbbabbb"}};printf("åæ°ç»å 容:\n");show(a);printf("\n2ãç¨æéæ°ç»çæ¹æ³ï¼å½æ°finda2ï¼ï¼\n");finda2(b);printf("æ§è¡å:\n");show(b);return0;}
voidfinda1(chara[3][])
{
inti,j;char(*p)[]=a;for(i=0;i3;i++)for(j=0;j;j++)if(p[i][j]=='a')printf("åç°ï¼ç¬¬%dè¡ç¬¬%d个å ç´ æ¯âaâï¼å·²æ¿æ¢\n",i+1,j+1),p[i][j]='1';}
voidfinda2(chara[3][])
{
inti,j;char*p[3]={ a[0][0],a[1][0],a[2][0]};for(i=0;i3;i++)for(j=0;j;j++)if(p[i][j]=='a')printf("åç°ï¼ç¬¬%dè¡ç¬¬%d个å ç´ æ¯âaâï¼å·²æ¿æ¢\n",i+1,j+1),p[i][j]='1';}
voidshow(char(*p)[])
{
inti,j;for(i=0;i3;i++,printf("\n"))for(j=0;j;j++)printf("%c",p[i][j]);}
源代码与伪代码有何不同?
区别:1,面对对象不同,伪代码是方便程序员便于理解,源代码是面对电脑,使电脑编译。
2,spark源码演示编译方式不同,伪代码无被电脑编译,源代码可以被电脑编译。
3,编写方式不同,在伪代码中,每一条指令占一 行,指令后不限任啊符号,源代码一条指令客栈多行,可加符号。
在现代程序语言中,源代码可以是以书籍或者磁带的形式出现,但最为常用的lua软件源码格式是文本文件,这种典型格式的目的是为了编译出计算机程序。
扩展资料:
伪代码:是用介于自然语言和计算机语言之间的文字和符号(包括数学符号)来描述算法。
伪代码简单示例:输入3个数,打印输出其中最大的数。可用如下的伪代码表示:
Begin(算法开始)
输入 A,B,C
IF A>B 则 A→Max
否则 B→Max
IF C>Max 则 C→Max
Print Max
End (算法结束)
伪代码(Pseudocode)是一种算法描述语言。它不是一一种现实存在的编程语言。使用为代码的coretemp源码windows目的是为了使被描述的算法可以容易地以任何一种编程语言(Pascal, C,Java, etc) 实现。
源程序(source code) 即代码是指未编译的按照一定的程序设计语言规范书写的文本文件。源代码(也称源程序),是指一系列人类可读的计算机语言指令。
百度百科-伪代码
[Dev] Xcode的记录
构建过程可以分为预处理(preprocess) -- 编译(build) -- 汇编(assemble) -- 连接(link)这几个大的过程。
LLVM(Low Level Virtual Machine)是强大的编译器开发工具套件,其核心思想是通过生成中间代码IR,分离前后端(前端编译器,后端目标机器码)。google 日历源码这样做的好处是,前端新增编译器,不用再单独去适配目标机器码,只需要生成中间代码,LLVM就可以生成对应的目标机器码。下面就是LLVM的架构。
预处理:头文件引入、宏替换、注释处理、棋牌 麻将源码条件编译等操作;
词法分析:读入源文件字符流,组成有意义的词素(lexeme)序列,生成词法单元(token)输出;
语法分析:Token流解析成一颗抽象语法树(AST);
CodeGen:遍历语法树,生成LLVM IR代码,这是前端的输出文件;
汇编:LLVM对IR进行优化,针对不同架构生成不同目标代码,以汇编代码格式输出;
汇编器生成.o文件:将汇编代码转换为机器代码,输出目标文件(object file);
连接器:将目标文件和(.dylib、.a、.tbd、.framework)进行连接,生成可执行mach-o文件。
dwarf:debugging with attribute record formats,一种源码调试信息的记录格式,用于源码级调试;
dSym:debug Symboles,调试符号,即符号表文件。符号对应着类、函数、变量等,是内存与符号如函数名、文件名、行号等的映射,崩溃日志解析非常重要。可以用dwarfdump 命令来查看dwarf调试信息。
DW_AT_low_pc表示函数的起始地址 DW_AT_high_pc表示函数的结束地址 DW_AT_frame_base表示函数的栈帧基址 DW_AT_object_pointer表示对象指针地址 DW_AT_name表示函数的名字 DW_AT_decl_file表示函数所在的文件 DW_AT_decl_line表示函数所在的文件中的行数 DW_AT_prototyped为一个 Bool 值, 为 true 时代表这是一个子程序/函数(subroutine) DW_AT_type表示函数的返回值类型 DW_AT_artificial为一个Bool值,为true时代表这是一个由编译器生成而不是源程序显式声明
使用symbolicatecrash命令行
使用dwarfdump和atos工具
xcode-project-file-format这里对xcodeproj文件格式进行了说明。
xcodeproj文件包含以下元素
总体说明
结合上面的说明,对project.phxproj文件结构进行说明
项目中setting有2处,project和target中都有,那么他们之间的关系是怎样的?
在Xcode中添加代码块步骤
1、选择代码,右键选择 create code snippet,或者在顶部导航,选择Editor-create code snippet;
2、编辑信息和代码即可,其中completion表示输入的快捷方式;
3、需要修改的参数用形式添加 ;
4、所在目录~/Library/Developer/Xcode/UserData/CodeSnippets 。
还需要注意xcshareddata目录下
参考
Xcode build过程中都做了什么 Xcode编译疾如风-3.浅谈 dwarf 和 dSYM iOS崩溃日志解析&原理 - 掘金 LLVM编译流程 & Clang插件开发 8. Xcode 工程文件解析 - 掘金 XCode工程文件结构及Xcodeproj框架的使用( 二 ) XCode: Target Settings和Project Settings的区别 Xcode-项目重命名