SlideShare a Scribd company logo
1 of 49
http://2learner.edu.vn/vle/course/view.php?id=15




                               Yêu cầu thực hiện ở toàn khóa




                            THẢO LUẬN CÁC CHỦ ĐỀ LIÊN QUAN

                            Yêu cầu thực hiện ở Week 01~ Week 03

                                                                       1
Hướng dẫn thực hiện đồ án
 Nội dung nộp
    Thực hiện các yêu cầu của phần handouts (ho01, ho02, …)
    Các nội dung tự nghiên cứu – bài tập (nếu có)
 Hình thức nộp
    Sử dụng MS. Word để soạn thảo báo cáo – lưu trữ trên 1 file
      (.doc)
    Tên file: Nhom01-bt01.doc, Nhom02-bt01.docx, ….
    Nộp online tại trang ACeLS – phần Assignments




                                           Lưu ý: Thời hạn yêu cầu nộp bài

                                                                                   2
TRÌNH BÀY MỘT ĐỒ ÁN

 TRANG BÌA                            ĐẠI HỌC SƯ PHẠM TP.HỒ CHÍ MINH
                                        Khoa CÔNG NGHỆ THÔNG TIN
 MỤC LỤC                                Học phần LẬP TRÌNH CƠ BẢN
 Câu 1 -……………
      1.1. ………………
      1.2. ………………
 Câu 2 - ……………
      2.1. ……………………
           2.1.1. …………………
           2.2.2. …………………                   ĐỒ ÁN 01
      2.2. ………………………                            (Nhom01-bt01.doc)

 …………………………
 TÀI LIỆU THAM KHẢO                Nội dung trình bày:
 PHỤ LỤC                           1...
                                   2…




                                           Người hướng dẫn: Ths. Lê Đức Long
Xem thêm hướng dẫn trình bày               Sinh viên thực hiện:
trong file Hinh thuc bao cao.doc                  1. Nguyễn Tấn Đạt – 01.020.085
                                                  2. Đỗ Duy Thiện – 01.020.204
                                                  Lớp : Tin – K1


                                                                                   3
Trường Đại Học Sư Phạm Tp.HCM
                                                                         Khoa Công Nghệ Thông Tin
                                                                            Bộ môn Kỹ thuật dạy học




          Lập trình cơ bản
Introduction to Programming (using C/Pascal)
                        Lê Đức Long
                                   02/2012
         Link for Materials: http://www.2learner.edu.vn/ldlongdhsp/Intro2Programming
Một số quy ước trên slide

        Tắt màn hình máy tính


         Được dùng máy tính

         Làm việc theo nhóm

         Ghi chép bằng văn bản


          TỰ NGHIÊN CỨU- ĐỌC THÊM
                                       5
Củng cố – ôn tập …
Các vấn đề đã học – Week 01



                                      Thực hiện và viết lại bằng
                                      báo cáo (.doc) nộp cho thầy
                                      – qua hệ thống online
                                        Bắt buộc & Điều kiện cần



                                             Thực hiện và cài đặt
                                             trên máy cá nhân




                                                                   6
Củng cố – ôn tập …
Các vấn đề đã học – Week 02

                                     Thực hiện và viết lại bằng
                                     báo cáo (.doc) nộp cho thầy
                                     – qua email sau mỗi tuần


                                                    Điều kiện cần




                                             Thực hiện và cài đặt
                                              trên máy cá nhân
                                               (C/C++/Pascal)




                                                                    7
Củng cố – ôn tập …
Các vấn đề đã học – Week 03

                                     Thực hiện và viết lại bằng
                                     báo cáo (.doc) nộp cho thầy
                                     – qua email sau mỗi tuần


                                                    Điều kiện cần




                                             Thực hiện và cài đặt
                                              trên máy cá nhân
                                               (C/C++/Pascal)




                                                                    8
THUẬT TOÁN LÀ GÌ ?
 Thuật toán là một tập hợp các hướng dẫn nhằm thực hiện một
  công việc nào đó. Đối việc giải quyết vấn đề – bài toán , thuật
  toán được hiểu là một tập hữu hạn các hướng dẫn rõ ràng để
  người giải bài toán có thể theo đó mà giải quyết được bài toán.
  Như vậy, thuật toán là một phương pháp thể hiện lời giải của
  vấn đề, bài toán.
 Việc nghiên cứu các thuật toán có vai trò rất quan trọng trong
  khoa học máy tính vì máy tính chỉ giải quyết vấn đề được khi
  đã có hướng dẫn giải rõ ràng và đúng.


 Trong khoa học máy tính, thuật toán được định
  nghĩa là một dãy hữu hạn các bước không mập mờ
  và có thể thực thi được, quá trình hành động theo
  các bước này phải dừng và cho được kết quả như
  mong muốn.
                                                                                 9
Tính chất cơ bản thuật toán

 Xác định: rõ ràng, không mập mờ và các bước
 giải khả thi có thể thực thi được
    Mập mờ: thiếu thông tin hoặc có nhiều chọn lựa
     nhưng không đủ điều kiện để quyết định
    Thực thi được: xét trong điều kiện hiện tại của bài toán
 Hữu hạn: số bước là hữu hạn và có tính chất
  dừng  dễ bị vi phạm nhất
    Sau một thời gian thi hành hữu hạn thì phải cho kết
     quả mong muốn
 Đúng: với mọi trường hợp của bài toán
    Tính chất khó đạt nhất

                                                           10
Các đặc trưng khác của thuật toán

 Đầu vào và đầu ra (Input/Output) : mọi thuật
  toán đều nhận dữ liệu đầu vào, xử lý nó và
  cho ra kết quả cuối cùng.
 Tính hiệu quả (Effectiveness) : dựa trên khối
  lượng tính toán, không gian và thời gian khi
  thuật toán được thi hành. Là yếu tố quyết
  định để đánh giá, chọn lựa cách giải quyết
  vấn đề – bài toán trên thực tế.
 Tính tổng quát (Generalliness): áp dụng
  được cho mọi trường hợp của bài toán.


                                                          11
Biểu diễn thuật toán


 Cách 1: Dùng ngôn ngữ tự nhiên
 Cách 2: Dùng lưu đồ / Vẽ sơ đồ khối
 Cách 3: Dùng mã giả




                                        12
HỌC NNLT NHƯ THẾ NÀO ???




                              13
Từ mã nguồn …. đến mã thực thi ?
                Những câu lệnh/chỉ thị do người lập trình            .c/.cpp; .pas; .java
  Mã nguồn      viết được lưu thành tập tin dạng văn bản
                (tuân thủ cú pháp của một NNLT cấp cao)



                Loại bỏ những khoảng                Quá trình chuyển từ tập tin
  Tiền xử lý
                trắng thừa, chú thích, …            nguồn sang tập tin thực thi


 Mã nguồn đã
được làm sạch              Biên dịch       Biên dịch ra mã thực thi (tức mã máy)


                                              Liên kết với các thư
                                              viện để tạo file thực thi
                                                                           Mã thực thi
                          Mã thực thi              Liên kết                hoàn chỉnh

                                                                   Tập tin dạng mã máy
                                                                   (.com; .exe)       14
Các bước xây dựng chương trình

             BÀI TOÁN                                       CHƯƠNG TRÌNH



              Xác định
              bài toán                                         Kiểm thử
Làm rõ các yêu                                                        Xây dựng bộ dữ
cầu của bài toán                                                     liệu thử nghiệm




               Phân tích
                bài toán
                                                                  Cài đặt
 Mô tả các thành phần
 của chương trình (dữ         Thiết kế                         Lập trình để tạo chương
 liệu và xử lý)                                             trình nguồn bằng một
                             chương trình
                                                                NNLT cụ thể
                                     Tổ chức đơn vị dữ
                                     liệu, đơn vị xử lý                         15
Áp dụng mô hình như sau:
 Xác định bài toán  phân tích  thiết kế  cài đặt  kiểm thử
1.Xác định bài toán: làm rõ yêu cầu của bài toán, xác định đầu vào (input) và đầu
ra (output), cũng như các ràng buộc toàn vẹn (nếu có)
2.Phân tích bài toán: dựa trên hai thành phần
      1.Thành phần dữ liệu: phân tích các thành phần dữ liệu vào/ra, trung gian
      của bài toán – loại dữ liệu tương ứng
      2.Thành phần xử lí: phân tích cách xử lí bài toán bằng công cụ toán học,
      hoặc bằng cách xử lí thông thường của nghiệp vụ, trình bày dưới dạng ý
      tưởng giải quyết
•Thiết kế chương trình: dựa trên hai đơn vị
      1.Đơn vị dữ liệu: thiết kế các thành phần dữ liệu bao gồm tên biến, kiểu dữ
      liệu, định nghĩa kiểu dữ liệu (nếu có)
      2.Đơn vị xử lí: bao gồm
             •Sơ đồ thủ tục/hàm
             •Mô tả các thủ tục/hàm (prototype)
             •Thuật giải tổng quát/chi tiết
