Leng dung man hinh c++ window

Hello các bạn! Lại là Xuân Quỳnh đây. Trong bài trước bạn đã biết cách sử dụng cmd để build 1 file C ra file exe. Bạn thấy hay không? Bài này tôi sẽ giới thiệu 1 kiến thức mới hay chả kém. Đó là in ra 1 câu chào ra màn hình 😀 Đơn giản vậy thôi.

OK bây giờ tôi nhắc lại file C hôm trước các bạn xài:

void main()
{
  printf("Chao em C xinh dep");
}

Tôi vừa thêm 1 lệnh viết bằng tiếng Anh là printf, nghĩa là in ra màn hình dòng chữ chào em C xinh đẹp :)) Thấy hay không? Bây giờ tôi build thử bằng dòng lệnh nha.

Bạn cd vào thư mục chứa file C của bạn, tôi thì thế này:

cd /d  F:\C_project

Bạn nào đọc xong chả hiểu dòng này vui lòng xem lại 2 bài trước nhé.

Rồi, bây giờ tôi đang trong thư mục chứa code C. Tôi tiến hành build như bài hôm trước tôi làm:

gcc goobyec.c -o goodbyec

Rồi tôi nhận được một cái thông báo như sau:

Leng dung man hinh c++ window

Bạn chú ý dòng đỏ tôi bôi đó. Bạn thấy nó note gì không? Hãy thêm cái stdio.h hoặc định nghĩa 1 hàm printf để sử dụng hàm này. OK, lý do là hàm printf cần thư viện stdio.h đó nạ 🙂 Cái này giống như kiểu bạn muốn chạy xe máy thì phải đổ xăng vậy đó, printf thuộc thư viện stdio.h. Muốn dùng thì include vào :))

Rồi bây giờ tôi sửa lại code như sau:

#include <stdio.h>
void main()
{
    printf("Chao em C xinh dep");
}

Rồi tôi build lại. Thì nó hết mấy cái warning :)) Bạn hiểu thế này. Có 1 nhóm người viết ra ngôn ngữ C, bọn nó đặt tên file stdio.h và định nghĩa 1 hàm printf trong đó. Nếu Việt Nam mình mà biết cách thì tạo ra 1 ngôn ngữ C của Việt Nam. Giả sử tôi đặt tên file là vaora.h và trong file này tôi có hàm inra để in các ký tự ra màn hình. Tiếc là nhà mình không đủ tiền và do cái chế độ phong kiến đô hộ lâu quá mà mãi tới năm 97 công nghệ thông tin mới thực sự vào Việt Nam :)) Thôi thì chấp nhận Việt Nam mình nghèo vì lạc hậu. Bạn yên tâm, bài sau tôi sẽ định nghĩa 1 file như thế cho bạn xem, tôi cũng sẽ tạo 1 hàm inra cho bạn xem =)) Cứ nằm im hưởng thụ cái này đã.

Rồi bây giờ tôi muốn chạy chương trình thì làm thế nào. Bạn xem hình này:

Leng dung man hinh c++ window

Bạn để ý cho tôi dòng 1. Tôi giải thích như sau: Ở window bạn chỉ cần gõ đúng tên file exe của chương trình vừa build là nó in ra màn hình cho bạn. Còn trên linux thì bạn phải gõ như này:

./goodbyec

Bạn biết vì sao lại thế không? bởi vì linux chả giống win. Linux đối xử với mọi thứ là tệp. Mà nó coi file exe là 1 tệp đóng gói, ông muốn chạy nó thì ông thêm ./ trước tên file cho tôi. Tôi cũng khuyên bạn nào muốn học C cho pro thì cũng nên xài linux cho biết. À, đợt này win 10 cũng đã tiến hành tích hợp nhân linux trên window rồi đấy, cho nên anh em cứ ls các kiểu là nó cũng chơi với linux. Linux và window bây giờ yêu nhau rồi đó :))

Dòng 2 là cái kết quả bạn xem đó nạ :3

Hôm nay tôi chỉ giới thiệu từng ấy thôi. Bạn mà thấy ít quá thì để lại comment cho tôi ở dưới bài. Tôi sẽ nâng kiến thức dần dần qua từng bài, để việc tán em C là việc cần thời gian, mưa dầm thấm lâu. Tôi định bài tiếp giới thiệu về makefile, 1 khái niệm mà có lẽ nhiều ông sinh viên học C ra chả biết nó là cái gì 🙂 Tiếc là chưa có 1 giáo trình C nào cho chuẩn, mà sinh viên mình thì ngại đọc tiếng Anh.

happy! Bài tiếp theo.

I. Giới thiệu

Các loại vòng lặp khác nhau được dùng để thực hiện lặp đi lặp lại một khối lệnh nào đó liên tục nhiều lần. Vòng lặp sẽ giúp giảm công sức và sự nhàm chán cho Lập trình viên khi phải thực hiện lặp đi lặp lại câu lệnh hay khối lệnh nào đó nhiều lần.

Giả sử bạn muốn ra 1000 chuỗi "Lap trinh vien" thì thông thường bạn sẽ phải viết 1000 câu lệnh printf("\nLap trinh vien"); hoặc phải viết printf("\nLap trinh vien\nLap trinh vien\n..."); . Nhưng vòng lặp sẽ giúp bạn chỉ phải viết một câu lệnh duy nhất là printf("\nLap trinh vien"); .

II. Vòng lặp for

Vòng lặp for được gọi là vòng lặp xác định, vì ta có thể biết trước được số lần lặp của vòng lặp.

Cú pháp:

for (Khởi_tạo_biến_đếm; Điều_kiện; Thay_đổi_giá_trị_biến_đếm) {

Khối_lệnh;

}

, trong đó:

