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

bài tập C++

11 212 0

Đ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 11
Dung lượng 403,53 KB

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

Nội dung

Dữ liệu của bài toán sẽ được biểu diễn lại dưới dạng các biến của chương trình thông qua các quy tắc xác định của ngôn ngữ lập trình NNLT cụ thể.. Còn đối với chương trình máy tính , mọi

Trang 1

BÀI BÁO CÁO WEEK 03

  

I Sự chuyển đổi từ dữ liệu của bài toán thành dữ liệu của chương trình?

Dữ liệu của bài toán sẽ được biểu diễn lại dưới dạng các biến của chương trình thông qua các quy tắc xác định của ngôn ngữ lập trình (NNLT) cụ thể

Mọi vấn đề bài toán nào, dù rất đơn giản, đều ít nhiều dùng đến dữ liệu Không những thế, dữ liệu bài toán thường phong phú và đề cập đến nhiều loại đối tượng khác nhau trong thế giới thực

Còn đối với chương trình máy tính , mọi dữ liệu của chương trình đếu nằm ở các biến Như vậy, so với cách biểu diễn dữ liệu ở thế giới thực, cách biểu diễn dữ liệu của máy tính hạn chế hơn rất nhiều nên khi giải bài toán trên máy tính người ta thường biến đổi lại dữ liệu của bài toán để phù hợp với cách biểu diễn trong máy tính

1 Biến (Variable)

a Khái niệm

 Biến là nơi lưu trữ giá trị-số nguyên, số thực, kí tự,…

 Một biến chỉ có thể lưu được một loại giá trị nhất định  kiểu dữ liệu của biến

 Giá trị mà biến đang lưu trữ có thể bị thay đổi nhiều lần trong quá trình chương trình thi hành

 Một biến bất kì trong máy tính có 3 thuộc tính:

 Tên biến (được đặt tên do người lập trình – gọi là định danh – indentifier)

 Kiểu dữ liệu của biến

 Gía trị hiện tại mà biến đang lưu trữ

 Biến cần phải được khai báo (định nghĩa) trước khi sử dụng

Lưu ý:

 Ý nghĩa của biến chỉ được hiểu bởi con người, không có ý nghĩa với PC;

 Tên biến cần gợi nhớ và thống nhất;

 Tên biến phải hợp lệ - tuân thủ theo quy ước của NNLT

b Khai báo biến

Mọi biến trong chương trình cần được khai báo trước khi sử dụng Khai báo biến

là dặt tên cho biến và xác định kiểu biến

Cú pháp khai báo:

Pascal: <tên1>[,<tên2>,…,<tênN>]: <kiểu>;

C: <kiểu> <tên1>[,<tên2>,…,<tênN>];

Trong đó:

<tên1>,<tên2>,…,<tênN> là tên các biến cần khai báo

<kiểu> là kiểu cảu các biến cần khai báo

Trang 2

Lưu ý: Ngôn ngữ C phân biệt cữ hoa chữ thường còn Pascal thì không có đặt tính này

Nghĩa là, với Pascal khi khai báo 3 biến Var1, VAR1, VAr1 thì sẽ bị lỗi vì tên biến trùng nhau; Còn với C, Var1, VAR1, VAr1 là 3 biến hoàn toàn khác nhau

2 Kiểu dữ liệu (Data type)

 Trong NNLT, loại giá trị mà biếu lưu trữ được phân thành những kiểu dữ liệu khác nhau

 Thông thường, trong NNLT có các kiểu dữ liệu sau:

 Kiểu dữ liệu số: gồm 2 loại

o Kiểu dữ liệu số nguyên

o Kiểu dữ liệu số thực

 Kiểu luận lý (logic)

 Kiểu kí tự

 Kiểu chuổi kí tự

 Mỗi kiểu có một miền giá tri khác nhau

a Kiểu số nguyên

 Có nhiều kiểu số nguyên

 Tùy thuộc vào độ lớn của miền giá trị, có:

o Số nguyên 8 bit (1 byte) Loại có dấu: -128  127 Loại không dấu: 0 255

o Số nguyên 16 bit (2 byte) Loại có dấu: -32,768  32,767 Loại không dấu: 0  65,535

o Số nguyên 32 bit (4 byte) Loại có dấu: -2,147,483,648  2,147,483,647 Loại không dấu: 0  4,2944,969,295

 Một số NNLT còn hỗ trợ kiểu số nguyên 64 bit, 128 bit

 Kiểu số nguyên k bit sẽ chiếm k bit dữ liệu

b Kiểu số thực

 Có 2 dạng thường gặp

Số thực 32 bit (4 byte)