•Cài đặt: sử dụng một NNLT cụ thể (C/Pascal) để cài đặt
•Kiểm thử: xây dựng bộ dữ liệu kiểm thử – nên đề xuất từ 5-10 bộ dữ liệu để
kiểm thử chương trình. Sử dụng chức năng Debug để kiểm lỗi nếu có.



                                                                       Niklaus Wirth (ETH)          16
Nguyên lý thứ nhất !!!


        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 (variable)
        của chương trình thông qua các quy tắc xác định của NNLT cụ thể (*)




(*) Hoàng Kiếm (2000), Giải một bài toán trên máy tính như thế nào – Tập 1, NXB Giáo dục
                                                                                                        17
Tập kí tự dùng trong NNLT bậc cao

 Ngôn ngữ C được xây dựng trên bộ ký tự
 sau:
      26 chữ cái hoa                     A B C .. Z
      26 chữ cái thường                  a b c .. z
      10 chữ số                          0 1 2 .. 9
      Các ký hiệu toán học               +-*/=()
      Ký tự gạch nối                     _
      Các ký tự khác                     . , : ; [ ] {} !  & % # $ ...
  Dấu cách (space) dùng để tách các từ.
   Ví dụ: tiếng VIET NAM có 8 ký tự, còn VIETNAM chỉ có 7 ký tự.
 Tập kí tự dùng trong NNLT Pascal thì sao ???
                                                                       18
BIẾN (VARIABLE)

  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
        Giá 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

Ví dụ:   STT    50            Biến có tên STT, kiểu số nguyên, đang lưu trữ giá trị là 50
           DiemTB 7.8           Biến có tên DiemTB, kiểu số thực, đang lưu trữ giá trị là 7.8
           TenSV “Long”         Biến có tên TenSV, kiểu chuỗi kí tự, đang lưu trữ một dòng chữ


                 o Ý nghĩa của biến chỉ được hiểu bởi con người, kô có nghĩa với PC;
                 o Tên biến cần gợi nhớ và thống nhất;
                 o Tên biến phải hợp lệ – tuân thủ theo quy ước của NNLT.

                                                                                                    19
KIỂU DỮ LIỆU (DATA TYPE)

 Trong NNLT, loại giá trị mà biến lưu trữ được
  phân thành những kiểu dữ liệu khác nhau
 Thông thường, trong một NNLT có các kiểu
  dữ liệu cơ sở sau:
   Kiểu dữ liệu số: gồm có 2 loại
     • Kiểu dữ liệu số nguyên
     • 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 dữ liệu có 1 miền giá trị khác nhau
                                                   20
Kiểu số nguyên
     Có nhiều kiểu số nguyên                                                                                            Reading(*)

     Tuỳ vào độ lớn của miền giá trị, có:
            Số nguyên 8 bit ( 1 byte)                                   -128                 0                    127
                  • Loại có dấu: -128 → 127                                                    0                               255
                  • Loại không dấu: 0 → 255
            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
            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,294,967,295
     Một số ngôn ngữ lập trình còn hỗ trợ kiểu số nguyên 64 bit, 128 bit
     Kiểu số nguyên k bit sẽ chiếm bộ nhớ k bit dữ liệu
(*) Lê Đức Long (2005), GT Tin học đại cương ĐHSP – Phần Mã hoá và Biểu diễn dữ liệu trong máy tính
                                                                                                                              21
Kiểu số thực
      Có 2 dạng số thực thường gặp
                                                                                                                   Reading(*)
              Số thực 32 bit (4 byte)
                    • Miền giá trị: trong khoảng ± 3.4E-38 đến ± 3.4E+38
                    • Có 8 chữ số có nghĩa sau dấu phẩy
              Số thực 64 bit (8 byte)
             • Miền giá trị: trong khoảng ± 1.7E-308 đến ± 1.7E+308
             • Có 16 chữ số có nghĩa sau dấu phẩy
       Một số ngôn ngữ lập trình còn hỗ trợ số thực 80 bit (10 byte)

            Loại        Pascal                Miền giá trị                  C                     Miền giá trị
          32 bit           real        2.9x10-39…3.4x1039                     float       3.4x10-38…3.4x1038
          64 bit         double        5.0x10-324…1.7x10308                 double        1.7x10-308…1.7x10308

(*) Lê Đức Long (2005), GT Tin học đại cương ĐHSP – Phần Mã hoá và Biểu diễn dữ liệu trong máy tính

                                                                                                                           22
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ữ một chuỗi kí tự

      Loại    Pascal             Miền giá trị             C              Miền giá trị
     Logic     boolean             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




                 o Mọi kiểu dữ liệu dạng số đều hữu hạn và rời rạc;
                 o Hiều biết cách biểu diễn số nguyên, số thực trong máy tính;
                 o Chọn lựa kiểu dữ liệu của biến sao cho phù hợp.

                                                                                                       23
The standard keywords
       TỪ KHÓA DÀNH CHO NGÔN NGỮ C/C++


auto             extern                sizeof
break            float                 static
case             for                   struct
char             goto                  switch
const            if                    typedef
continue         int                   union
default          long                  unsigned
do               register              void
double           return                volatile
else             short                 while
enum             signed

    CẦN PHÂN BIỆT GIỮA THUẬT NGỮ TỪ KHÓA (KEYWORD)
    VỚI ĐỊNH DANH (IDENTIFIER)
                                                            24
HẰNG (CONSTANT)

 Hằng trong chương trình là một 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 2 thành phần: tên hằng và giá trị gán cho hằng

 Có các loại hằng sau:
     o Hằng số: hằng nguyên, hằng thực – Vd: 2, -8, 30, 2.5, -2.0, 1E-3, …
     o Hằng bool: có 2 giá trị là true và false
     o Hằng kí tự: có 2 dạng biểu diễn sau
           Đặt kí tự trong dấu nháy đơn
           Dùng mã ASCII
               o Pascal:     #d        (d là mã ASCII ở dạng thập phân)
               o C:          xFF      (FF là mã ASCII ở dạng hexa)
     o Hằng chuỗi kí tự
           Pascal, đặt chuỗi kí tự trong dấu nháy đơn – Vd: ‘Duc Long’
           C, đặt chuỗi kí tự trong dấu nháy kép – Vd: “Duc Long”

                                                                                         25
Tóm tắt
                                                     Programmer
           End-User




Biểu diễn thông tin                               Vùng nhớ có cấu trúc
trong thế giới thực         Biến                  được mô tả bởi một kiểu
                                                  dữ liệu
  Số nguyên 4                                        Biến kiểu số nguyên có giá trị là 4
  Phân số 4/3                                        Biến có kiểu PHANSO
  Ngày 15/9/2006                                     Biến có kiểu Ngày




Biểu diễn loại thông                                Cấu trúc dữ liệu được
tin trong thế giới thực
                          Kiểu dữ liệu              định nghĩa
                                   Kiểu cơ sở – đã tạo sẵn dưới dạng từ khóa trong NNLT
                                   Kiểu tự định nghĩa – kiểu do người lập trình tự tạo

                                                                                   26
Cấu trúc tổng quát của ct C




                                   27
Hãy làm phép so sánh ?




                             28
Câu lệnh – Chú thích (C)

                   Chú thích,
                        -Nhiều dòng /* … */
                        -Một dòng   //




                   Câu lệnh, kết thúc bằng dấu ;




                                                 29
LỆNH GÁN (ASSIGNMENT)

 Lệnh gán dùng để thay đổi giá trị hiện thời của biến
 Lệnh 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 biến ở
phía bên trái lệnh gán.
 Lệnh gán làm thay đổi giá trị hiện thời của 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ị của biểu thức vế phải (B) gán vào cho biến ở vế trái (A)

    Cú pháp lệnh gán         <biến> := <biểu thức>;         <biến> = <biểu thức>;
     A ←5                             A := 5;                          A = 5;
     A←B                              A := B;                          A = B;
     A←B+5                            A := B + 5;                      A = B +5;
     A←A+1                            A := A + 1;                      A = A +1;
     A ← (A + B) * C + D              A := (A + B) * C + D;            A = (A + B) * C + D;

                                Cú pháp trong C: <indentifier> = < expression>              30
Phép toán số học
       Toán tử      Pascal   C
Toán tử hai ngôi

Cộng                 +       +
Trừ                  -       -
Nhân                 *       *
Chia (số thực)       /       /        5 / 2 = 2.5
Chia (số nguyên)    DIV      /        5 div 2 = 2
Chia lấy phần dư    MOD      %        5 mod 2 = 1
Toán tử một ngôi
Toán tử đổi dấu       -      -
                                                    31