- phần Khởi_tạo_biến_đếm thường dùng để khởi tạo giá trị cho biến đếm (hay còn gọi là biến chạy, biến điều khiển) của vòng lặp for

- phần Điều_kiện sẽ đưa ra điều kiện để thực hiện Khối_lệnh

- phần Thay_đổi_giá_trị_biến_đếm dùng để thay đổi (tăng hoặc giảm) giá trị biến đếm của vòng lặp for.

Các ví dụ:

1. Đoạn mã dưới đây in ra 100 chuỗi có nội dung: "Ngon ngu lap trinh C".

#include<stdio.h>

main(){
  int i;
  for(i=0; i<100; i++){ //i chạy từ 0 đến 99, tức là có 100 giá trị i thoả mãn phần điều kiện
    printf("\nNgon ngu lap trinh C");
  }

  return 0;
}

2. Còn đoạn mã sau in ra 1000 chuỗi dạng "Lap trinh vien thu 1", "Lap trinh vien thu 2", ..., "Lap trinh vien thu 1000", mỗi chuỗi trên một dòng.

#include<stdio.h>

main(){
  int i;
  for(i=0; i<1000; i++){
    printf("\nLap trinh vien thu %d", i+1);
  }

  return 0;
}

3. Đoạn mã sau in ra các số từ 1 đến 100:

#include<stdio.h>

int main(){
  int i;
  for(i=1; i<=100; i++){
    printf("\n%d", i);
  }

  return 0;
}

4. Đoạn mã sau in ra các số từ 100 đến 1:

#include<stdio.h>

int main(){
  int i;
  for(i=100; i>=1; i--){
    printf("\n%d", i);
  }

  return 0;
}

5. Đoạn mã sau in ra các số lẻ từ 1 đến 100:

#include<stdio.h>

int main(){
  int i;
  for(i=1; i<=100; i+=2){
    printf("\n%d", i);
  }

  return 0;
}

6. Đoạn mã sau in ra các số lẻ từ 100 đến 1:

#include<stdio.h>

int main(){
  int i;
  for(i=100; i>=1; i--){
    if(i%2!=0){
      printf("\n%d", i);
    }
  }

  return 0;
}

Bạn có thể bỏ đi tất cả các thành phần của vòng lặp for, có điều bạn phải giữ lại hai dấu ';' . Khi đó Điều_kiện sẽ là luôn luôn đúng vòng lặp for sẽ lặp vô hạn lần, tức là Khối_lệnh sẽ được thực hiện vô số lần.

Cú pháp của vòng lặp for trong tình huống này sẽ như sau:

Đoạn mã dưới đây yêu cầu nhập vào một số nguyên n nằm trong khoảng từ 0 đến 1000 (0 < n < 1000).

#include<stdio.h>

int main(){
  int n;
  for(;;) {  //vòng lặp không dừng
    printf("\nNhap vao mot so nguyen n (0<n<1000): ");
    scanf("%d", &n);
    if(n>0 && n<1000){  //nếu giá trị nhập vào thoả mãn điều kiện
      break;  //thì thoát khỏi vòng lặp
    }
  }
  printf("\nSau khi nhap, n = %d",n);

  return 0;
}

III. Vòng lặp for lồng

Nếu có hiện tượng vòng lặp nằm trong vòng lặp thì đây là loại vòng lặp lồng.

Vòng lặp for lồng có dạng:

for(Khởi_tạo_biến_đếm; Điều_kiện; Thay_đổi_giá_trị_biến_đếm){

...

for(Khởi_tạo1; Điều_kiện1; Thay_đổi1){

Khối_lệnh;

}

}

Giả sử có hai vòng lặp for lồng nhau, vòng lặp for ngoài lặp N lần, vòng lặp for trong lặp M lần, thì mỗi lần lặp của vòng for ngoài thì vòng lặp for bên trong sẽ lặp M lần (Khối_lệnh sẽ được thực hiện M lần), tức là tổng số lần thực hiện Khối_lệnh nằm ở vòng lặp for lồng trong sẽ là N*M lần.

Ví dụ, hãy dùng vòng lặp để in ra màn hình tam giác có dạng như hình sau:

Leng dung man hinh c++ window

Phân tích:

- Tam giác được tạo bởi các ký tự '*' đặt trên các hàng, trong đó có 5 hàng, hàng 1 có 1 ký tự '*', hàng 2 có 2 ký tự '*', .... Như vậy ở hàng i có i ký tự '*'.

- Sau khi in xong các ngôi sao trên một hàng thì xuống dòng để in tiếp.

Vậy ta có đoạn mã giải quyết vấn đề trên như sau:

#include<stdio.h>

main(){
  int i, j;
  for(i=1; i<=5; i++) {  //mỗi lần lặp vòng for này sẽ in ra 1 hàng (i đại diện cho số hàng từ 1 đến 5)
    for(j=0; j<i; j++) {  //vòng lặp này sẽ in ra số lượng ký tự '*' trên mỗi hàng
      printf("*");
    }
    printf("\n");  //in xong các ngôi sao trên một hàng thì xuống dòng để in tiếp
  }

  return 0;
}

Đoạn code dưới đây được cải tiến từ đoạn code trên, trong đó cho phép người dùng chủ động đưa vào số hàng của tam giác từ bàn phím (từ 2 đến 24).

#include<stdio.h>

main(){
  int i, j, n;
  do {
    printf("\nNhap vao so hang: "); //nhập số lượng hàng
    scanf("%d", &n);
  }while(n<2 || n>24); //từ 2 đến 24 hàng
  for(i=1; i<=n; i++) {  //tam giác sẽ có tổng cộng n hàng
    for(j=0; j<i; j++){
      printf("*");
    }
    printf("\n");
  }

  return 0;
}

Xem thêm

  • Bài tập phần Vòng lặp