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,公益 源码编译方式不同,伪代码无被电脑编译,源代码可以被电脑编译。
3,编写方式不同,在伪代码中,每一条指令占一 行,指令后不限任啊符号,源代码一条指令客栈多行,可加符号。
在现代程序语言中,源代码可以是以书籍或者磁带的形式出现,但最为常用的有线源码格式是文本文件,这种典型格式的目的是为了编译出计算机程序。
扩展资料:
伪代码:是用介于自然语言和计算机语言之间的文字和符号(包括数学符号)来描述算法。
伪代码简单示例:输入3个数,打印输出其中最大的数。可用如下的伪代码表示:
Begin(算法开始)
输入 A,B,C
IF A>B 则 A→Max
否则 B→Max
IF C>Max 则 C→Max
Print Max
End (算法结束)
伪代码(Pseudocode)是一种算法描述语言。它不是一一种现实存在的编程语言。使用为代码的币圈源码目的是为了使被描述的算法可以容易地以任何一种编程语言(Pascal, C,Java, etc) 实现。
源程序(source code) 即代码是指未编译的按照一定的程序设计语言规范书写的文本文件。源代码(也称源程序),是指一系列人类可读的计算机语言指令。
百度百科-伪代码
[Dev] Xcode的记录
构建过程可以分为预处理(preprocess) -- 编译(build) -- 汇编(assemble) -- 连接(link)这几个大的过程。
LLVM(Low Level Virtual Machine)是强大的编译器开发工具套件,其核心思想是通过生成中间代码IR,分离前后端(前端编译器,后端目标机器码)。得物源码这样做的好处是,前端新增编译器,不用再单独去适配目标机器码,只需要生成中间代码,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-项目重命名