6: Hàm - Class
iThanh
7 năm trướcBình luận: 44Lượt xem: 36.478
Xcode của mình là: Version 4.6.3 (4H1503)

Nếu bạn thường xuyên không có internet để cập nhật, thì dành thời gian tải 1 lần bản Xcode mới nhất 4.6.3 trên AppStore của MacOS (yêu cầu bạn phải có tài khoản iTunes).

Và ngoài ra còn phải tải các thư viện cơ bản cho Xocde nữa.
@iThanh vừa mới cập nhật lên 4.6.3 xong lun.
iThanh cho mình hỏi về cái thư viện cơ bản thì mình có thể xem ở đâu để biết mình đầy đủ hay thiếu?
Đó đơn giản chỉ là cú pháp thôi.
Để dễ diễn tả hơn, dễ chỉnh sửa, dễ hiểu, ... nói chung Apple đã thay đổi cú pháp của hàm giúp cho lập trình viên trực quan hơn.

Như các bài trước (bạn đọc lại)
- (void) -> không trả về giá trị, chỉ có chạy các đoạn code bên trong hàm.
- (int) -> trả về giá trị có kiểu là integer.
Bạn tuanhsu10, mình chưa hiểu ý của bạn.

Phương trình bậc nhất: ax + b = 0;
Nếu bạn muốn 2x + 5 = -2.5, thì bạn nên nhập: 2x + 7.5 = 0 hoặc thêm một biến c để lưu số bên phải dấu "=" mà người dùng nhập vào.
@iThanh em nghĩ ý bạn kìa là nếu a=2 và b=5 thì PT trở thành: 2x+5=0;
Vậy hẳn là kết quả x=-2.5, vậy làm sao để hiển thị kết quả là -2.5 trong khi biến a và b đều là (int)
Bài bác rất dễ hiểu.. nhưng chưa thấy mấy phần khác nhỉ.. em muốn tìm hiểu về cách hoạt động và cách thiết kế layout trên ios..
hóng bài của bác
Bài 2 của mình : Chạy ra kết quả ok nhưng bị báo lỗi này
Code:
Control reaches end of non-void function
File h
Code:
@interface bai62 : NSObject
- (int)TinhTongNDenM😔int)n : (int)m;
- (int)TinhTichNDenM:(int)n : (int)m;

@end
File m
Code:
@implementation bai62
- (int)TinhTongNDenM:(int)n : (int)m{
    int Tong = 0;
    if(n < m){
        for (int x = n; x <= m; x++ ){
            Tong = Tong + x;
        }
    }
    NSLog(@"Tong so tu n den m la : %i", Tong);
}

- (int)TinhTichNDenM:(int)n : (int)m{
    int Tich = 1;
    if(n < m){
        for (int y = n; y <= m; y++ ){
            Tich = Tich * y;
        }
    }
    NSLog(@"Tich so tu n den m la : %i", Tich);
}

@end
File main
Code:
        bai62 *TinhTong = [[bai62 alloc] init];
      
        [TinhTong TinhTongNDenM:1 :3];
      
        bai62 *TinhTich = [[bai62 alloc] init];
      
        [TinhTich TinhTichNDenM:1 :3];
Hehe hỏi bác google cái hết lỗi ngay. Sướng ơi là sướng
Bạn nào làm được bài 3. Viết ứng dụng in ra cửa sổ Log 100 chữ cái bất kỳ (với chữ cái bất kỳ cho bạn tự chọn). rùi thì Post bài lên mọi người tham khảo nhé, mình làm hoài không được.
Đây là bài 5 của mình:

- file .h
Code:
-(void) giaiPTB2😔float) a: (float) b:(float) c;
- file .m
Code:
-(void)giaiPTB2:(float)a :(float)b :(float)c{
    float d=b*b-4*a*c;
    float x1,x2;
    x1=(-b+sqrt(d))/(2*a);
    x2=(-b-sqrt(d))/(2*a);
    if(a==0){
       NSLog(@"\n\nPhuong trình có nghiệm duy nhất: %f",-c/b);
    }else{
        if(d<0){
            NSLog(@"\n\nPhương trình vô nghiệm.");
        }
        if(d==0){
            NSLog(@"\n\nPhương trình có nghiệm: %f", -b/(2*a));
        }
        if(d>0){
            NSLog(@"\n\nPhương trình có 2 nghiệm: \n\tx1=%.2f \n\tx2=%.2f",x1,x2);
        }
    }
}

- file main.m

Code:
Class_Bai6 *kt=[[Class_Bai6 alloc]init];
        [kt giaiPTB2:5 :-6 :1];
--> Mọi người cho mình hỏi tại sao máy mình chạy nó báo chấm than vàng như trong ảnh:
used as the name of the previous parameter rather than as part of the selector

Mình cũng thắc mắc giống bạn liwenjing93, tại sao vẫn còn cái thông báo ấy trong khi chương trình vẫn chạy bình thường, và làm thế nào để tắt nó đi, nhìn nó khó chịu thế nào ấy!

Một thắc mắc nữa là, muốn in dãy số trên một dòng, kiểu như in ra Log 10 số tự nhiên đầu tiên, mỗi số cách nhau một dấu phẩy, thì làm thế nào, mong iThanh giải đáp!

