1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập trình C cơ bản

26 471 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Lập Trình C Cơ Bản
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Lập Trình
Thể loại Tài Liệu Học Tập
Năm xuất bản 2023
Thành phố Hồ Chí Minh
Định dạng
Số trang 26
Dung lượng 55,22 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ngôn ngữ lập trình C với những gì cơ bản nhất

Trang 1

NGÔN NGỮ LẬP TRÌNH

1/Ngôn ngữ lập trình:

Ngôn ngữ lập trình là hệ thống các ký hiệu tuân theo các qui ước vềngữ pháp và ngữ nghĩa, dùng để xây dựng thành các chương trìnhcho máy tính

Một chương trình được viết bằng một ngôn ngữ lập trình cụ thể (ví

dụ Pascal, C…) gọi là chương trình nguồn, chương trình dịch làmnhiệm vụ dịch chương trình nguồn thành chương trình thực thi được trên máy tính

2/Khái niệm chương trình:

Chương trình là một chuỗi chỉ thị hay các câu lệnh điều khiển sự hoạt động của máy, nằm trong hệ thống quy ước về ý nghĩa và thứ tự thực hiện

Mỗi ngôn ngữ lập trình có những đặc trưng riêng, phù hợp để giải quyết một nhóm vấn đề nào đó

3/Phương pháp để giải quyết một bài toán:

- Phân tích vấn đề, xác định yêu cầu của bài toán

- Đưa ra cách giải quyết

- Cài đặt thuật toán

- Thực thi chương trình và kiểm chứng

* Cách viết một chương trình căn bản:

- Đề: Cho 2 số nguyên a = 5, b = 9 Tính tổng 2 số đó và xuất kết quả ra màn hình

Trang 2

}

Trang 3

Chương 2: CÁC THÀNH PHẦN TRONG NGÔN NGỮ C

Các tên đúng:

delta, a_1, Num_ODD, Case

Các tên sai:

3a_1 (ký tự đầu là số)

num-odd (sử dụng dấu gạch ngang)

int (đặt tên trùng với từ khóa)

del ta (có khoảng trắng)

f(x) (có dấu ngoặc tròn)

Lưu ý: Trong C, tên phân biệt chữ hoa, chữ thường

2/Kiểu dữ liệu(Data types):

Có năm kiểu dữ liệu cơ sở: ký tự(char), số nguyên(int), số thực (float), số thực có độ chính xác gấp đôi (double), và kiểu vô định void

Dạng khai báo tổng quát:

Kiểu dữ liệu [khoảng trắng] tên biến

Ví dụ: int a;

Gán dữ liệu:

C1:

int a;

Trang 4

Dạng tổng quát của casting là

(type) expression hoặc type(expression)

Ví dụ:

float kq;

kq = 7/2;

Do 7/2 là phép chia nguyên nên kết quả không có phần thập phân =>

kq = 3, nên cần phải ép kiểu

Trang 5

NHẬP XUẤT DỮ LIỆU TRONG C

Lưu ý: Hàm scanf không nhập được khoảng trắng Để nhập được dòng

ký tự có khoảng trắng ta phải viết:

scanf(“%[^\n]”,a); // a là chuỗi(xâu) ký tự được nhập

3 Hàm gets

Gets(Tên của mảng ký tự);

Hàm này cho phép nhận một chuỗi từ bàn phím Cho phép nhập khoảng trắng giữa các từ

Lưu ý về các hàm scanf, gets:

Hai hàm trên nhận dữ liệu từ stdin (dòng nhập chuẩn có thể hiểu nhưmột vùng nhớ đặc biệt) Chúng nhận dữ liệu theo nguyên tắc sau:

- Nếu trên stdin có đủ dữ liệu thì chúng sẽ nhận một phần dữ liệu mà nó yêu cầu Phần dữ liệu còn lại vẫn nằm ở trên stdin

Trang 6

- Nếu stdin không đủ dữ liệu theo yêu cầu của hàm, thì máy tạm dừng để chờ người sử dụng đưa dữ liệu từ bàn phím lên stdin( cho đến khi gặp phím).

- Hàm gets sẽ xóa ký tự \n trong stdin

- Hàm scanf không xóa \n trông stdin

Lý thuyết thì như thế, nói tóm lại khi sử dụng hàm scanf cùng với hàm gets hoặc getchar dữ liệu nhập từ bàn phím sẽ bị trôi Để các hàm hoạt động đúng chúng khử ký tự \n bằng lệnh ffush(stdin) sau lệnh scanf

