于我们推迟几个星期开课,在闲余时间我把发下来的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;
}
}