Muốn in ra kết quả -2.5 thì bác phải dùng biến kiểu float
Dear All !
mình xin đóng góp bài mình :
Code:
#import "ChuCai_char.h"

@implementation ChuCai_char
-(void) inCHuCaiChar😔char) a{
    for(int i = 0;i<4;i++){
        NSLog(@"%c",a);
    }
}
@end
và thực hiện trong hàm main.m
Code:
#import <Foundation/Foundation.h>
#import "ChuCai.h"
#import "ChuCai_char.h"
int main(int argc, const char * argv[])
{

    @autoreleasepool {
        ChuCai *cs = [[ChuCai alloc] init];
        NSString *ktu = @"Dan it";   // tai sao phai dinh dang kieu : @"h"
        NSLog(@"4 lan ky tu can in la: ");
        [cs inChuCai:ktu];
        ChuCai_char *ktu2 = [[ChuCai_char alloc]init];
        char abc = 'a';  // tai sao phai dung cap dau '' ma khong dung duoc cap dau ""
        [ktu2 inCHuCaiChar:abc];
    }
    return 0;
}
theo như mình hiểu thì cách làm của vi_tieu_bao cũng ok nhưng do yêu cầu chỉ là in ky tu thoi nhung neu truyen vao 1 doi tuong string cung duoc !!!
Hi Mr iThanh !
Mình có thắc mắc trong hàm main.m của mình phần chú thích , bạn giải thích giúp mình và mọi người với 😃
Many thanks !
Bài 1

//main.m

#import <Foundation/Foundation.h>
#import "Bai1.h"

int main(int argc, const char * argv[])
{
@autoreleasepool {
Bai1 *KiemTraKhiChonN = [[Bai1 alloc] init];
[KiemTraKhiChonN KiemTraSoNguyen:55];
}
return 0;
}

//Bai1.h (Class)

#import <Foundation/Foundation.h>

@interface Bai1 : NSObject
-(void)KiemTraSoNguyen😔int)SoNguyenNhapVao;
@end

//Bai1.m (Class)

#import "Bai1.h"

@implementation Bai1
-(void)KiemTraSoNguyen:(int)SoNguyenNhapVao {
int i;
for (i = 1; i <= 100; i++) {
if ((i < SoNguyenNhapVao) && (i % 3 == 0)) {
NSLog(@"Các số thỏa mãn đk: %i", i);
}
}
}
@end
Mình góp bài 5 ạ 😃

main.m
Code:
#import <Foundation/Foundation.h>
#import "Bai5.h"

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        Bai5 *InRaKetQua = [[Bai5 alloc] init];
        [InRaKetQua GiaiPTBac2: 5 :-6 :1];
    }
    return 0;
}
Bai5.h
Code:
#import <Foundation/Foundation.h>

@interface Bai5 : NSObject
-(void)GiaiPTBac2: (int)a : (int)b : (int)c;
@end
Bai5.m
Code:
#import "Bai5.h"

@implementation Bai5
-(void)GiaiPTBac2: (int)a : (int)b : (int)c {
    int delta = b*b - 4*a*c;
    if (delta == 0) {
        float x = -b/(2*a);
        NSLog(@"PT có nghiệm kép: x = %f", x);
    }
    if (delta > 0) {
       float x1 = (-b + sqrt(delta))/(2*a);
       float x2 = (-b - sqrt(delta))/(2*a);
        NSLog(@"PT có 2 nghiệm: x1 = %f ; x2 = %f", x1, x2);
    }
    if (delta < 0) {
        NSLog(@"PT vô nghiệm");
    }
}
@end
Thanks for sharing, iThanh !
S Ko thấy ai la ó, code bị lỗi vậy ta, hay có mỗi mìnt t ngu xi nên xịt lỗi tùm lum vậy nè. Mới học IOS chả bik con mợ j cả nhưng mà mình phải viết
@implementation <tên class>: NSObject
<code chi hàm j của bạn á>

thì nó mới chạy.

Với lại mình nghĩ nên giải thích kĩ hơn ở hàm main, tại s phải viết như vậy, ngôn ngữ mới mà, lung tung cả lens >"<.

Rồi cái chỗ giới thiệu hàm, ko ấy giới thiệu luôn truyền nhiều tham số cùng lúc luôn đê.... 😆)

Dù sao đi nữa, cũng chả bik gì, nhiều chiện chúng quánh. Mttdat.

Tải app Tinh tế

Tải app Tinhte - Theo dõi thông tin mà bạn yêu thích

Tải app TinhteTải app Tinhte
Tải app Tinh tế cho Android trên Google PlayTải app Tinh tế cho iPhone, iPad trên App Store
  • Chịu trách nhiệm nội dung: Trần Mạnh Hiệp
  • © 2020 Công ty Cổ phần MXH Tinh Tế
  • Địa chỉ: 209 Đường Nam Kỳ Khởi Nghĩa, Phường 7, Quận 3, TP.HCM
  • Số điện thoại: 02862713156
  • MST: 0313255119
  • Giấy phép thiết lập MXH số 11/GP-BTTTT, Ký ngày: 08/01/2019