Số thực 64 bit ( 8 byte)

 Một số NNLT cón hỗ trợ số thực 80 bit (10 byte)

c Các kiểu dữ liệu khác

 Kiểu luận lý (logic): chỉ nhận 1 trong 2 giá trị - True (1) hoặc False (0)

 Kiểu kí tự: dùng để lưu trữ dữ liệu ở dạng một kí tự - là một trong các kí hiệu của bảng mã ASCII, chiếm 1 byte bộ nhớ (một số NNLT cho phép lưu trữ kí tự mã Unicode chiếm 2 byte bộ nhớ)

 Kiểu chuỗi kí tự: dùng để lưu trữ 1 chuỗi kí tự

Trang 3

Loại Pascal Miền giá trị C Miền giá trị Logic Booleean True/False int 1/0

Kí tự Char 256 kí tự char 256 kí tự

Chuỗi String[n] n kí tự, mỗi kí tự 1 byte char[n] n kí tự, mỗi kí tự 1 byte

Lưu ý:

 Mọi kiểu dữ liệu dạng số đều hữu hạn và rời rạc

 Hiểu biết cách biểu diễn số nguyên, số thực trongv máy tính

 Chọn lựa kiểu dữ liệu niến sao co phù hợp

3 Hằng (constant)_ phương tiện làm rõ chương trình

 Hằng trong chương trình là một loại giá trị không đổi trong suốt quá trình thi hành

 Mục đích của hằng là giúp cho chương trình dễ hiểu hơn, hoặc điều chỉnh chương trình dễ dàng hơn

 Hắng phải được khai báo trước khi sử dụng

 Hắng gồm hai thành phần: tên hằng và giá trị gán cho hằng

Có các loại hằng sau:

 Hằng số: hằng nguyên, hằng thực- Vd: 2, -8, 30, 2.5, -2.0, 1E-3,…

 Hằng bool: có hai gí trị là True v1 False

 Hằng kí tự: có hai dạng biểu diễn sau:

Đặt kí tự trong dấu nháy đơn Dùng mã ASCII

 Hằng chuỗi kí tự:

Pascal , đặt chỗi kí tự trong dấu nháy đơn

C, đặt chuỗi kí tự trong dấu nháy kép

4 Lệnh gán (Assignment)-phương tiện làm thay đổi giá trị của biến

 Lệnh gán dùng để thay đổi gí trị hiện thời của biến

 Lện gán không phải là phép so sánh giữa hai biểu thức, mà là thao tác tính kết quả biểu thức phía bên phải lệnh gán, sau đó đặt kết quả này vào phía bên trái lệnh gán

 Lệnh gán làm thay đổi giá trị hiện thời biến và không thể nào lấy lại được giá trị này

Biểu diễn bằng lưu đồ: A B

Ý nghĩa: đưa giá trị biểu thức bên phải (B) gán vào cho biến ở vế trái (A)

Trang 4

Cú pháp:

 Pascal <indentifier> := <expression>;

 C <indentifier> = <expression>;

5 Câu lệnh xuất / nhập

PASCAL:

Readln(arg1,arg2,…,argn);

Read(arg1,arg2,…,argn);

Lệnh Readln sau khi gán xong cho tất cả các biến trong danh sách, con trỏ sẽ chyển sang đấu dòng kế tiếp Còn lệnh Read thì không chuyển

Lệnh Read không tham số dùng để chờ người dùng nhấn phím enter

Writeln(arg1,arg2,…,argn);

Write(arg1,arg2,…,argn);

Sau khi thực hiện lệnh Writeln,con trỏ sẽ được chuyển sang đầu dòng kế tiếp Lệnh Write thì không chuyển

Lệnh Writeln không tham số dùng để chuyển con trỏ sang dòng kế tiếp

C:

scanf(control string,arg1,arg2,…,argn);

printf(control string, arg1,arg2,…,argn);

6 Chương trình ở gốc độ người lập trình và gốc độ người sử dụng

Gốc độ người lập trình thì hiểu biến là vùng bộ nhớ có cấu trúc được mô tả bởi một kiểu dữ liệu kiểu dữ liệu là cấu trúc dữ liệu được định nghĩa

Gốc độ người sử dụng thì chỉ hiểu được cách biểu diễn thông tin trong thế giới thực và kiểu

dữ liệu là cách biểu diễn loại thông tin trong thế gới thực

II Thủ tục / hàm dựng sẵn trong NNLT có mục đích gì?

Thủ tục và hàm trong NNLT có mục đích giúp cho người lập trình dễ dàng hơn khi thực hiện viết một chương trình nào đó Nhờ có thủ tục và hàm dựng sẵn nên các chương trình có một tính thống nhất chung về cú pháp nên dễ dàng trao đôi thông tin qua lại