Phép toán so sánh và logic
                  Phép toán                         Pascal                           C
                   Nhỏ hơn                             <                              <
                       Lớn hơn                         >                              >
                So sánh bằng                           =                             ==
                  Khác nhau                           <>                             !=

           Nhỏ hơn hoặc bằng                          <=                             <=

           Lớn hơn hoặc bằng                          >=                             >=

                   Phép not                           not                             !
                   Phép and                           and                            &&
                       Phép or                         or                             ||
Cho biết ý nghĩa:      A := B; A = B; {trong ngon ngu Pascal}    A = B; A == B; // trong ngon ngu C
                          B := (5<7) AND (7<9); {B kiểu Boolean}   B = (5<7) && (7<9); // int B
                          x := 5;                                   x = 5;
                          B := (x<1) OR (x>10);                     B = (x<1) || (x>10);
                          B := (x<1) + (x<2);
                                                                                                         32
Một số hàm toán học dựng sẵn
                                                                            Kiểu                     Kiểu
  Pascal                C                       Mô tả
                                                                          tham số                    trả về

  abs(x)            abs(x)         Tính trị tuyệt đối                         Số                 Cùng kiểu

  exp(x)            exp(x)         Tính hàm ex                                Số                   Số thực

    ln(x)            log(x)        Tính ln                                    Số                   Số thực

 round(x)               √          Làm tròn phần nguyên                Số thực              Số nguyên

   sqr(x)               √          Bình phương                               Số                Cùng kiểu

  sqrt(x)           sqrt(x)        Căn bậc 2                                  Số                   Số thực
      √            pow(x,y)        Tính xy                                 Số, Số                  Số thực
 trunc(x)               √          Lấy phần nguyên                      Số thực              Số nguyên

Đọc thêm : Apendix B. B.4. B.W.Kernirghan & D.M.Ritchie (1988), The C programming language, 2nd Ed., Prentice Hall


                                                                                                                  33
Biểu thức toán học

       Toán học                          Máy tính

        b2 – 4ac               b*b-4*a*c hoặc sqr(b)-4*a*c

   − b + b − 4ac
              2
                              ((-b)+sqrt(sqr(b)-4*a*c))/(2*a)
         2a

  p( p − a)( p − b)( p − c)      sqrt(p*(p-a)*(p-b)*(p-c))

[a 2 (b 2 + c 2 ) + 5](7c)    (sqr(a)*(sqr(b)+sqr(c))+5)*(7*c)

                                                             34
ĐỘ ƯU TIÊN CỦA CÁC TOÁN TỬ
                    +                 PASCAL                                        C
                          Lời gọi hàm                          Lời gọi hàm
                          Biểu thức trong ( )                   Biểu thức trong ( )
                          Toán tử NOT                           Toán tử NOT (!)
                          Toán tử đổi dấu -                   Toán tử đổi dấu -
                          *, / , DIV, MOD, AND                    *, / , %, +, -
                          + , - , OR                              <, <=, >, >=
                          = , <> , < , > , >=, <=                 == , !=
                                                                  && , ||
                  Thứ tự tính toán biểu thức: Left  Right
   Nêu thứ tự thực hiện biểu thức sau: sqr(a)*(sqr(b)+sqr(c))+5)*7+c
                                             (a+5)*b+(c/2+b)-10*a*a/2*c
Xét các biểu thức sau: B := x <1 and x>2;                              B = x <1 && x>2; // int B, x= 5;
Cho x:=5; B kiểu Boolean; B := (x<1) and (x>2);                           B = (x<1) + (x<2); // int B, x= 0;
Làm bài tập C.1, 2, 3. trong B. S. Gottfried (1996), Programming with C, 2nd Ed., SCHAUM’S Outline Series - McGRALL-HILL

                                                                                                                       35
Nguyên lý thứ hai !!!

        Chuyển đổi quá
      trình tính toán của                                         Các cấu trúc của
            bài toán                                               chương trình




         MỌI QUÁ TRÌNH TÍNH TOÁN ĐỀU CÓ THỂ MÔ TẢ VÀ THỰC HIỆN
         DỰA TRÊN BA CẤU TRÚC CƠ BẢN:
                        CẤU TRÚC TUẦN TỰ
                        CẤU TRÚC RẼ NHÁNH
                        CẤU TRÚC LẶP

C. Bohm & G. Jacopini (1966), Flow Diagrams, Turing Machines and Languages With Only Two Formation
Rules. In Communications of ACM, Vol.9, Number 5, May 1966.
                                                                                                36
Cấu trúc tuần tự
  Cấu trúc mặc định trong mọi ngôn ngữ lập trình
  Các thao tác được thực hiện tuần tự từ thao tác đầu tiên đến thao
     tác cuối cùng
 Ví dụ: thuật toán có n bước, thì việc thi hành sẽ tiến hành tuần tự từ
     bước thứ 1 đến bước thứ n

                                                                    Bắt đầu



     Lệnh 1
                                                         B.1         a, b,c,x



     Lệnh 2        Lệnh 3
                                                      B.2      Px ß a*sqr(x)+b*x+c



                                           Lệnh n        B.3           Px



Sơ đồ khối của cấu trúc tuần tự                                     Kết thúc


                                                                                 37