Ví dụ:

#include <stdio.h>

void main() {

Trang 7

Chương 3: CÁC CẤU TRÚC ĐIỀU KHIỂN TRONG C

1 Giới thiệu:

Có 3 loại cấu trúc điều khiển để xây dựng nên một chương trình máy tính: cấu trúc tuần tự, lựa chọn, lặp

Cấu trúc tuần tự: thực hiện các lệnh từ trên xuống dưới

Cấu trúc lựa chọn: Dựa vào kết quả của biểu thức điều kiện mà

thực hiện lệnh(khối lệnh) này hay lệnh(khối lệnh) khác Các cấu trúc lựa chọn gồm if, switch

Cấu trúc lặp: Dựa vào điều kiện thực hiện khối lệnh cho đến khi

nào biểu thức điều kiện sai Các cấu trúc lặp gồm for,

while,do while

Lưu ý: Các câu lệnh như break, continue, goto còn ảnh hưởng đến

thứ tự thực hiện các lệnh của chương trình

1.1 Câu lênh, khối lệnh:

Mỗi câu lệnh thực hiện một chức năng nào đó, kết thúc bởi một dấu chấm phẩy

Khối lệnh là một dãy các câu lệnh được đặt trong dấu { }, về mặt

cú pháp khối lệnh tương đương với một câu lệnh

2 Cấu trúc điều khiển if

2.1 Dạng 1:

if( biểu thức điều kiện)

<lệnh>;

Nếu biểu thức cho kết quả <> 0 (true) thì thực hiện lệnh Nếu có từ

2 lệnh trở lên ta phải đặt trong dấu {}

printf("So ban nhap lon 10\n");

printf("%d la so ban nhap.",a);

}

Kết quả:

Nhap vao mot so nguyen: 20 <enter>

Trang 8

So ban nhap lon hon 10

Nếu biểu thức điều kiện cho kết quả <> 0( true) thì thực hiện lệnh

1, ngược lại thực hiện lệnh 2

printf("So ban nhap nho lon 10\n");

printf("%d la so ban nhap.",a);

}

Kết quả:

Nhap vao mot so nguyen: 9 <enter>

So ban nhap nho hon 10

9 la so ban nhap.

3 Cấu trúc lựa chọn (Switch)

Cấu trúc switch là cấu trúc lựa chọn có nhiều nhánh Khi có nhiều sự lựa chọn thì đây là cấu trúc phù hợp thay vì phải dùng nhiều lệnh if…else lồng nhau

3.1 Cú pháp

Switch(biểu thức

{

Trang 9

case n1:

các câu lệnh case n2:

các câu lệnh

………

case nk:

các câu lệnh [default: các câu lệnh]

}

Ni là các hằng số nguyên, ký tự

Phụ thuộc vào giá trị của biểu thức viết sau switch, nếu:

+ Giá trị này bằng ni thì thực hiện các câu lệnh của case ni

+Khi giá trị biểu thức khác tất cả các ni thì thực hiện lệnh default nếu có

Khi thực hiện xong câu lệnh của một ni thì nó sẽ tự thực hiện các lệnh thuộc ni bên dưới, vì vậy phải dùng lệnh break để dừng

Ví dụ:

Yêu cầu người thực hiện chương trình nhập vào một số nguyên dương

là tháng trong năm và in ra số ngày của tháng đó

+ Tháng 31 ngày: 1, 3, 5, 7, 8, 10, 12

+ Tháng 30 ngày: 4, 6, 9, 11

+ Riêng tháng 2 có 28 hoặc 29 ngày tùy năm

+ Nếu nhập số <1 hoặc >12 thì in ra câu thông báo “Số bạn nhập không

Trang 10

if((nam % 400 == 0) || (nam % 4 == 0 && nam % 100 != 0))

nhuan = 1;

switch(thang) {

Trang 11

1 Tính giá trị biểu thức 1

2 Tính giá trị biểu thức 2

3 Nếu bước 2 <> 0 (true) thì thực hiện các lệnh của vòng lặp, ngược lại thoát khỏi vòng for

4 Tính giá trị biểu thức 3 rồi quay lại bước 2

Ví dụ: Viết chương trình tính tổng số nguyên từ 1 -> 10

sum = sum + i;

i++;

} println(“Ket qua: %d”,sum);

Trang 12

sum = sum + i;

i++;

}while(i<=10) println(“Ket qua: %d”,sum);

}

Trang 13

Chương 4: MẢNG (Array)

1 Giới thiệu mảng:

Mảng là một tập hợp các phần tử có cùng kiểu dữ liệu nằm liên tiếp trong bộ nhớ và được tham chiếu bởi một tên chung(tên mảng) Mỗi phần tử trên mảng được tham chiếu thông qua chỉ số (index)

2.1 Cách khai báo và khởi tạo mảng

Dạng tổng quát để khai báo mảng một chiều là:

Trang 14

void main()

{

int a[5];//Khai báo mảng a int n = 5;//Số phân tử trong mảng //Nhập dữ liệu

for(int i = 0; i < n ; i++) {

printf(“a[%d]=”,i);

scanf(“%d”,&a[i]);

} //Xuất dữ liệu for(int i = 0; i < n ; i++) {

printf(“a[%d]=%d\n”,i,a[i]);//a[i] chính là giá trị của phần tử thứ i

} }

2.3 Các bài tập về mảng một chiều cơ bản

for(int i = 0; i < n ; i++) {

printf(“a[%d]=”,i);

scanf(“%d”,&a[i]);

} //Xuất dữ liệu for(int i = 0; i < n ; i++) {

Trang 15

printf(“a[%d]=%d\n”,i,a[i]);//a[i] chính là giá trị của phần tử thứ i

} //Tính tổng phần tử dùng hàm for duyệt từ đầu mảng đến cuối

int sum = 0;

for(int i = 0; i < n ; i++) {

sum += a[i];

} printf(“Tong cua phan tu trong mang la: %d”,sum); }

for(int i = 0; i < n ; i++) {

printf(“a[%d]=”,i);

scanf(“%d”,&a[i]);

} //Xuất dữ liệu for(int i = 0; i < n ; i++) {

printf(“a[%d]=%d\n”,i,a[i]);//a[i] chính là giá trị của phần tử thứ i

} // Dùng hàm for duyệt từ đầu mảng đến cuối

Trang 16

printf(“Cac phan tu chan trong mang\n”); for(int i = 0; i < n ; i++)

{

if(a[i] % 2==0) printf(“%d\t”, a[i]);

} }

3 Mảng hai chiều:

3.1 Các khai báo và khởi tạo một mảng:

Dạng tổng quát để khai báo mảng 2 chiều là:

Row1

Trang 17

printf(“a[%d][%d]=”,i,j); scanf(“%d”,&a[i][j]);

} //Xuat du lieu for(int i = 0; i < n; i++) {

for(int j = 0; j < n ; j++) {

printf(“a[%d][%d]=”,a[i][j]); }

printf(“\n”);

} }

3.3 Một số bài tập cơ bản mảng 2 chiều:

Trang 18

for(int i = 0; i < n; i++)

for(int j = 0; j < n ; j++) {

printf(“a[%d][%d]=”,i,j); scanf(“%d”,&a[i][j]);

} //Tinh Tong int sum = 0;

for(int i = 0; i < n; i++)

for(int j = 0; j < n ; j++) {

sum += a[i][j];

} printf(“Tong mang 2 chieu la:%d”,a[i][j]); }

Trang 19

Chương 5: HÀM VÀ CẤU TRÚC CHƯƠNG TRÌNH

1.Vài nét về hàm và chương trình

1.1 Khái niệm về hàm

Hàm là một khối lệnh được đặt tên thực hiện trọn vẹn một công việc nhất định, rồi trả về một giá trị cho chương trình gọi nó

Hàm còn được gọi là chương trình con Hàm có thể trả về giá trị hay không Không cho phép xây dựng hàm trong một hàm khác

//khai bao mang 2 chieu const int n = 3;

int a[n],b[n];

//Nhap du lieu vao mang 1 printf("Nhap du lieu vao mang 1\n");

for(int i = 0; i < n; i++) {

printf("a[%d]=",i);

scanf("%d",&a[i]);

} //tinh tong mang 1 int sum1 = 0;

for(int i = 0; i < n; i++)

sum1 += a[i];

//Nhap du lieu vao mang 2

printf("Nhap du lieu vao mang 1\n");

for(int i = 0; i < n; i++)

Trang 20

printf("b[%d]=",i);

scanf("%d",&b[i]);

} //tinh tong mang 2

printf("Tong mang 1: %d\nTong mang 2:

%d\n",sum1,sum2);

printf("Mang 1 lon hon mang 2\n");

} else {

printf("Tong mang 1: %d\nTong mang 2:

%d\n",sum1,sum2);

printf("Mang 2 lon hon mang 1\n");

} }

