1. Trang chủ
  2. » Giáo án - Bài giảng

Giáo trình nhập môn tin học

120 1 0
Tài liệu được quét OCR, nội dung có thể không chính xác

Đ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

Định dạng
Số trang 120
Dung lượng 7,71 MB

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

Nội dung

” statement: Phat biéu bat ky compound statement: Phat biéu phttc hay khối lệnh, phải được bao trong cặp ngoặc SẼ tạo ra việc lặp vô tận, và chỉ có thê kết thúc bằng một trong các phát

Trang 1

2, ACPrU ED

Trang 2

TAI LIEU THAM KHAO

1 Giáo trình tin hoc (tập 1, 2), Hồ Sĩ Đàm & Lê Khắc Thành, NXB DHQGHN

2 Hướng dẫn thực hành và ứng dụng Windows XP, Nguyễn Tiến, Đặng Xuân

Hường & Nguyễn Văn Hoài, NXB Thống kê

3 Ngôn ngữ lập trình C, Quách Tuần Ngọc , Nhà xuất bản Giáo dục

# Kỹ thuật lập trình C, Pham Van Át, Nhà xuất bản Khoa học kỹ thuật

Trang 4

Khoa CNTT ~ Truong CDKT Ly Tu Trong

printf("Tong cac so le: d\n", odd);

printf ("Tong cac so chan: td\n", even) ;

printf ("Tong day so: $d", sum) ;

Tong cac so le: 2589

tong cac so chan: 2558

'A' hoặc ‘a’ (Area): tinh diện tích hình cầu 4 = 7-7?

“C° hoặc *c' (Circumference): tinh chu vi hình cầu € = 2 Tr

-V' hoặc *v' (Volume): tínhthể tích hình cầu ‘= 22 -}

3 Viết chương trình dùng các cấu trúc lặp for, while, do while dé in dãy các số

nguyên lẻ nhỏ hơn 100 theo chiều ngược với mẫu sau:

99, 97, 95, .,3, 1

4 Viết chương trình tính tổng và tích của dãy số gồm n>0 phân tử Trong đó n được nhập

vào từ bàn phím khi thực hiện chương trình:

117

Trang 5

printf ("Cac so nguyen tu 1 %d:\n\n", MAX);

do printf ("%6d", i++); while (i<=MAX) ;

else // i la so chan

event=i ;

116

Trang 6

do statement; while (condition) ;

Thuc hién phat biéu statement khi condi tion van còn có tri true

condition: Biểu thức điều kiện bất kỳ bao gồm các tóan tử so sánh, logic, bitwise với kết

quả là một giá trị logic true (1) hoặc £a1se (0) Biểu thức điều kiện conđi tion phải được viết trong cặp ngoặc “ ( ) ”

statement: Phat biéu bat ky

compound statement: Phat biéu phttc hay khối lệnh, phải được bao trong cặp ngoặc

SẼ tạo ra việc lặp vô tận, và chỉ có thê kết thúc bằng một trong các phát biéu break,

goto hodc return

2 Ví dụ

a Vidul

Viết lại chương trình in ra màn hình các số nguyên từ 1 đến 100, mỗi giá trị in ra trong 6 vi

trí, dùng cấu tric do while

Trang 7

else /⁄/ i la so chan

event=i;

itt;

}

printf ("Tong cac so le: %d\n", odd);

printf ("Tong cac so chan: %d\n", even);

printf ("Tong day so: %d", sum);

ong cac so chan: 2558

Jong day so: 5858

114

Trang 8

Viết lại chương trình tính tổng cdc sé chin va tổng các số lẻ từ dãy số nguyên 1, 2,

dùng cau tric while thay vì for

Trang 9

Khoa CNTT — Truong CDKT Ly Tu Trong

1 CAU TRUC while

1 Cú pháp

while (condition) statement;

khi giá trị của biéu thirc condition con 1a true thi thuc hién statement

Trang 10

int i, sum, odd, even;

odd = even = sum = 0;

for (i=1; i<=MAX; i++)

