於我們推遲幾個星期開課,在閒餘時間我把發下來的C先自己看了一遍。之前大一學的C,過了兩年左右,很多細節的地方都忘了,這次自學梳理可以說把一些細節重新記了起來。而且由於結合了IOS看,也掌握了一些新的小知識。IOS開發是以OC語言爲基礎的,而OC語言又是以C爲基礎的,所以C的基礎是非常重要的。
第一天開課,我也是實在沒想到老師以迅雷不及掩耳的速度講了6章的書,很多沒有基礎的同學可能學不過來,幸好我有自己花時間去看,還勉強跟得上。
總結一下第一天講的內容:
一、講述了OC語言的基本數據類型。
OC語言的數據類型其實主要常用的跟C是差不多的,無非是整型,浮點型,字符型,字符串,數組,值得注意的是OC裏面沒有多維數組,但是也可以多層數組嵌套來實現相應功能。OC除了自定義結構體,裏面還多了一點系統定義好的一些結構體,如NSRange(表示範圍),CGPoint(表示一個點的座標),CGSize(表示寬高),CGRect(前兩者的結合體,因爲確定了中心點座標和兩邊的寬和高,所以可以用於定義一個圖案),其實這些結構體看似多和複雜,我們其實是可以通過按住commond鍵再去用鼠標點擊,看裏面關於這個結構體的說明(這個需要有C語言的基礎纔可以看懂),這樣我們就不會怕記不住這麼多系統自定義的結構體。
以下是代碼
由
二、講述了OC語言的程序結構
OC的程序結構無非是順序結構、分支條件結構,循環結構,跟C可以說是完全一樣,所以這部分有C基礎的可以說秒懂,開始學的人,我認爲主要還是熟悉下C爲主。
//
// main.m
// oc_001
//
// Created by ibokan2 on 16/7/29.
// Copyright (c) 2016年 RICK_Liu. All rights reserved.
//
#import <Foundation/Foundation.h>
enum Weekdays{
Monday, //0
Tuesday,//1
Wednesday,//2
Thursday,//3
Friday,
Saturday,
Sunday,
};
typedef enum {
Red,
Orange,
Yellow,
Green,
Blue,
Dian,
Purple
}Color;
//程序的入口,一個程序有且只有一個main函數
int main(int argc, const char * argv[]) {
@autoreleasepool {
//輸出語句
NSLog(@"Hello, World!");
//oc中常用的數據類型,NS
NSInteger age = 25; // 整型
NSUInteger age1=25; //無符號整型,大於0的整型
CGFloat score=3.141592635; //浮點型
NSRange range; //表示範圍的結構體
CGPoint point; //座標點 CGPoint=x+y;
CGSize size; //寬高 CGSize=width+height;
CGRect rect; //NSRect=CGPoint+CGSize;
NSString *string=@"My name is Rick";
char c=[string characterAtIndex:3];
NSLog(@"%@,Hello everybody",string);
NSLog(@"c=%c",c);
NSLog(@"%.4f",score);
/*
常用的格式化表示符
%d 整形
%f 浮點型
%m.nf 浮點數(保留n位小數)
%c 字符
*/
//在OC裏面,沒有多維數組,只有數組嵌套數組,要求數組裏面每一個都是對象
NSArray *array=@[@1,@2,@3,@4];
NSDictionary *dictionary=@{@"name":@"Rick",@"age":@25};
NSDate *date= [NSDate date];//美國日期
NSData *data=[NSData data];//二進制數據
//NSURL 網址
//NSOperationQueue 線程
// NSThread 線程
//dispatch_async(<#dispatch_queue_t queue#>, <#^(void)block#>) 線程
/*
1.以字母、下劃線開頭,中間可以包含數字,但是不能以數字開頭;
2.可以使用美元符號開頭($),但是不建議;
3.見名知意;
4.不可以使用系統保留字;
*/
NSInteger xxx;
NSInteger value1;
NSInteger valuevalue;
NSInteger _value;
// NSInteger 2value;(x)
/*
OC語言中的程序結構
1.順序結構:從上而下,按代碼逐步執行;
2.分支結構:根據條件的不同,執行不同的程序語句;if語句 switch case語句
3.循環結構:在特定的條件下,重複執行代碼若干次
*/
/*
分支結構 if語句 switch case語句
if(表達式){
語句塊
}
if(表達式){
語句塊
}
else{
語句塊
}
if(表達式){
語句塊
}
else if(表達式){
語句塊
}
*/
if (3<4) {
NSLog(@"條件成立");
}
if (/* DISABLES CODE */ (3)>4) {
NSLog(@"條件成立");
}
else {
NSLog(@"條件不成立");
}
NSInteger a=5;
if(a>4 && a<=6){ // ||非 &&與
NSLog(@"a在[4,6]範圍內");
}
else if (a>6&&a<=10){
NSLog(@"a在[6,10]範圍內");
}
else{
NSLog(@"a > 10");
}
/*
switch算法結構
switch(表達式){
case 整型常量值1;
語句塊
break;
case 整型常量值1;
語句塊
break;
case 整型常量值1;
語句塊
break;
}
*/
switch(1){
case 1:
NSLog(@"Monday");
break;
case 2:
NSLog(@"Tuesday");
break;
case 3:
NSLog(@"Wednesday");
break;
case 4:
NSLog(@"Thursday");
break;
case 5:
NSLog(@"Friday");
break;
case 6:
NSLog(@"Saturday");
break;
case 7:
NSLog(@"Sunday");
break;
default:break;
}
// 枚舉是一個被命名的整型函數的集合
enum Weekdays day;
day = Monday;
switch (day) {
case Monday:
NSLog(@"Monday");
break;
case Tuesday:
NSLog(@"Tuesday");
break;
case Wednesday:
NSLog(@"Wednesday");
break;
case Thursday:
NSLog(@"Thursday");
break;
case Friday:
NSLog(@"Friday");
break;
case Saturday:
NSLog(@"Saturday");
break;
case Sunday:
NSLog(@"Sunday");
break;
default:
break;
}
Color chooseColor = Yellow;
switch (chooseColor) {
case Red:
NSLog(@"Red");
break;
case Orange:
NSLog(@"Orange");
break;
case Yellow:
NSLog(@"Yellow");
break;
case Green:
NSLog(@"Green");
break;
case Blue:
NSLog(@"Blue");
break;
case Dian:
NSLog(@"Dian");
break;
case Purple:
NSLog(@"Purple");
break;
default:
break;
}
// 四則運算
char opr ;
NSInteger value11;
NSInteger value12;
NSInteger result;
NSLog(@"請輸入運算符:");
scanf("%c",&opr);
if(opr=='+'|| opr=='-'|| opr=='*'|| opr=='/'){
NSLog(@"請輸入兩個整數:");
scanf("%ld%ld",&value11,&value12);
switch (opr) {
case '+':
result=value11+value12;
break;
case '-':
result=value11-value12;
break;
case '*':
result=value11*value12;
break;
case '/':
if(value12 == 0){
NSLog(@"除數不能爲0");
break;
}
result = value11/value12;
break;
default:
NSLog(@"no match");
break;
}
NSLog(@"%ld",result);
return 0;
}else {
NSLog(@"請輸入正確的運算符!");
}
return 0;
}
}