Rất dài dòng, ta có thể viết hai hàm nhập và tính tổng mảng sẽ làm ngắn gọn chương trình

#include <stdio.h>

void NhapMang(int a[], int n);

int TinhTong(int a[], int n);

void main() {

//khai bao mang 2 chieu const int n = 3;

int a[n],b[n];

//Nhap du lieu vao mang 1

Trang 21

//tinh tong mang 1

int sum1 = TinhTong(a,n);

//Nhap du lieu vao mang 2

NhapMang(b,n);

//tinh tong mang 2

int sum2 = TinhTong(b,n);

//so sanh

if(sum1 > sum2) {

printf("Tong mang 1: %d\nTong mang 2:

%d\n",sum1,sum2);

printf("Mang 1 lon hon mang 2\n");

} else {

printf("Tong mang 1: %d\nTong mang 2:

%d\n",sum1,sum2);

printf("Mang 2 lon hon mang 1\n");

} }

void NhapMang(int a[],int n)

{

//Nhap du lieu vao mang 1

printf("Nhap du lieu vao mang 1\n");

Trang 22

Return: Kiểu giá trị trả về, không có giá trị trả về thì dùng void

FunctionName: Tên của hàm Tên của hàm nên ngắn gọn và thể hiện ý nghĩa của hàm

Paramaterlist: Danh sách các tham số hình thức, là danh sách các tên biến và kiểu dữ liệu tương ứng Nếu hàm không có tham số thì danh sách rỗng

int n = 5;

binhphuong(n);

printf("Gia tri n ngoai ham: %d\n",n);

} void binhphuong(int n) {

n = n*n;

printf("Gia tri n trong ham: %d\n",n);

}

Kết quả:

Trang 23

Kết luận: Khi truyền n = 5 vào tham số n của hàm binhphuong thì cách truyền như thế gọi là truyền tham trị Trong thân hàm binhphuong, tham số n bình phương và có giá trị là 25.Khi hàm binhphuong kết thúcgiá trị n trong hàm main vẫn không đổi.

2.2 Truyền tham chiếu:

Ví dụ:

#include <stdio.h>

void tong(int *n);

void main() {

int a = 5;

binhphuong(&a);

printf("Gia tri a ngoai ham: %d\n",a);

} void tong(int *n) {

3 Đệ qui

Trang 24

Một hàm mà gọi lại chính nó được gọi là đệ qui

Ví dụ: Xem xét chương trình tính giai thừa của n

Trang 25

Chương 6: STRING (chuỗi)

1 Giới thiệu chuỗi:

Trong C hiểu chuỗi là một mảng ký tự với ký tự null ở cuối chuỗi

Ký tự null (‘\0’) là ký tự dùng để kết thúc chuỗi Như vậy, một chuỗibao gồm các ký tự tạo nên chuỗi và theo sau là ký tự null

2 Khai báo và khởi tạo chuỗi

Có 2 cách khai báo và khởi tạo chuỗi Giả sử khai báo và khởi tạo chuỗi “Hello”

Cách 1: Dùng mảng một chiều

char str[] ={‘h’, ‘e’, ‘l’, ‘l’, ‘o’, ‘\0’};

Lưu ý: trong trường hợp này, ta phải them ký tự null vào cuối

Cách 2:

char str[] = “Hello”;

3 Nhập chuỗi, xuất chuỗi

Để nhập dữ liệu cho biến chuỗi, ta nên dùng hàm gets() hơn là hàm scanf vì:

Hàm scanf: chương trình sẽ tự động ngắt chuỗi khi gặp ký tự khoảngtrắng

Để xuất dữ liệu chuỗi ra màn hình ta có thể dùng 2 hàm

puts(stringname) hoặc printf(stringname);

4 Một số hàm thư viện thao tác trên chuỗi

Để sử dụng các hàm này, ta phải khai báo thư viện string.h

strcpy(s1,s2) Sao chéo chuỗi s2 vào chuỗi s1

strcat(s1,s2) Nối chuỗi s2 vào cuối chuỗi s1

strlen(s1) Trả về độ dài của chuỗi

char s1[80], s2[80];

printf("Input the first string: ");

gets(s1);

Trang 26

printf("Input the second string: ");

gets(s2);

printf("Length of the of s1 = %d\n",strlen(s1)); printf("Length of the of s2 = %d\n",strlen(s2)); if(!strcmp(s1,s2))

printf("These strings are equal\n");

Ngày đăng: 24/09/2013, 19:59

TỪ KHÓA LIÊN QUAN

w