{

sumt+=i ;

if (i%2!=0) // ilasole odd+=i ; |

event=1;

Printf ('"Tong cac so le: d\n", odd);

printf ("Tong cac so chan: d\n", even) ;

printf ("Tong day so: $d", sum);

getch();

Kết quả:

DI

ong cac so le: 2500

ong cac so chan: 2550

Hong đau so: 50858

LH

Trang 11

printf ("Cac so nguyen tu 1 %d:\n\n", MAX);

for (i=0; i<=MAX; itt)

Trang 12

Lặp lại việc thực hiện phát biêu statement với số lần xác định tùy thuộc vào

init expression va cond expression

cond_ expzession: Biểu thức điều kiện để kết thúc vòng lặp Biểu thức phải có kiểu số

học hoặc con trỏ (pointer) và giá trị biểu thức được định giá mỗi khi bắt đầu một lần lặp va thường có kiểu Ï logic (false/true)

loop _ expression: Biểu thức dùng để định giá sau mỗi lần lặp và dùng cho bước lặp sau trong biểu thức điều kiện cond_expression Biểu thức này không bị hạn chế về kiểu

đữ liệu

Khi trong vòng lặp for có phát biểu continue thì 1oop_expression được định gia va điều khiển được đưa về đầu vòng lặp Khi có phát biểu break trong vòng lặp fo+ thì

loop_expression không được thực hiện và điều khiển được đua ra sau for

statement: Phát biểu sẽ được thực hiện khi điều kiện trong cond_expression van

Trang 13

Khoa CNTT - Trường CDKT Ly Tu Trong

a/b) ;

else

printf ("%5.2£ tc %5.2f = %s\n", a, op, b,

ERR_OP) ; break;

Trang 14

He dem 3 khong xac dinh

Viết lại chương trình ví đụ 2 ở mục 1.2.2 dùng cấu tric switch thay vì dùng cầu trúc if

"Toan tu khong hop le"

"Phep chia cho zero”

printf("Nhap 2 so bat ky: ");

Trang 16

(default: default statement; ]

expression = constant]: thuc hién statement]

expression = constant2: thuc hién statement2

expression = default ¢ (constant1, constant2, ): thuc hién default statement

expression: Biéu thitc cho két quả là kiểu đữ liệu đếm được, nghĩa là các giá trị rời rac kiéu char, int, long

coensCanL1, constant2, : Giá trị kết quả tương ứng của biểu thức expression

statement1, statement2, default_statement: Phát biểu bất kỳ

default: Trường hợp biểu thức expression cho kết quả khác với các hằng

_ Constan£1, constant2, đã liệt kê

break: Thông thường sau mỗi khối case cần có một phát biêu break nhằm chuyên điều khiến ra ngòai switch Điều này sẽ làm cho các phát biểu ở các khối case sau đó không được thực hiện Hãy thử bỏ các phát biểu break trong các ví dụ bên đưới để thấy tác dụng

Trang 17

oan tu khong hop lem

42.66 ¢ 8.00 = Phep chia cho zero

H CẤU TRUC switch

104

Trang 18

Khoa CNTT - Trường CĐKT Lý Tự Trọng

Nhập vào 2 giá trị số thực bất kỳ và 1 ký hiệu tóan từ số hoc (+, -, *, /), tinh va in ra man

hình kết quả biểu thức tương ứng

#define SUB ta!

#define MUL tae

#define EBRR OP "Toan tu khong hop le"

#define ERR_DIV "Phep chia cho zero"

void main (void)

{

float a,b;

char op;

printf£("Nhap 2 so bat ky: ");

scanf ("$F $f", &a, &b) ;

if (op==DIV)

Trang 19

Khoa CNTT —- Truong CDKT Ly Tu Trong

statement: Mét phat biéu bat ky va co thé la phép gan, biéu thitc, phép gọi hàm, và cũng

có thể là một cầu trúc điều khiển bất kỳ Kết thúc một phát biểu phải có một dấu chấm phẩy

é6 Q32

af

compound statement: Phát biểu phức hay khối lệnh Khi có từ 2 phát biểu trở lên trong một cấu trúc điều khiển, thì các phát biểu này phải được bao trong cặp ngoặc nhọn “{ }” Kết thúc một compound statement khéng c6 ddu cham phay

printf ("Nhap 2 so nguyen bat ky: ");

scanf ("$d %d", &a, &b);

Trang 20

2 Viết chương trình nhập một chữ hoa và đổi sang chữ thường

3 Viết chương trình nhập một chữ thường và đổi sang chữ hoa

4 Viết chương trình nhập vào một số nguyên là tổng số giây (second), đôi ting số gidy sang giờ, phút, giây và in ra màn hình theo dang hh:mm:ss

5 Viét chuong trinh nhap mét sé unsigned int và đếm tổng số bit 1 của số đã nhập

BÀI 16: CẤU TRÚC ĐIỀU KIỆN

statement2;

néu condition c6 giá tri true thi thuc hién statement] ,

