黑马程序员技术交流社区

标题: 想开个帖子,谈一谈我对C和OC的认知与理解(姑且认为是笔记吧) [打印本页]

作者: Latinno    时间: 2016-4-12 15:01
标题: 想开个帖子,谈一谈我对C和OC的认知与理解(姑且认为是笔记吧)
我觉得一楼不水不合适。

但细水要长流,权当在自学UI的同时复习基础课好了。

欢迎各路高手前来指教。

以下内容将不定期更新。
作者: Latinno    时间: 2016-4-12 15:30
其实说到C,我觉得C语言本身是作为一种基础性的语言,到没有什么具体的笔记框架可言。

我不妨就不按照所谓的框架去梳理C了,就从学习编程基础的感受想到哪说哪吧。

编程,在我看来,就是一个与计算机进行沟通与交流的过程,而这个过程的目的就是为了让计算机能够为我们辅助做一些事情。

所以,想要让计算机代替我们做事情,最重要的就是交流了。C作为一门计算机语言,就好比我们所学的自然语言一样,能够作为沟通的桥梁,让我们交代清楚我们的需求,进而让计算机代替我们去完成一些事情。

其实想了想,计算机这玩意儿还真是靠谱,比在社会中交的朋友靠谱多了。只要你给它配置够足够的硬件需求,软件能够兼容匹配,驾驭这些东西,然后给供电,它们就是输入者最忠实的伙伴。所以,想要让计算机成为你最忠实的朋友,就必须要深刻的了解计算机。当然,这不只是包括编程,还有关于它的习性(工作原理)。

其实嘛,我觉得这事情和追女生道理是差不多的。了解的多了,才能进行有效的沟通,进而培养双方感情。否则,我们就只会做一些一厢情愿的判断,谈崩是自然而然的结果。

说的有点远,但道理都是通的。接下来及时扣题,接着说编程。

我们所传递给计算机的一些信息,从本质上来说无非是0和1的一些东西。这就好像开关一样,能够控制计算机内部的思维回路。它们总是通过一系列密密麻麻的“开关”所给出的反馈来做出一个问题的宏观判断。

于是,人们便从机械语言,汇编语言到现在的高级语言不断的迭代,包装这个沟通的形式与过程,通过一系列的软件进行转码转码再转码,进而操作计算机来辅助为我们工作。这些软件,他们充当着站在程序员与计算机之间翻译者,通过具体的转码,将我们所输入的我们好理解与能看懂的语言逐步的迭代转换,转变成了计算机能够理解的0和1。

于是,集成编译器什么的就自然出现了。而C语言,作为毛毛多的高级语言大军之一的主力,也成为了我们需要学习的一大板块语言。

总之,我觉得所谓高级语言的编程,本质上依旧是按照逻辑来堆叠的0和1的东西。
作者: Latinno    时间: 2016-4-12 15:44
那么说到了0和1这种数字,我想我们就需要对数字进行一些了解了。

而提到数字,我第一个想到的就是变量了。

C里面我直观的有印象的变量是如下几种:

int,double/float,char

指针(如char *)

数组(array[],OC:NSArray)

字符串(char * char[]  OC:NSString)

结构体struct(OC常见:NSRange,NSPoint/CGpoint,NSSize/CGSize,CGRect 等)

枚举型enum(常和typedef搭配使用,额,貌似typedef并不算是预处理指令)

共用体union

还有两种是(long/short)&(signed/unsigned)

我理解的是——那些可以装很多东西的变量类型,统统都是构造类型的变量

从变量的作用域来分,又可以分为全局变量/局部变量  

当然OC里面还有个玩意儿叫成员变量,默认是被保护的


作者: Latinno    时间: 2016-4-12 15:56
Latinno 发表于 2016-4-12 15:44
那么说到了0和1这种数字,我想我们就需要对数字进行一些了解了。

而提到数字,我第一个想到的就是变量了。 ...

不给分了就不想写了。。。

明天继续,接着去撸UI了。
作者: Aliu    时间: 2016-4-12 21:10
自学的视频吗?
作者: 缘之有缘    时间: 2016-4-12 22:12
学习了                 
作者: Latinno    时间: 2016-4-13 13:23
Aliu 发表于 2016-4-12 21:10
自学的视频吗?

嗯,自学完了。

不过自学完了之后就是入坑的开始了。。。Foundation里的内容实在是太多了。。。