III Bài tập thực hành handout02 phần nâng cao

1 Bài 1: Nhập vào hai số nguyên a và b có đủ 3 chữ số Trình bày phép nhân a x b

ra màn hình

Bước 1: Xác định bài toán:

Input: Hai số nguyên a và b có 3 chữ số

Output: Trình bày phép nhân a x b ra màn hình

Trang 5

Bước 2: Phân tích:

 Thành phần dữ liệu: a,b: số nguyên;

 Thành phần sử lý:

b chia 100, lấy phần dư

Lấy phần dư chia cho 10;

Bước 3: Thiết kế:

 Đơn vị dữ liệu: a,b:int;

 Đơn vị xử lý:

B1: nhập hai số a và b;

B2: Phân tích số b thành 3 số riêng biệt:

c←b/100;

t←b%100;

d←t/10;

e←t%10;

B3: thực hiện phép nhân:

g←e*a;

h←d*a;

j←c*a;

k←a*b;

B4: xuất ra phép axb,kết thúc

 Thuật toán:

Trang 6

Bước 4: Cài đặt: Viết chương trình bằng ngôn ngữ C

#include “stdio.h”

#include “conio.h”

#include “math.h”

void main()

{

long a,b,c,t,d,e,g,h,j,k;

printf(“nhap vao hai so a va b co du 3 chu so: “);

scanf(“%ld%ld”,&a,&b);

c←b/100;

t←b%100;

d←t/10;

e←t%10;

g←e*a;

h←d*a;

j←c*a;

k←a*b;

printf(“thuc hien phep nhan a va b”);

printf(“%8ld\n”,a);

printf(“*\n”);

printf(“%8ld\n”,b);

printf(“ _ _ _ _ _ _\n”):

printf(“%8ld\n”,g);

printf(“%7ld\n”,h);

printf(“%6ld\n”,j);

printf(“_ _ _ _ _ _ _ _\n”);

printf(“%8ld”,k);

getch();

}

Trang 7

2 Bài 2: Nhập vào số nguyên x và xuất ra màn hình kết quả

1 +

1 +1 +

Bước 1: Xác định bài toán:

Input: số nguyên x Output: Kết quả biểu thức trên

Bước 2: Phân tích:

 Thành phần dữ liệu: x:số nguyên; ketqua:số thực;

 Thành phần xử lý: viết biểu thức

Bước 3: thiết kế

 Đơn vị dữ liệu: x:int;

ketqua: float;

Thuật toán:

B1: nhập số nguyên x

B2: ketqua←x*x/(1+(x*x/(1+(x*x/(1+x*x)))))

B3: xuất ketqua và kết thúc

Trang 8

Bước 4: Cài đặt: chương trình được việt bằng ngôn ngữ C

#include “stdio.h”

#include “conio.h”

#include “math.h”

void main()

{

float x,ketqua;

printf(“nhap vao so nguyen x: “);

scanf(“%d”,&x);

ketqua=pow(x)/(1+(pow(x)/(1+(pow(x)/(1+pow(x))))));

printf(“ket qua bieu thuc la: %.4f”,ketqua);

getch();

}

Trang 9

3 Bài 3: Nhập vào hai số nguyên x và y Xuất ra màn hình kết qua sau:

3 + ( + )

Bước 1: Xác định bài toán:

Input: Hai số nguyên a và b Output: Xuất ra kết quả biểu thức trên

Bước 2: Phân tích

 Thành phần dữ liệu: x,y:int; ketqua:double;

 Thành phẩn xử lý: viết biểu thức

Bước 3: Thiết kế:

 Đơn vị dữ liệu: x,y, ketqua:double;

Thuật toán:

B1: nhập vào hai số nguyên x và y;

B2: ketqua←sqrt((1+x*x+y*y))/(3+(x+y)*(x+y));

B3: xuất ra ketqua; kết thúc;

Trang 10

Bước 4: Cài đặt: Chương trình được viết bằng ngôn ngữ C;

#include “stdio.h”

#include “conio.h”

#include “math.h”

void main()

{

double x,y,ketqua;

printf(“nhap vao hai so nguyen x va y: “);

scanf(“%%lf%lf”,&x,&y);

ketqua=sqrt(1+pow(x,2)+pow(y,2))/(3+pow((x+y),2));

printf(“ket qua cua bieu thuc la: %lf “,ketqua);

getch();

}

Ngày đăng: 23/10/2014, 01:00

Xem thêm

TỪ KHÓA LIÊN QUAN

w