ngược lại (£a1 se) thì thực hiện statement2

condition: Bieu thức điêu kiện bất kỳ bao gôm các tóan tử so sánh, logic, bitwise với kết

quả là một giá trị logic true (1) hoặc £a1se (0) Biểu thức điều kiện condition phải được

viết trong cặp ngoặc “ ( ) ”

101

Trang 21

BAI TAP

Trang 22

Chượng trình sau hiện lên màn hình 1 menu gồm 4 mục Người dùng gõ l trong các phím 1,

2, 3 hoặc E để chọn mục tương ứng Nếu phím gõ vào không thuộc 4 mục này sẽ bị báo lỗi Chọn e hoặc E (exit) để kết thúc chương trình

key=getch () ;

switch (key)

Trang 23

Chương trình đơn giản dưới đây cho phép lặp ởi lặp lại việc nhận | phim tir ban phim và in

ra màn hình ký tự tương ứng va ma ASCII cua ky tự đó (được ghi trong ngoặc) Chương

trình được kết thúc khi người dùng gõ phím 'q' hoặc 'Q'

Trang 24

hong tin da nhap:

Trang 25

Khoa CNTT - Trường CDKT Ly Ty Trong

char name[30]; //Chuoi chua Ten

int age; //Tuoi

Pprintf ("Nhap thong tin cua ban:\n") ;

printf ("Ten: Wy;

scanf ("$[A-Za-z]", name) ; //Chi chap nhan chu cai

printf ("Tuoi: ");

scanf ("%$d", Gage) ; //So nguyen

printf ("Trong luong: ");

scanf("%f", &weight) ; _ #/§o thuc float

printf("\nThong tin da nhap:\n") ;

Printf("Ten: %s\tTuoi: %d\tTrong luong: %5.2fkg", name, age, weight) ;

getch () ;

}

Kết quả:

96

Trang 26

Ký tự không trắng (non-whitespace) bao gồm các ký tự không thuộc tập các ký tự trắng đã

nêu trên

scanfQ có khả năng kiểm tra sự hợp lệ của các ký tự thuộc một tập xác định được ghi trong

cặp dẫu ngoặc vuông [ ] Những ký tự ghi trong cặp dẫu ngoặc này được xem là hợp lệ |

Vidu:

scanf(" %[A-Za-z]"", myString);

sẽ chỉ chấp nhận các chữ cái A-Z và a-z, bat ky 1 ký tự khác không thuộc tập này sẽ bị bỏ qua và không được ghi vào chuỗi myString Nếu muốn cho phép có khỏang trồng trong

chuỗi nhập, ta ghỉ thêm khôang trống vào tập hợp

scanf("%[ A-Za-z]", myString);

Ngòai ra nếu ky tự đầu tiên trong cặp ngoặc vuông là dấu '^' thì scanf() sẽ chỉ chập nhận những ký tự không thuộc tập ký tự ghi trong cặp ngoặc này Chẳng hạn

scanf('%[^\n]", myString);

sẽ chấp nhận tất cả các ky ty, ngoai trừ ký tự newline '\n’

Giá trị trả về của hàm scanfQ tùy thuộc vào tình trạng nhập liệu trước đó:

Số lượng argument da duoc doc, néu không có lỗi

0, nếu không có argument nào được đọc

EOF, néu đọc đến cuối file

size Kích thước tôi đa của ving nhap (input field)

h Giá trị nhập được chứa theo dạng short int

| Giá trị nhập được chứa theo dạng long int hoặc double

L Giá trị nhập được chứa theo dạng long double

* Vùng nhập bị bỏ qua và không được ghi

35

Trang 27

1234.123085 : :1234.12305:

%ox Số thập olục phan (hexadecimal)

Trang 28

Khoa CNTT - Trường CDKT Lý Tự Trọng

Cánh trai (left justify)

+ Dau + hoặc — trước giá trị

Space Số dương với khỏang trang trước giá trị

0 Điền số 0 cho giá trị số

# Ký hiệu hệ thống đếm trước giá trị số: 0 với octal

width Kích thước tôi thiểu của giá trị xuất

prec Số số lẻ sau dấu chấm thập phân

h Thê hiện sé short int

| Thê hiện số long int (1đ) hoặc double (if)

L Thé hién s6 long double (Lf)

Trang 29

Khoa CNTT ~ Truong CDKT Ly Ty Trong

BAI 15: CAC HAM NHAP XUAT

“ed Số nguyên có đấu (signed integer) dang decimal

%i Số nguyên cé dau (signed integer) dang decimal

“oe Số dạng khoa hoc (scientific notation) với chữ thường "e" (exponent)

%E Số dạng khoa học (scientific notation) với chữ hoa "E" (exponent)

%f Số thực với dấu chấm động (floating point)

%G | Dạng ngắn của %E hay %f

%0 Số bát phân (octal)

“ou Số nguyên không dấu (unsigned integer)

"Xx Số thập lục phân không dấu (unsigned hexadecimal) với chữ thường

%X Số thập lục phân không dấu (unsigned hexadecimal) với chữ hoa

Trang 30

Khoa CNTT - Trường CĐKT Lý Tự Trọng

BÀI TẬP

1 Viết chương trình in ra màn hình hình chữ nhật gồm các dấu * (không dùng vòng lặp)

2 Sửa lại chương trình Listingl.epp ở trang 6 để tính tích và thương của 2 giá trị (đối với

phép chia cần kiểm tra số chia khác không)

3 Viết chương trình nhập vào một giá trị, sau đó kiểm tra và in ra thông báo cho biết đó là số đương hay số âm, số lẻ hay số chẵn

Trang 31

Khoa CNTT — Truong CDKT Ly Tu Trong

Trang 32

Khoa CNTT ~_ Truong CDKT Ly Tu Trong

2 Cach khai bao va goi ham

Một hàm được xác định thông qua các yếu tố sau:

— Tén ham (function name)

— Danh sách tham só (parameters) và kiểu của tham số (data type)

—_ Tham số vào (input parameters) va tham s6 ra (output parameters)

— Kiểu dữ liệu trả về của ham (return data type)

Khai báo Prototype cia ham:

return type Junction_name(parameter list);

int Maxvalue(int a, int b);

float add(float x, float b);

sum = add((float)a, (float)b);

Vidu 2: Nhập 2 gid trị thực a và b, in ra số max, min và tôn 8 của chúng

float MaxVal(float a, float b);

float MinVal(float a, float b);

float Sum(float a, float b);

89

c

Trang 33

Khoa CNTT - Trường CĐKT Lý Tự Trọng

Các tập tin header thường dùng đến gồm stdio.h, conio.h, stdlib.h, string.h, math.h và

time.h

Danh sách các hàm thường dùng được định nghĩa trong các tập tin header nêu trên được mô

tả trong phần phụ lục cuối tài liệu

1 Tập tin header

Các tập tin header trong C/C++ là một thành phân rất quan trọng không thể tách rời từ giai

đoan thiết kế chương trình đến gian đọan biên dịch và liên kết vdé tao ra tập tin đối tượng (.obj) và tập tin nhị phân thi hành được (.exe, đll) Các mô tả dữ liệu, các chỉ dẫn biên dịch,

các khai báo prototype hàm thường được bố trí trong các tập tin header

Khi muốn sử dụng các hằng, biến, hàm hay các mô tả khác trong một tập tin header, ta cần

viết dẫn hướng đến tập tin header đó tại đầu chương trình trước cài đặt hàm main() và khai

Đối với tập tin header do người dùng viết thường được đặt trong thư mục làm việc hiện thời,

nên ta cân viét:

Trang 34

Khoa CNTT ~ Truong CDKT Ly Tu Trong

I CHUYEN DOI KIEU Di LIEU

Trong quá trình viết chương trình, ta phải xử lý trên nhiều kiểu dữ liệu (data type) khac nhau,

typecast: Kiéu đữ liệu đích

item: hang, bién, hàm, biểu thức muốn chuyên kiểu

” b=(int)x;

IV CAC HAM CO-SAN TRONG C/C++

C/C++ tich hop sin một số lượng lớn các hàm (predefined functions) dé thực hiện các tác vụ khác nhau, các hàm được phân chia theo từng nhóm xử lý khác nhau và được định nghĩa và phân phối trong các tập tin header dj kèm với đuôi ".h" Muốn dùng hàm nào ta cần dùng dẫn hướng (directive) #include <header_file> ghi rõ tên tập tin header có định nghĩa hàm đó

Dé biết thêm chỉ tiết về các tập tin header, xem phụ lục cuối tài liệu

8

Trang 35

: NẠP a Ee REPRE RRO ee Ae a ONES Sees ee

O | Nhóm biêu thức con (a*b+c)/(a*d)

{] Trich phan tir a(i] voi bién a la m6t array và bién i la index

student.name, student.age struct/class

struct/class

& Địa chỉ của &a cho địa chỉ của biến a

Con trỏ/giá trị biên con ¬ eek

*a cho giá trị của biên con trỏ a

II LENH VA KHOI LENH

~ Trong C/C++ mai lệnh đơn (single statement) là một khai báo hay phát biêu được ghi trên 1 dong đơn và kết thúc bằng dâu chấm phây (;)

~ Trong khi đó, một khối lệnh (statement block/compound statemen?) là tập các lệnh: đơn và được bao trong cặp ngoặc nhọn ({})

Vi du:

int count=5; // Lénh don

printf("Cac so tu 5 den 0: \n"); // Lénh don

while(count>=0)

Lénh don Khối lệnh

prmff("%đ, ", count); // Lệnh đơn count ; // Lệnh đơn

86

Trang 36

Lưu ý: Giả sử a là biễn kiểu số nguyên thì:

+†a và a++ đều tăng giá trị biến a lên | đơn vị, tuy nhiên có sự khác biệt Chúng ta hay xem

2 ví dụ đơn giản sau:

exprl: Biểu thức, biến, hằng, hàm bất kỳ tương ứng với condition có tri logic TRUE

expr2: Biêu thức, biến, hang, ham bat kỳ tương ứng với condifion có trị logic FALSE

Yí dụ: Xác định số lớn hơn trong 2 số a và b

Trang 37

| Bitwise inclusive OR b=(a|5); cho kết qua b=13

“ Bitwise excluse OR (XOR) b=(a^5); cho kết quả b=9

~ Bu | (one's compliment) b=~a; cho két qua b=3

Dịch sang trái n bịt, tương ứng với | b=(a<<2);

= phép nhân cho 2" sẽ tương ứng b = 12*2° = 12*4 = 48

Dịch sang phải n bit, tương ứng với Doane) ;

d Toán tử tang gam

Gồm các tóan tử thực hiện trên các biến hay biểu thức có giá trị nguyên như char, int, short,

long Các tóan tử này thực hiện việc tăng giảm giá trị của biến hay biểu thức 1 don vi

84

Trang 38

Khoa CNTT — Trường CDKT Ly Tu Trong

/(*#\ % &&

T- |

a+b#*c

KP Đ)— 4# a* ©) (2x a) (num % 2) != ọ

a==b có két qua false

8!=b có kết quả true

biểu thức logic, trong đó các tóan hạng là các biến, giá trị

toan logic 14 một giá tri logic TRUE hoặc

Trang 39

base_type: Tén kiéu cơ sở hay kiêu đã được định nghĩa trước

new_ype: Tên kiêu dữ liệu mới

typedef struct STUDENT

BÀI 14: BIỂU THỨC —- TÓAN TỬ - CÂU LENH

I BIEU THUC VA TOAN TU

1 Khái niệm về biểu thức

Biểu thức là một công thức tính toán bao gồm các phép toán, hằng, biến, hàm, và các dấu

Trang 40

Nn0a CNT T — Trường CDK T Ly Tu Trong

horizontal tab, tab ngang (theo giá tri tab hiện Printf("horizonta thời)

tab\t");

sir[0]=^0':

printf( "backslash\\"); printf( "Vsingle

Ngày đăng: 06/08/2022, 16:11