以下内容,均来自:http://www.cnblogs.com/xymwbc/archive/2011/06/10/2077630.html
前言:
在这里,翻译Dan Walker的Learn Objective-C 这个系列作为我学习Objective-C的开始,由于第一次翻译技术文章,欢迎指正……
教程详细:
技术:Objective-C 难度:初学者 完成时间:30-60分钟
什么是Objective-C?
我需要什么?
编译你的代码
附言:
编译是一个将高级语言(例如Objective-C或PHP)翻译成低级机器编码的一个过程,以便让计算机执行。
这命令行程序在Mac操作系统里被称作终端,可以在Applications->Utilities里找到。好吧,现在打开终端(你也可以在Spotlight里搜索到)。为了妥善的使用终端,有几个基本命令你是应该要了解的。其中一个最重要的命令是cd,它代表”改变目录“的意思。也就是说这命令允许我们改变终端读取系统文件的目录。在我们告诉终端要编译的文件的地址之前,我们是无法让终端去编译我们的文件的。然而,为了切换到所需要的目录,你可以使用完整的路径,例如:
1. cd /Users/MyName/Desktop/Test
同样,你也可以用相对路径,在某些情况下先键入一个单个文件夹的名称。例如,当你选择了桌面的文件夹,你便可以输入:
1. cd Test
来取得这个Test文件夹。
如果你想知道你当前的目录,这最近的文件夹名称是显示在光标之前的文件夹名称(即你要键入的光标处)。例如,你的提示是:Dan-Walkers-MacBook:Desktop iDemonix$ .这样我就可以预想到我在桌面这里。如果你没有确定,你也可以键入pwd,这样就可以显示出你当前位置的绝对路径了。
如果你想列出当前文件夹的文件和文件夹,要用列表命令ls。最后,如果你想跳跃到父目录的话,可以键入"cd.."。所以,当我们在Test文件夹(这文件夹在桌面),并且我们想转到桌面文件夹,这时可以键入cd.. 来转到父目录上。如果我们想转到根目录上,我们可以键入cd../.. ,这样就可以到达两者的平衡。然而作为另一种选择,我们可以在任何的目录下使用cd~转到根目录。
当使用终端程序,编译如下:
1. gcc inputfile.m -o outputfile
1. ./outputfile
基础知识
1. #include <</span>stdio.h>
2. int main(){
3. printf("Hello World\n");
4. return 0;
5. }
当你运行上面程序的时候,你会看到"Hello World”,并退出。
附言:
1. gcc program1.m -o program1
你的程序应该顺利编译,好吧,运行它吧,只需要键入下面命令:
1. ./program1
然后按回车。
变量
- int ---用来存储整数的(就是没有小数点的数)
- char---用来存储字符
- float---用于存储带小数的数字
- double---和float相似,但是双精度的
1. 123 + 2 = 125
大家都知道这个常量表达式:123+2是等于125 的,不管什么情况下都是。如果我们把一个常量换成一个变量,这新的表达式是这样的:
1. 123 + i = ?
1. #include <</span>stdio.h>
2. int main(){
3. int someNumber = 123;
4. printf("My number is %i \n", someNumber);
5. return 0;
6. }
上面,我们已经告诉了printf()函数我们整数显示的位置,然而它又是怎样找到这位置的呢?这和很多语言不同,例如PHP,你可以把变量放在文本里。
然而我们并不仅仅限制只有一个变量出现在printf()函数里,它可以接受多个用逗号分隔的变量,所以呢,我们可以通过更多在规格化文本里的标记。如上,我们使用了 %i 作为一个转化标记,因为我们使用了一个整型。其他的变量也有它各自的格式说明符哟:
- %i---integer
- %f---float
- %e---double
- %c---char
假设现在有一条11个字符的句子(像"Hello World”---别忘了空格字符哟),一个字符串就像11个字符粘合在一起的串。这意思着,这字符串的整体代表"Hello World”,然而char[0]代表'H’。在方括号里的值代表下一个字符,因为我们是从0开始的。请记住了哟,在阵列之中,通常是以0开头的,而不是 1。
条件
1. #include <</span>stdio.h>
2. int main()
3. {
4. if(1 == 1) { // This is always true
5. // Do some stuff here
6. }
7.
8. return 0;
9. }
如果1是等于1,这样就执行括号之间的。也许,你会为用两个等号(==)而感到不解。使用==是一种平等的操作符,以检查这两个东东是否一样。然而,我们使用一个等号(=),这样就意思着我们试图着给另一个赋值了。
1. int main(){
2. if(1==1){
3. // Do some stuff here.
4. }
5. else{
6. // The universe is broken!
7. }
8.
9. return 0;
10. }
循环
1. // if loop
2. int main () {
3. int i = 9;
4. int x = 0;
5.
6. for (x = 0; x <</span> i; x++){
7. printf("Count is: %i\n", x);
8. }
9.
10. return 0;
11. }
1. // while loop
2. int main () {
3. int x = 0;
4. while (x <</span> 10){
5. printf("Count is: %i\n", x); //Watch OUT! Something is missing.
6. }
7.
8. return 0;
9. }
类似于for 循环,while 循环执行括号里的代码块直到条件为假时结束。既然x为0,然后我们也不去改变它的值,所以呢,上面的代码会一直执行,出现了一个死循环。如果你想让 x 增加,那么,你可以在括号之间这样做:
1. // while loop
2. int main () {
3. int x = 0;
4. while (x <</span> 10){
5. x++;
6. printf("Count is: %i\n", x);
7. }
8.
9. return 0;
10. }
do 循环是本质上也是while 循环,只是条件判断执行在代码块之后。当个体do循环的时候,这意味着循环只少执行一次。
1. // do loop
2. int main () {
3. int x = 0;
4. do {
5. x++;
6. printf("Count is: %i\n", x);
7. } while(x <</span> 10);
8.
9. return 0;
10. }
指针
1. int foo = 123; // This is an integer variable
2. int *ptr = &foo; // This is a pointer to an integer variable
还是难理解?不用担心。指针是比较难掌握的,往往被认为是学习C语言的难点。指针最终会成为第二大特性,这也将会有更多的在以后的Objective-C系列中提到。
结束语
挑战