Câu lệnh nhập/xuất
Readln(arg1, arg2, …, argn)                                             scanf(control string, 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ẽ được chuyển sang đầu hàng kế                                     Mỗi biến phải đứng trước
tiếp. Còn lệnh read thì không chuyển.                                                  bởi 1 dấu &, nhưng với biến
Lệnh readln không tham số dùng để chờ người dùng                                       chuỗi, mảng thì kô có.
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 hàng kế tiếp - Lệnh Write thì không chuyển. printf(control                   string, arg1, arg2, …, argn)
Lệnh Writeln không tham số dùng để chuyển con trỏ
sang dòng kế tiếp.

 Mã đặc tả   Kiểu dữ liệu                   Tác dụng

    %c          char        1 KұS [ Xҩt 1 kí tự có mã ASCII tương ứng
                                S

    %d       Số nguyên      1 KұS [ Xҩt 1 số nguyên
                                S

    %f         Số thực      1 KұS [ Xҩt 1 số thực
                                S

    %s       Chuỗi kí tự    1 KұS [ Xҩt 1 chuỗi kí tự
                                S

Xem thêm C.4. trong B. S. Gottfried (1996), Programming with C, 2nd Ed., SCHAUM’S Outline Series - McGRALL-HILL

                                                                                                                     38
Quan sát và nhận xét …




Xem thêm C.4. trong B. S. Gottfried (1996), Programming with C, 2nd Ed., SCHAUM’S Outline Series - McGRALL-HILL   39
Tóm tắt
                                               Programmer
           End-User




Các bước thực hiện của 1                   Những chỉ thị/chỉ dẫn
nghiệp vụ trong thực tế
                              Lệnh           trong chương trình nguồn

Một nghiệp vụ trong                        Bao gồm các lệnh để thực hiện
thực tế                      Hàm xử lý     trọn vẹn 1 nghiệp vụ


                                           Hệ thống những hàm xử lý
Một tổ chức bao gồm      Chương trình     để chung 1 chỗ
nhiều nghiệp vụ



                                                                     40
Bài tập / thực hành (C/Pascal)




                                     41
C.2. Các thành phần cơ bản
  Một số khái niệm khác – đối với NNLT C
           (không có trong Pascal)
                                                  42
Phép toán trên bit

Phép toán    Kí hiệu    Ví dụ:
                       int x = 5;         // x = 101b
Phép AND       &
                       int y = 4;         // y = 100b
Phép OR         |
Phép XOR       ^       int r1 = x & y;    // r1 = 100b
  Bù bit       ~       int r2 = x | y;    // r2 = 101b
                       int r3 = ~x;       // r3 = 010b
 Dịch trái    <<
                       int r4 = x << 3;   // r4 = 101000b
Dịch phải     >>       int r5 = x >> 1;   // r5 = 10b



                                                        43
Chuyển đổi kiểu dữ liệu (Type Casting)
 Trường hợp 1:
Ví dụ:     float f = 3.5;
    int i = 2;
    Biểu thức f + i thì i sẽ tự động chuyển sang kiểu float
 Khi hai toán hạng trong một phép toán khác kiểu dữ liệu thì kiểu dữ
 liệu thấp sẽ nâng thành kiểu dữ liệu cao
Ví dụ:   float f = 3 / 2; // Kết quả sẽ là 1
         float f = 3.0 / 2; // Kêt quả sẽ là 1.5
 Trường hợp 2: Trong lập trình, đôi lúc cần phải chuyển từ kiểu này sang
   kiểu khác (ép kiểu)
Cú pháp: (<data type>) expression
Ví dụ:   float f = (float) 3 / 2; // Kết quả sẽ là 1.5
         Cú pháp này sẽ chuyển số nguyên 3 thành số thực 3.0
         float f = 5.5; Biểu thức ((int) f) % 2 sẽ chuyển giá trị của f thành 5 (mất phần lẻ)
         int i = 7; float f = 8.5; Biểu thức (i + f) % 4 bị sai !!!!! TẠI SAO ???
         Phải viết lại là ((int) (i + f) % 4


                                                                                                           44
Phép gán mở rộng
            5 phép gán mở rộng: + = ; - = ; * = ; / = ; % =
Cú pháp chung: ví dụ như + =
              expression 1 + = expression 2
Nghĩa là tương đương:
              expression 1 = expression 1 + expression 2
 Ví dụ: Giả sử int i = 5; j = 7; float f = 5.5; g = -3.25




                                                                  45
Các phép tăng/giảm 1 đơn vị
Phép tăng: ++<identifier> ; <identifier>++
Phép giảm: --<identifier> ; <identifier>--
 Lưu ý:
   Phép toán ++ (hay --) đứng trước tên biến sẽ thực hiện trước
   Phép toán ++ (hay --) đứng sau tên biến sẽ thực hiện sau
  Ví dụ:
     int i = 3;

     int t1 = i++;   //gán t1 bằng i trước rồi mới tăng i
     int t2 = ++i;   //tăng i rồi mới gán cho t2
     …..

     i ++;           // i = i + 1;
     ++i;            // i = i + 1;


                                                                   46
Đức Long - 2012
Biểu diễn số thực trong máy tính

 Có 2 dạng: dạng dấu chấm tĩnh và dạng dấu chấm động
 Dạng dấu chấm động được sử dụng phổ biến.
Biểu diễn dưới dạng dấu chấm động
   Mọi số thực có thể được phân tích dưới dạng:




   Để biểu diễn số thực, chỉ cần lưu số nguyên b, và thập phân của của số a
   (cũng là số nguyên)
   Với ví dụ trên, số thực 1 cần lưu 2 số nguyên là +123456789 và +3
                   và số thực 2 cần lưu 2 số nguyên là +28 và -2
   Trong đó:
         Phần định trị: phần thập phân của số a
         Phần luỹ thừa: số b
                                                                                           48
Biểu diễn số thực trong máy tính
 Trong máy tính, người ta chọn c = 2
 Số thực k bit sẽ có m bit dùng để lưu phần định trị
  và n = k-m bit dùng để lưu phần lũy thừa
 Số thực k bit có giá trị tuyệt đối lớn bao nhiêu tùy
  thuộc vào m bit nhiều hay ít
 Số thực k bit chính xác bao nhiêu chữ số tùy thuộc
  vào n bit nhiều hay ít
    Số thực 32 bit dùng 8 bit cho phần lũy thừa và 24 bit cho phần
   định trị
    Số thực 64 bit dùng 12 bit cho phần lũy thừa và 52 bit cho phần
   định trị

                                                                  49

More Related Content

Viewers also liked

SocialConnX - Social Media for the Gaming Industry
SocialConnX - Social Media for the Gaming IndustrySocialConnX - Social Media for the Gaming Industry
SocialConnX - Social Media for the Gaming Industryt2 Marketing
 
Relazione Silhouette Vss
Relazione Silhouette VssRelazione Silhouette Vss
Relazione Silhouette VssLauraPucci
 
Sandra Campbell, U.S. Commercial Service, Acting Director & Senior Internatio...
Sandra Campbell, U.S. Commercial Service, Acting Director & Senior Internatio...Sandra Campbell, U.S. Commercial Service, Acting Director & Senior Internatio...
Sandra Campbell, U.S. Commercial Service, Acting Director & Senior Internatio...Energizemybiz
 
Nicol,zeltia y paula
Nicol,zeltia y paulaNicol,zeltia y paula
Nicol,zeltia y paulaA Solaina
 
Gacmo mautim
Gacmo mautim Gacmo mautim
Gacmo mautim taivang
 
10 31 tinh ca
10 31 tinh ca   10 31 tinh ca
10 31 tinh ca taivang
 
llamame.ppt
llamame.pptllamame.ppt
llamame.pptcexfod
 
Review and analysis of "More than a Theory" 201004
Review and analysis of "More than a Theory" 201004Review and analysis of "More than a Theory" 201004
Review and analysis of "More than a Theory" 201004MarkTab Ministries
 
Cleantech Investment And Innovation Trends 7 27 11
Cleantech Investment And Innovation Trends 7 27 11Cleantech Investment And Innovation Trends 7 27 11
Cleantech Investment And Innovation Trends 7 27 11James_C_Chapman
 
Botas rojas
Botas rojasBotas rojas
Botas rojasloramado
 
Simone Soligo 269724 Iuavcamp
Simone Soligo 269724 IuavcampSimone Soligo 269724 Iuavcamp
Simone Soligo 269724 IuavcampSimoneSoligo
 
C gould eg2010
C gould eg2010C gould eg2010
C gould eg2010Bill Ott
 
Eg2010 bill ptacek
Eg2010 bill ptacekEg2010 bill ptacek
Eg2010 bill ptacekBill Ott
 

Viewers also liked (20)

Bullying
BullyingBullying
Bullying
 
SocialConnX - Social Media for the Gaming Industry
SocialConnX - Social Media for the Gaming IndustrySocialConnX - Social Media for the Gaming Industry
SocialConnX - Social Media for the Gaming Industry
 
Relazione Silhouette Vss
Relazione Silhouette VssRelazione Silhouette Vss
Relazione Silhouette Vss
 
Flyer Sloopadviseurs
Flyer SloopadviseursFlyer Sloopadviseurs
Flyer Sloopadviseurs
 
Notas 7º
Notas 7ºNotas 7º
Notas 7º
 
Sandra Campbell, U.S. Commercial Service, Acting Director & Senior Internatio...
Sandra Campbell, U.S. Commercial Service, Acting Director & Senior Internatio...Sandra Campbell, U.S. Commercial Service, Acting Director & Senior Internatio...
Sandra Campbell, U.S. Commercial Service, Acting Director & Senior Internatio...
 
Smash bros lego
Smash bros legoSmash bros lego
Smash bros lego
 
Nicol,zeltia y paula
Nicol,zeltia y paulaNicol,zeltia y paula
Nicol,zeltia y paula
 
Gacmo mautim
Gacmo mautim Gacmo mautim
Gacmo mautim
 
10 31 tinh ca
10 31 tinh ca   10 31 tinh ca
10 31 tinh ca
 
llamame.ppt
llamame.pptllamame.ppt
llamame.ppt
 
Service Oriented Applications
Service Oriented ApplicationsService Oriented Applications
Service Oriented Applications
 
Review and analysis of "More than a Theory" 201004
Review and analysis of "More than a Theory" 201004Review and analysis of "More than a Theory" 201004
Review and analysis of "More than a Theory" 201004
 
Amp pres
Amp presAmp pres
Amp pres
 
Cleantech Investment And Innovation Trends 7 27 11
Cleantech Investment And Innovation Trends 7 27 11Cleantech Investment And Innovation Trends 7 27 11
Cleantech Investment And Innovation Trends 7 27 11
 
Creations
CreationsCreations
Creations
 
Botas rojas
Botas rojasBotas rojas
Botas rojas
 
Simone Soligo 269724 Iuavcamp
Simone Soligo 269724 IuavcampSimone Soligo 269724 Iuavcamp
Simone Soligo 269724 Iuavcamp
 
C gould eg2010
C gould eg2010C gould eg2010
C gould eg2010
 
Eg2010 bill ptacek
Eg2010 bill ptacekEg2010 bill ptacek
Eg2010 bill ptacek
 

Similar to Long week03-review

Luận Văn Đề Cương Công Nghệ Thông Tin Lập Trình C For Windows.doc
Luận Văn  Đề Cương Công Nghệ Thông Tin Lập Trình C For Windows.docLuận Văn  Đề Cương Công Nghệ Thông Tin Lập Trình C For Windows.doc
Luận Văn Đề Cương Công Nghệ Thông Tin Lập Trình C For Windows.docsividocz
 
Baigiangkythuatlaptrinh hvbcvt
Baigiangkythuatlaptrinh hvbcvtBaigiangkythuatlaptrinh hvbcvt
Baigiangkythuatlaptrinh hvbcvtAricent Bug
 
Luận Văn Đề Cương Công Nghệ Thông Tin Lập Trình Ứng Dụng Cho Mobile.doc
Luận Văn  Đề Cương Công Nghệ Thông Tin Lập Trình Ứng Dụng Cho Mobile.docLuận Văn  Đề Cương Công Nghệ Thông Tin Lập Trình Ứng Dụng Cho Mobile.doc
Luận Văn Đề Cương Công Nghệ Thông Tin Lập Trình Ứng Dụng Cho Mobile.docsividocz
 
Luận Văn Đề Cương Công Nghệ Thông Tin Nguyên Lý Hệ Điều Hành.doc
Luận Văn  Đề Cương Công Nghệ Thông Tin Nguyên Lý Hệ Điều Hành.docLuận Văn  Đề Cương Công Nghệ Thông Tin Nguyên Lý Hệ Điều Hành.doc
Luận Văn Đề Cương Công Nghệ Thông Tin Nguyên Lý Hệ Điều Hành.docsividocz
 
Lớp nvsp k3 t7&cn- nhóm 21( nguyễn hữu có, trần ngọc tuấn)
Lớp nvsp k3 t7&cn- nhóm 21( nguyễn hữu có, trần ngọc tuấn)Lớp nvsp k3 t7&cn- nhóm 21( nguyễn hữu có, trần ngọc tuấn)
Lớp nvsp k3 t7&cn- nhóm 21( nguyễn hữu có, trần ngọc tuấn)huuco1805
 
Ky thuat-lap-trinh 13754342619
Ky thuat-lap-trinh 13754342619Ky thuat-lap-trinh 13754342619
Ky thuat-lap-trinh 13754342619Ky Nguyen Ad
 
Slide 05 - Khai pha du lieu lon voi Spark - Nguyen Van Quyet.pdf
Slide 05 - Khai pha du lieu lon voi Spark - Nguyen Van Quyet.pdfSlide 05 - Khai pha du lieu lon voi Spark - Nguyen Van Quyet.pdf
Slide 05 - Khai pha du lieu lon voi Spark - Nguyen Van Quyet.pdflyvanlinh519
 
Luận Văn Đề Cương Công Nghệ Thông Tin Lập Trình Mạng.doc
Luận Văn  Đề Cương Công Nghệ Thông Tin Lập Trình Mạng.docLuận Văn  Đề Cương Công Nghệ Thông Tin Lập Trình Mạng.doc
Luận Văn Đề Cương Công Nghệ Thông Tin Lập Trình Mạng.docsividocz
 
Luận Văn Đề Cương Công Nghệ Thông Tin .Net Framework Và C#.doc
Luận Văn  Đề Cương Công Nghệ Thông Tin .Net Framework Và C#.docLuận Văn  Đề Cương Công Nghệ Thông Tin .Net Framework Và C#.doc
Luận Văn Đề Cương Công Nghệ Thông Tin .Net Framework Và C#.docsividocz
 
Chg 1 dai cuong
Chg 1 dai cuongChg 1 dai cuong
Chg 1 dai cuongHeo Mọi
 
Tiểu luận cơ sở ngành kỹ thuật phần mềm. phần mềm mô phỏng các thuật toán s...
Tiểu luận  cơ sở ngành kỹ thuật phần mềm. phần mềm  mô phỏng các thuật toán s...Tiểu luận  cơ sở ngành kỹ thuật phần mềm. phần mềm  mô phỏng các thuật toán s...
Tiểu luận cơ sở ngành kỹ thuật phần mềm. phần mềm mô phỏng các thuật toán s...jackjohn45
 
Bao cao tot nghiep complate
Bao cao tot nghiep complateBao cao tot nghiep complate
Bao cao tot nghiep complateMr[L]ink
 
00 mo dau
00 mo dau00 mo dau
00 mo dauDu Dan
 

Similar to Long week03-review (20)

Luận Văn Đề Cương Công Nghệ Thông Tin Lập Trình C For Windows.doc
Luận Văn  Đề Cương Công Nghệ Thông Tin Lập Trình C For Windows.docLuận Văn  Đề Cương Công Nghệ Thông Tin Lập Trình C For Windows.doc
Luận Văn Đề Cương Công Nghệ Thông Tin Lập Trình C For Windows.doc
 
Baigiangkythuatlaptrinh hvbcvt
Baigiangkythuatlaptrinh hvbcvtBaigiangkythuatlaptrinh hvbcvt
Baigiangkythuatlaptrinh hvbcvt
 
Tin hoc can ban bai tap
Tin hoc can ban   bai tapTin hoc can ban   bai tap
Tin hoc can ban bai tap
 
Luận Văn Đề Cương Công Nghệ Thông Tin Lập Trình Ứng Dụng Cho Mobile.doc
Luận Văn  Đề Cương Công Nghệ Thông Tin Lập Trình Ứng Dụng Cho Mobile.docLuận Văn  Đề Cương Công Nghệ Thông Tin Lập Trình Ứng Dụng Cho Mobile.doc
Luận Văn Đề Cương Công Nghệ Thông Tin Lập Trình Ứng Dụng Cho Mobile.doc
 
bai tap tuan 4
bai tap tuan 4bai tap tuan 4
bai tap tuan 4
 
Luận Văn Đề Cương Công Nghệ Thông Tin Nguyên Lý Hệ Điều Hành.doc
Luận Văn  Đề Cương Công Nghệ Thông Tin Nguyên Lý Hệ Điều Hành.docLuận Văn  Đề Cương Công Nghệ Thông Tin Nguyên Lý Hệ Điều Hành.doc
Luận Văn Đề Cương Công Nghệ Thông Tin Nguyên Lý Hệ Điều Hành.doc
 
Lớp nvsp k3 t7&cn- nhóm 21( nguyễn hữu có, trần ngọc tuấn)
Lớp nvsp k3 t7&cn- nhóm 21( nguyễn hữu có, trần ngọc tuấn)Lớp nvsp k3 t7&cn- nhóm 21( nguyễn hữu có, trần ngọc tuấn)
Lớp nvsp k3 t7&cn- nhóm 21( nguyễn hữu có, trần ngọc tuấn)
 
Ky thuat-lap-trinh 13754342619
Ky thuat-lap-trinh 13754342619Ky thuat-lap-trinh 13754342619
Ky thuat-lap-trinh 13754342619
 
Slide 05 - Khai pha du lieu lon voi Spark - Nguyen Van Quyet.pdf
Slide 05 - Khai pha du lieu lon voi Spark - Nguyen Van Quyet.pdfSlide 05 - Khai pha du lieu lon voi Spark - Nguyen Van Quyet.pdf
Slide 05 - Khai pha du lieu lon voi Spark - Nguyen Van Quyet.pdf
 
Luận Văn Đề Cương Công Nghệ Thông Tin Lập Trình Mạng.doc
Luận Văn  Đề Cương Công Nghệ Thông Tin Lập Trình Mạng.docLuận Văn  Đề Cương Công Nghệ Thông Tin Lập Trình Mạng.doc
Luận Văn Đề Cương Công Nghệ Thông Tin Lập Trình Mạng.doc
 
Ltc 01
Ltc 01Ltc 01
Ltc 01
 
Luận Văn Đề Cương Công Nghệ Thông Tin .Net Framework Và C#.doc
Luận Văn  Đề Cương Công Nghệ Thông Tin .Net Framework Và C#.docLuận Văn  Đề Cương Công Nghệ Thông Tin .Net Framework Và C#.doc
Luận Văn Đề Cương Công Nghệ Thông Tin .Net Framework Và C#.doc
 
Ky thuat lap trinh
Ky thuat lap trinhKy thuat lap trinh
Ky thuat lap trinh
 
Ktlt
KtltKtlt
Ktlt
 
Kich ban chan1
Kich ban chan1Kich ban chan1
Kich ban chan1
 
Chg 1 dai cuong
Chg 1 dai cuongChg 1 dai cuong
Chg 1 dai cuong
 
Xây Dựng Công Cụ Sinh Dữ Liệu Thử Tự Động Cho Chương Trình Java.doc
Xây Dựng Công Cụ Sinh Dữ Liệu Thử Tự Động Cho Chương Trình Java.docXây Dựng Công Cụ Sinh Dữ Liệu Thử Tự Động Cho Chương Trình Java.doc
Xây Dựng Công Cụ Sinh Dữ Liệu Thử Tự Động Cho Chương Trình Java.doc
 
Tiểu luận cơ sở ngành kỹ thuật phần mềm. phần mềm mô phỏng các thuật toán s...
Tiểu luận  cơ sở ngành kỹ thuật phần mềm. phần mềm  mô phỏng các thuật toán s...Tiểu luận  cơ sở ngành kỹ thuật phần mềm. phần mềm  mô phỏng các thuật toán s...
Tiểu luận cơ sở ngành kỹ thuật phần mềm. phần mềm mô phỏng các thuật toán s...
 
Bao cao tot nghiep complate
Bao cao tot nghiep complateBao cao tot nghiep complate
Bao cao tot nghiep complate
 
00 mo dau
00 mo dau00 mo dau
00 mo dau
 

Long week03-review

  • 1. http://2learner.edu.vn/vle/course/view.php?id=15 Yêu cầu thực hiện ở toàn khóa THẢO LUẬN CÁC CHỦ ĐỀ LIÊN QUAN Yêu cầu thực hiện ở Week 01~ Week 03 1
  • 2. Hướng dẫn thực hiện đồ án  Nội dung nộp  Thực hiện các yêu cầu của phần handouts (ho01, ho02, …)  Các nội dung tự nghiên cứu – bài tập (nếu có)  Hình thức nộp  Sử dụng MS. Word để soạn thảo báo cáo – lưu trữ trên 1 file (.doc)  Tên file: Nhom01-bt01.doc, Nhom02-bt01.docx, ….  Nộp online tại trang ACeLS – phần Assignments Lưu ý: Thời hạn yêu cầu nộp bài 2
  • 3. TRÌNH BÀY MỘT ĐỒ ÁN TRANG BÌA ĐẠI HỌC SƯ PHẠM TP.HỒ CHÍ MINH Khoa CÔNG NGHỆ THÔNG TIN MỤC LỤC Học phần LẬP TRÌNH CƠ BẢN Câu 1 -…………… 1.1. ……………… 1.2. ……………… Câu 2 - …………… 2.1. …………………… 2.1.1. ………………… 2.2.2. ………………… ĐỒ ÁN 01 2.2. ……………………… (Nhom01-bt01.doc) ………………………… TÀI LIỆU THAM KHẢO Nội dung trình bày: PHỤ LỤC 1... 2… Người hướng dẫn: Ths. Lê Đức Long Xem thêm hướng dẫn trình bày Sinh viên thực hiện: trong file Hinh thuc bao cao.doc 1. Nguyễn Tấn Đạt – 01.020.085 2. Đỗ Duy Thiện – 01.020.204 Lớp : Tin – K1 3
  • 4. Trường Đại Học Sư Phạm Tp.HCM Khoa Công Nghệ Thông Tin Bộ môn Kỹ thuật dạy học Lập trình cơ bản Introduction to Programming (using C/Pascal) Lê Đức Long 02/2012 Link for Materials: http://www.2learner.edu.vn/ldlongdhsp/Intro2Programming
  • 5. Một số quy ước trên slide  Tắt màn hình máy tính  Được dùng máy tính  Làm việc theo nhóm  Ghi chép bằng văn bản TỰ NGHIÊN CỨU- ĐỌC THÊM 5
  • 6. Củng cố – ôn tập … Các vấn đề đã học – Week 01 Thực hiện và viết lại bằng báo cáo (.doc) nộp cho thầy – qua hệ thống online Bắt buộc & Điều kiện cần Thực hiện và cài đặt trên máy cá nhân 6
  • 7. Củng cố – ôn tập … Các vấn đề đã học – Week 02 Thực hiện và viết lại bằng báo cáo (.doc) nộp cho thầy – qua email sau mỗi tuần Điều kiện cần Thực hiện và cài đặt trên máy cá nhân (C/C++/Pascal) 7
  • 8. Củng cố – ôn tập … Các vấn đề đã học – Week 03 Thực hiện và viết lại bằng báo cáo (.doc) nộp cho thầy – qua email sau mỗi tuần Điều kiện cần Thực hiện và cài đặt trên máy cá nhân (C/C++/Pascal) 8
  • 9. THUẬT TOÁN LÀ GÌ ?  Thuật toán là một tập hợp các hướng dẫn nhằm thực hiện một công việc nào đó. Đối việc giải quyết vấn đề – bài toán , thuật toán được hiểu là một tập hữu hạn các hướng dẫn rõ ràng để người giải bài toán có thể theo đó mà giải quyết được bài toán. Như vậy, thuật toán là một phương pháp thể hiện lời giải của vấn đề, bài toán.  Việc nghiên cứu các thuật toán có vai trò rất quan trọng trong khoa học máy tính vì máy tính chỉ giải quyết vấn đề được khi đã có hướng dẫn giải rõ ràng và đúng.  Trong khoa học máy tính, thuật toán được định nghĩa là một dãy hữu hạn các bước không mập mờ và có thể thực thi được, quá trình hành động theo các bước này phải dừng và cho được kết quả như mong muốn. 9
  • 10. Tính chất cơ bản thuật toán  Xác định: rõ ràng, không mập mờ và các bước giải khả thi có thể thực thi được  Mập mờ: thiếu thông tin hoặc có nhiều chọn lựa nhưng không đủ điều kiện để quyết định  Thực thi được: xét trong điều kiện hiện tại của bài toán  Hữu hạn: số bước là hữu hạn và có tính chất dừng  dễ bị vi phạm nhất  Sau một thời gian thi hành hữu hạn thì phải cho kết quả mong muốn  Đúng: với mọi trường hợp của bài toán  Tính chất khó đạt nhất 10
  • 11. Các đặc trưng khác của thuật toán  Đầu vào và đầu ra (Input/Output) : mọi thuật toán đều nhận dữ liệu đầu vào, xử lý nó và cho ra kết quả cuối cùng.  Tính hiệu quả (Effectiveness) : dựa trên khối lượng tính toán, không gian và thời gian khi thuật toán được thi hành. Là yếu tố quyết định để đánh giá, chọn lựa cách giải quyết vấn đề – bài toán trên thực tế.  Tính tổng quát (Generalliness): áp dụng được cho mọi trường hợp của bài toán. 11
  • 12. Biểu diễn thuật toán  Cách 1: Dùng ngôn ngữ tự nhiên  Cách 2: Dùng lưu đồ / Vẽ sơ đồ khối  Cách 3: Dùng mã giả 12
  • 13. HỌC NNLT NHƯ THẾ NÀO ??? 13
  • 14. Từ mã nguồn …. đến mã thực thi ? Những câu lệnh/chỉ thị do người lập trình .c/.cpp; .pas; .java Mã nguồn viết được lưu thành tập tin dạng văn bản (tuân thủ cú pháp của một NNLT cấp cao) Loại bỏ những khoảng Quá trình chuyển từ tập tin Tiền xử lý trắng thừa, chú thích, … nguồn sang tập tin thực thi Mã nguồn đã được làm sạch Biên dịch Biên dịch ra mã thực thi (tức mã máy) Liên kết với các thư viện để tạo file thực thi Mã thực thi Mã thực thi Liên kết hoàn chỉnh Tập tin dạng mã máy (.com; .exe) 14
  • 15. Các bước xây dựng chương trình BÀI TOÁN CHƯƠNG TRÌNH Xác định bài toán Kiểm thử Làm rõ các yêu Xây dựng bộ dữ cầu của bài toán liệu thử nghiệm Phân tích bài toán Cài đặt Mô tả các thành phần của chương trình (dữ Thiết kế Lập trình để tạo chương liệu và xử lý) trình nguồn bằng một chương trình NNLT cụ thể Tổ chức đơn vị dữ liệu, đơn vị xử lý 15
  • 16. Áp dụng mô hình như sau: Xác định bài toán  phân tích  thiết kế  cài đặt  kiểm thử 1.Xác định bài toán: làm rõ yêu cầu của bài toán, xác định đầu vào (input) và đầu ra (output), cũng như các ràng buộc toàn vẹn (nếu có) 2.Phân tích bài toán: dựa trên hai thành phần 1.Thành phần dữ liệu: phân tích các thành phần dữ liệu vào/ra, trung gian của bài toán – loại dữ liệu tương ứng 2.Thành phần xử lí: phân tích cách xử lí bài toán bằng công cụ toán học, hoặc bằng cách xử lí thông thường của nghiệp vụ, trình bày dưới dạng ý tưởng giải quyết •Thiết kế chương trình: dựa trên hai đơn vị 1.Đơn vị dữ liệu: thiết kế các thành phần dữ liệu bao gồm tên biến, kiểu dữ liệu, định nghĩa kiểu dữ liệu (nếu có) 2.Đơn vị xử lí: bao gồm •Sơ đồ thủ tục/hàm •Mô tả các thủ tục/hàm (prototype) •Thuật giải tổng quát/chi tiết •Cài đặt: sử dụng một NNLT cụ thể (C/Pascal) để cài đặt •Kiểm thử: xây dựng bộ dữ liệu kiểm thử – nên đề xuất từ 5-10 bộ dữ liệu để kiểm thử chương trình. Sử dụng chức năng Debug để kiểm lỗi nếu có. Niklaus Wirth (ETH) 16
  • 17. Nguyên lý thứ nhất !!! 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 (variable) của chương trình thông qua các quy tắc xác định của NNLT cụ thể (*) (*) Hoàng Kiếm (2000), Giải một bài toán trên máy tính như thế nào – Tập 1, NXB Giáo dục 17
  • 18. Tập kí tự dùng trong NNLT bậc cao  Ngôn ngữ C được xây dựng trên bộ ký tự sau:  26 chữ cái hoa A B C .. Z  26 chữ cái thường a b c .. z  10 chữ số 0 1 2 .. 9  Các ký hiệu toán học +-*/=()  Ký tự gạch nối _  Các ký tự khác . , : ; [ ] {} ! & % # $ ... Dấu cách (space) dùng để tách các từ. Ví dụ: tiếng VIET NAM có 8 ký tự, còn VIETNAM chỉ có 7 ký tự.  Tập kí tự dùng trong NNLT Pascal thì sao ??? 18
  • 19. BIẾN (VARIABLE)  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  Giá 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 Ví dụ: STT 50 Biến có tên STT, kiểu số nguyên, đang lưu trữ giá trị là 50 DiemTB 7.8 Biến có tên DiemTB, kiểu số thực, đang lưu trữ giá trị là 7.8 TenSV “Long” Biến có tên TenSV, kiểu chuỗi kí tự, đang lưu trữ một dòng chữ o Ý nghĩa của biến chỉ được hiểu bởi con người, kô có nghĩa với PC; o Tên biến cần gợi nhớ và thống nhất; o Tên biến phải hợp lệ – tuân thủ theo quy ước của NNLT. 19
  • 20. KIỂU DỮ LIỆU (DATA TYPE)  Trong NNLT, loại giá trị mà biến lưu trữ được phân thành những kiểu dữ liệu khác nhau  Thông thường, trong một NNLT có các kiểu dữ liệu cơ sở sau:  Kiểu dữ liệu số: gồm có 2 loại • Kiểu dữ liệu số nguyên • 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 dữ liệu có 1 miền giá trị khác nhau 20
  • 21. Kiểu số nguyên  Có nhiều kiểu số nguyên Reading(*)  Tuỳ vào độ lớn của miền giá trị, có:  Số nguyên 8 bit ( 1 byte) -128 0 127 • Loại có dấu: -128 → 127 0 255 • Loại không dấu: 0 → 255  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  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,294,967,295  Một số ngôn ngữ lập trình còn hỗ trợ kiểu số nguyên 64 bit, 128 bit  Kiểu số nguyên k bit sẽ chiếm bộ nhớ k bit dữ liệu (*) Lê Đức Long (2005), GT Tin học đại cương ĐHSP – Phần Mã hoá và Biểu diễn dữ liệu trong máy tính 21
  • 22. Kiểu số thực Có 2 dạng số thực thường gặp Reading(*)  Số thực 32 bit (4 byte) • Miền giá trị: trong khoảng ± 3.4E-38 đến ± 3.4E+38 • Có 8 chữ số có nghĩa sau dấu phẩy  Số thực 64 bit (8 byte) • Miền giá trị: trong khoảng ± 1.7E-308 đến ± 1.7E+308 • Có 16 chữ số có nghĩa sau dấu phẩy  Một số ngôn ngữ lập trình còn hỗ trợ số thực 80 bit (10 byte) Loại Pascal Miền giá trị C Miền giá trị 32 bit real 2.9x10-39…3.4x1039 float 3.4x10-38…3.4x1038 64 bit double 5.0x10-324…1.7x10308 double 1.7x10-308…1.7x10308 (*) Lê Đức Long (2005), GT Tin học đại cương ĐHSP – Phần Mã hoá và Biểu diễn dữ liệu trong máy tính 22
  • 23. 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ữ một chuỗi kí tự Loại Pascal Miền giá trị C Miền giá trị Logic boolean 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 o Mọi kiểu dữ liệu dạng số đều hữu hạn và rời rạc; o Hiều biết cách biểu diễn số nguyên, số thực trong máy tính; o Chọn lựa kiểu dữ liệu của biến sao cho phù hợp. 23
  • 24. The standard keywords TỪ KHÓA DÀNH CHO NGÔN NGỮ C/C++ auto extern sizeof break float static case for struct char goto switch const if typedef continue int union default long unsigned do register void double return volatile else short while enum signed CẦN PHÂN BIỆT GIỮA THUẬT NGỮ TỪ KHÓA (KEYWORD) VỚI ĐỊNH DANH (IDENTIFIER) 24
  • 25. HẰNG (CONSTANT)  Hằng trong chương trình là một 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 2 thành phần: tên hằng và giá trị gán cho hằng Có các loại hằng sau: o Hằng số: hằng nguyên, hằng thực – Vd: 2, -8, 30, 2.5, -2.0, 1E-3, … o Hằng bool: có 2 giá trị là true và false o Hằng kí tự: có 2 dạng biểu diễn sau  Đặt kí tự trong dấu nháy đơn  Dùng mã ASCII o Pascal: #d (d là mã ASCII ở dạng thập phân) o C: xFF (FF là mã ASCII ở dạng hexa) o Hằng chuỗi kí tự  Pascal, đặt chuỗi kí tự trong dấu nháy đơn – Vd: ‘Duc Long’  C, đặt chuỗi kí tự trong dấu nháy kép – Vd: “Duc Long” 25
  • 26. Tóm tắt Programmer End-User Biểu diễn thông tin Vùng nhớ có cấu trúc trong thế giới thực Biến được mô tả bởi một kiểu dữ liệu Số nguyên 4 Biến kiểu số nguyên có giá trị là 4 Phân số 4/3 Biến có kiểu PHANSO Ngày 15/9/2006 Biến có kiểu Ngày Biểu diễn loại thông Cấu trúc dữ liệu được tin trong thế giới thực Kiểu dữ liệu định nghĩa Kiểu cơ sở – đã tạo sẵn dưới dạng từ khóa trong NNLT Kiểu tự định nghĩa – kiểu do người lập trình tự tạo 26
  • 27. Cấu trúc tổng quát của ct C 27
  • 28. Hãy làm phép so sánh ? 28
  • 29. Câu lệnh – Chú thích (C) Chú thích, -Nhiều dòng /* … */ -Một dòng // Câu lệnh, kết thúc bằng dấu ; 29
  • 30. LỆNH GÁN (ASSIGNMENT)  Lệnh gán dùng để thay đổi giá trị hiện thời của biến  Lệnh 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 biến ở phía bên trái lệnh gán.  Lệnh gán làm thay đổi giá trị hiện thời của 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ị của biểu thức vế phải (B) gán vào cho biến ở vế trái (A) Cú pháp lệnh gán <biến> := <biểu thức>; <biến> = <biểu thức>; A ←5 A := 5; A = 5; A←B A := B; A = B; A←B+5 A := B + 5; A = B +5; A←A+1 A := A + 1; A = A +1; A ← (A + B) * C + D A := (A + B) * C + D; A = (A + B) * C + D; Cú pháp trong C: <indentifier> = < expression> 30
  • 31. Phép toán số học Toán tử Pascal C Toán tử hai ngôi Cộng + + Trừ - - Nhân * * Chia (số thực) / / 5 / 2 = 2.5 Chia (số nguyên) DIV / 5 div 2 = 2 Chia lấy phần dư MOD % 5 mod 2 = 1 Toán tử một ngôi Toán tử đổi dấu - - 31
  • 32. Phép toán so sánh và logic Phép toán Pascal C Nhỏ hơn < < Lớn hơn > > So sánh bằng = == Khác nhau <> != Nhỏ hơn hoặc bằng <= <= Lớn hơn hoặc bằng >= >= Phép not not ! Phép and and && Phép or or || Cho biết ý nghĩa: A := B; A = B; {trong ngon ngu Pascal} A = B; A == B; // trong ngon ngu C B := (5<7) AND (7<9); {B kiểu Boolean} B = (5<7) && (7<9); // int B x := 5; x = 5; B := (x<1) OR (x>10); B = (x<1) || (x>10); B := (x<1) + (x<2); 32
  • 33. Một số hàm toán học dựng sẵn Kiểu Kiểu Pascal C Mô tả tham số trả về abs(x) abs(x) Tính trị tuyệt đối Số Cùng kiểu exp(x) exp(x) Tính hàm ex Số Số thực ln(x) log(x) Tính ln Số Số thực round(x) √ Làm tròn phần nguyên Số thực Số nguyên sqr(x) √ Bình phương Số Cùng kiểu sqrt(x) sqrt(x) Căn bậc 2 Số Số thực √ pow(x,y) Tính xy Số, Số Số thực trunc(x) √ Lấy phần nguyên Số thực Số nguyên Đọc thêm : Apendix B. B.4. B.W.Kernirghan & D.M.Ritchie (1988), The C programming language, 2nd Ed., Prentice Hall 33
  • 34. Biểu thức toán học Toán học Máy tính b2 – 4ac b*b-4*a*c hoặc sqr(b)-4*a*c − b + b − 4ac 2 ((-b)+sqrt(sqr(b)-4*a*c))/(2*a) 2a p( p − a)( p − b)( p − c) sqrt(p*(p-a)*(p-b)*(p-c)) [a 2 (b 2 + c 2 ) + 5](7c) (sqr(a)*(sqr(b)+sqr(c))+5)*(7*c) 34
  • 35. ĐỘ ƯU TIÊN CỦA CÁC TOÁN TỬ + PASCAL C Lời gọi hàm Lời gọi hàm Biểu thức trong ( ) Biểu thức trong ( ) Toán tử NOT Toán tử NOT (!) Toán tử đổi dấu - Toán tử đổi dấu - *, / , DIV, MOD, AND *, / , %, +, - + , - , OR <, <=, >, >= = , <> , < , > , >=, <= == , != && , || Thứ tự tính toán biểu thức: Left  Right Nêu thứ tự thực hiện biểu thức sau: sqr(a)*(sqr(b)+sqr(c))+5)*7+c (a+5)*b+(c/2+b)-10*a*a/2*c Xét các biểu thức sau: B := x <1 and x>2; B = x <1 && x>2; // int B, x= 5; Cho x:=5; B kiểu Boolean; B := (x<1) and (x>2); B = (x<1) + (x<2); // int B, x= 0; Làm bài tập C.1, 2, 3. trong B. S. Gottfried (1996), Programming with C, 2nd Ed., SCHAUM’S Outline Series - McGRALL-HILL 35
  • 36. Nguyên lý thứ hai !!! Chuyển đổi quá trình tính toán của Các cấu trúc của bài toán chương trình MỌI QUÁ TRÌNH TÍNH TOÁN ĐỀU CÓ THỂ MÔ TẢ VÀ THỰC HIỆN DỰA TRÊN BA CẤU TRÚC CƠ BẢN:  CẤU TRÚC TUẦN TỰ  CẤU TRÚC RẼ NHÁNH  CẤU TRÚC LẶP C. Bohm & G. Jacopini (1966), Flow Diagrams, Turing Machines and Languages With Only Two Formation Rules. In Communications of ACM, Vol.9, Number 5, May 1966. 36
  • 37. Cấu trúc tuần tự  Cấu trúc mặc định trong mọi ngôn ngữ lập trình  Các thao tác được thực hiện tuần tự từ thao tác đầu tiên đến thao tác cuối cùng Ví dụ: thuật toán có n bước, thì việc thi hành sẽ tiến hành tuần tự từ bước thứ 1 đến bước thứ n Bắt đầu Lệnh 1 B.1 a, b,c,x Lệnh 2 Lệnh 3 B.2 Px ß a*sqr(x)+b*x+c Lệnh n B.3 Px Sơ đồ khối của cấu trúc tuần tự Kết thúc 37
  • 38. Câu lệnh nhập/xuất Readln(arg1, arg2, …, argn) scanf(control string, 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ẽ được chuyển sang đầu hàng kế Mỗi biến phải đứng trước tiếp. Còn lệnh read thì không chuyển. bởi 1 dấu &, nhưng với biến Lệnh readln không tham số dùng để chờ người dùng chuỗi, mảng thì kô có. 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 hàng kế tiếp - Lệnh Write thì không chuyển. printf(control string, arg1, arg2, …, argn) Lệnh Writeln không tham số dùng để chuyển con trỏ sang dòng kế tiếp. Mã đặc tả Kiểu dữ liệu Tác dụng %c char 1 KұS [ Xҩt 1 kí tự có mã ASCII tương ứng S %d Số nguyên 1 KұS [ Xҩt 1 số nguyên S %f Số thực 1 KұS [ Xҩt 1 số thực S %s Chuỗi kí tự 1 KұS [ Xҩt 1 chuỗi kí tự S Xem thêm C.4. trong B. S. Gottfried (1996), Programming with C, 2nd Ed., SCHAUM’S Outline Series - McGRALL-HILL 38
  • 39. Quan sát và nhận xét … Xem thêm C.4. trong B. S. Gottfried (1996), Programming with C, 2nd Ed., SCHAUM’S Outline Series - McGRALL-HILL 39
  • 40. Tóm tắt Programmer End-User Các bước thực hiện của 1 Những chỉ thị/chỉ dẫn nghiệp vụ trong thực tế Lệnh trong chương trình nguồn Một nghiệp vụ trong Bao gồm các lệnh để thực hiện thực tế Hàm xử lý trọn vẹn 1 nghiệp vụ Hệ thống những hàm xử lý Một tổ chức bao gồm Chương trình để chung 1 chỗ nhiều nghiệp vụ 40
  • 41. Bài tập / thực hành (C/Pascal) 41
  • 42. C.2. Các thành phần cơ bản Một số khái niệm khác – đối với NNLT C (không có trong Pascal) 42
  • 43. Phép toán trên bit Phép toán Kí hiệu  Ví dụ: int x = 5; // x = 101b Phép AND & int y = 4; // y = 100b Phép OR | Phép XOR ^ int r1 = x & y; // r1 = 100b Bù bit ~ int r2 = x | y; // r2 = 101b int r3 = ~x; // r3 = 010b Dịch trái << int r4 = x << 3; // r4 = 101000b Dịch phải >> int r5 = x >> 1; // r5 = 10b 43
  • 44. Chuyển đổi kiểu dữ liệu (Type Casting)  Trường hợp 1: Ví dụ: float f = 3.5; int i = 2; Biểu thức f + i thì i sẽ tự động chuyển sang kiểu float  Khi hai toán hạng trong một phép toán khác kiểu dữ liệu thì kiểu dữ liệu thấp sẽ nâng thành kiểu dữ liệu cao Ví dụ: float f = 3 / 2; // Kết quả sẽ là 1 float f = 3.0 / 2; // Kêt quả sẽ là 1.5  Trường hợp 2: Trong lập trình, đôi lúc cần phải chuyển từ kiểu này sang kiểu khác (ép kiểu) Cú pháp: (<data type>) expression Ví dụ: float f = (float) 3 / 2; // Kết quả sẽ là 1.5 Cú pháp này sẽ chuyển số nguyên 3 thành số thực 3.0 float f = 5.5; Biểu thức ((int) f) % 2 sẽ chuyển giá trị của f thành 5 (mất phần lẻ) int i = 7; float f = 8.5; Biểu thức (i + f) % 4 bị sai !!!!! TẠI SAO ??? Phải viết lại là ((int) (i + f) % 4 44
  • 45. Phép gán mở rộng 5 phép gán mở rộng: + = ; - = ; * = ; / = ; % = Cú pháp chung: ví dụ như + = expression 1 + = expression 2 Nghĩa là tương đương: expression 1 = expression 1 + expression 2 Ví dụ: Giả sử int i = 5; j = 7; float f = 5.5; g = -3.25 45
  • 46. Các phép tăng/giảm 1 đơn vị Phép tăng: ++<identifier> ; <identifier>++ Phép giảm: --<identifier> ; <identifier>--  Lưu ý:  Phép toán ++ (hay --) đứng trước tên biến sẽ thực hiện trước  Phép toán ++ (hay --) đứng sau tên biến sẽ thực hiện sau Ví dụ: int i = 3; int t1 = i++; //gán t1 bằng i trước rồi mới tăng i int t2 = ++i; //tăng i rồi mới gán cho t2 ….. i ++; // i = i + 1; ++i; // i = i + 1; 46
  • 48. Biểu diễn số thực trong máy tính  Có 2 dạng: dạng dấu chấm tĩnh và dạng dấu chấm động  Dạng dấu chấm động được sử dụng phổ biến. Biểu diễn dưới dạng dấu chấm động Mọi số thực có thể được phân tích dưới dạng: Để biểu diễn số thực, chỉ cần lưu số nguyên b, và thập phân của của số a (cũng là số nguyên) Với ví dụ trên, số thực 1 cần lưu 2 số nguyên là +123456789 và +3 và số thực 2 cần lưu 2 số nguyên là +28 và -2 Trong đó:  Phần định trị: phần thập phân của số a  Phần luỹ thừa: số b 48
  • 49. Biểu diễn số thực trong máy tính  Trong máy tính, người ta chọn c = 2  Số thực k bit sẽ có m bit dùng để lưu phần định trị và n = k-m bit dùng để lưu phần lũy thừa  Số thực k bit có giá trị tuyệt đối lớn bao nhiêu tùy thuộc vào m bit nhiều hay ít  Số thực k bit chính xác bao nhiêu chữ số tùy thuộc vào n bit nhiều hay ít  Số thực 32 bit dùng 8 bit cho phần lũy thừa và 24 bit cho phần định trị  Số thực 64 bit dùng 12 bit cho phần lũy thừa và 52 bit cho phần định trị 49