现在正在做入学测试,不知道等我要去面试的时候,按照现在的水平会不会出问题啊。。。

所以这两天也想开个帖子,梳理一下我现在学过的东西,并且查找一下目前知识的疏漏点。
作者: Aliu    时间: 2016-4-13 15:34
Latinno 发表于 2016-4-13 13:23
嗯,自学完了。

不过自学完了之后就是入坑的开始了。。。Foundation里的内容实在是太多了。。。

你是想直接报就业班?
作者: Latinno    时间: 2016-4-14 22:14
Aliu 发表于 2016-4-13 15:34
你是想直接报就业班?

嗯,直接报就业班,今天面试完了。
作者: Latinno    时间: 2016-4-14 22:16
今天面试完了,觉得C还是很重要的。虽然问的都是基础问题,但觉得面试老师给的提问,分布面都是挺广泛的。
作者: Aliu    时间: 2016-4-14 22:21
Latinno 发表于 2016-4-14 22:16
今天面试完了,觉得C还是很重要的。虽然问的都是基础问题,但觉得面试老师给的提问,分布面都是挺广泛的。 ...

嗯,你扣扣多少啊?
作者: Latinno    时间: 2016-4-14 22:33
今天就说说判断语句和循环语句吧。

判断语句包括if&switch

从字面意思上理解 if很简单  就是”如果“的意思

格式:

if(判断条件)
符合判断条件后执行的语句;

if经常与else搭配 也有else if的搭配用法  其实else if的功能效果是和if一样的  但是添加else之后 会让程序看起来更像一段话

最后就是else的用法了  这个表示上面的语句全部都不适用的情况下才执行  其实我觉得这个也是可有可无的 毕竟不影响正常使用

然后就是switch的用法了

其实switch在以后的作用会更大一些  至少写出来的东西整齐好看  我觉得在OC中写方法的时候会用的比较多

switch的格式这里就不细说了  大体上就是三个关键字的搭配使用

switch case break

当然,要注意的是,switch中如果没有break的情况下,程序会一直循环执行下去。可谓“switch break不分家”



作者: Latinno    时间: 2016-4-14 22:40
循环的话  我觉得用得最多的就是for循环了

当然 还有一个是while & do while

但后两者都可以被for循环来代替  只是要根据需要来缺省掉两个分号分出来的三个区域了

当然  for循环还有一个重大的作用  那就是拿来遍历一些数据

这个在OC里用的也是蛮多的

而且在OC里  针对NSArray的遍历元素  有自己独特的写法

比如:

NSArray *arr = @[@1, @3, @4, @45];

for(id obj in arr)
NSLog(@"%@",obj);

这样就能够遍历出arr数组里的所有OC对象了
作者: Latinno    时间: 2016-4-14 22:41
Aliu 发表于 2016-4-14 22:21
嗯,你扣扣多少啊?

有事在贴子里问就行了  我现在也正在刷分
作者: Aliu    时间: 2016-4-14 22:44
Latinno 发表于 2016-4-14 22:41
有事在贴子里问就行了  我现在也正在刷分

好吧,跟着视频学真的够进班的考试吗,我虽然自己有看但还是有点虚~
作者: Latinno    时间: 2016-4-14 23:07
Aliu 发表于 2016-4-14 22:44
好吧,跟着视频学真的够进班的考试吗,我虽然自己有看但还是有点虚~

我觉得还是可以的

只要学的足够好 问题应该都不大

只是自学需要付出的代价很多

第一 要有足够的自制力  其实自制力并不是最重要的  兴趣才是最好的老师

第二 要能够忍受孤独 自己学就意味着要长时间的自己坐在电脑前 边学边敲代码  而且还要去勤于思考 理解代码的真正含义  以及写代码的人的实现意图 真正的孤独 是源自于自身的修行  这一点其实在基础班应该也是这样 其实我认为过分依赖基础班营造的氛围 跟着气氛与客观条件而影响自己的学习  这也是没有认识清楚为什么要去学习

第三 自学真的比较浪费时间 如果有东西不理解的话  自学是很容易被拖节奏的

希望这些我的认知能帮到你吧  最后的选择权还是在你手中
作者: Aliu    时间: 2016-4-14 23:19
Latinno 发表于 2016-4-14 23:07
我觉得还是可以的

只要学的足够好 问题应该都不大

嗯,听你这么说也不是完全不行,是得考努力和自律。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2