TIN HỌC ĐẠICƯƠNG - WordPress.comNội dung 1. Tổngquan vềmáy tính • Giớithiệu •...

80
[email protected] 1 TIN HỌC ĐẠI CƯƠNG Chương 1: Cơ bản về tin học

Transcript of TIN HỌC ĐẠICƯƠNG - WordPress.comNội dung 1. Tổngquan vềmáy tính • Giớithiệu •...

  • [email protected] 1

    TIN HỌC ĐẠI CƯƠNG

    Chương 1: Cơ bản về tin học

  • Nội dung

    1. Tổng quan về máy tính• Giới thiệu

    • Thông tin- Biểu diễn và xử lý thông tin

    • Các hệ đếm

    • Cấu tạo chung của MTĐT

    • Tổng quan về hệ điều hành

    2. Tổng quan về mạng máy tính• Cơ sở của mạng

    • Phương thức truyền thông trên mạng

    • Internet

    • Email trên Internet

    • World WideWeb

    3. Tổng quan về việc giải quyết bài toán trên máy tính• Khái niệm về vấn đề và bài toán

    • Các bước giải quyết bài toán bằng máy tính

    • Thuật toán và thuật giải

    • Biểu diễn thuật toán và thuật giải

    • Một số bài toán thường gặ[email protected] 2

  • 1.1. Giới thiệu

    Tin học:

    – Là một ngành khoa học chuyên nghiên cứu các phương pháp,các quá trình xử lý thông tin một cách tự động trên các phươngtiện kỹ thuật (chủ yếu là máy tính điện tử).

    Phần cứng (hardware)

    – Là những thiết bị vật lý về mặt cơ khí, điện tử (như vi mạch, dây nối, bộ nhớ…v.v) cấu tạo lên máy tính.

    – Phần cứng xử lý thông tin ở mức cơ bản nhất là mức tín hiệu nhị phân (0 | 1)

    Phần mềm (software)

    – Là các chương trình điều khiển hoạt động của phần cứng máy vi tính.

    – Phần mềm chỉ đạo việc xử lý dữ liệu.

    [email protected] 3

  • Thông tin – Biểu diễn và xử lý thông tin

    Thông tin (Information):

    – Là một khái niệm trừu tượng, bao gồm những dữ kiện về đốitượng tại một thời điểm cụ thể. Thông tin giúp con người nhậnbiết, hiểu và có sự đánh giá của bản thân về đối tượng.

    Dữ liệu (Data):

    – Là Thông tin đã được mã hoá theo một quy tắc nào đó. Máy tínhchỉ xử lý được dữ liệu đã mã hoá ở dạng nhị phân (các bit 0, 1).

    – Đơn vị đo dữ liệu:• Bit • Byte: 1 Byte=8 Bits• KB: 1 KB= 1024 Bytes• MB: 1 MB= 1024 KB• GB: 1GB= 1024 MB• TB: 1MB= 1024 GB• PB: 1PB = 1024 TB

    [email protected] 4

  • Thông tin – Biểu diễn và xử lý thông tin

    Mã hoá thông tin trong máy tính

    – Muốn máy tính lưu trữ, xử lý được thông tin, thông tin phải được biến đổi thành các tín hiệu điện, các tín hiệu điện này tương ứng với 2 trạng thái 0 và 1 (đóng mạch/hở mạch). Các biến đổi như vậy gọi là mã hoá thông tin.

    – Mã hóa thông tin ở dạng văn bản đơn giản (các ký tự) người tadùng bảng mã ASCII gồm 256 (= 28) ký tự đánh số từ 0 – 255.Mỗi ký tự theo bảng mã ASCII tương ứng với 1 Byte trong bộnhớ máy tính.

    – Trong bộ mã Unicode người ta dùng 2 hoặc 3 byte để mã hoá 1ký tự

    → Bộ mã Unicode có thể biểu được các ký tự của mọi ngônngữ trên thế giới.

    [email protected] 5

  • Các hệ đếm

    • Hệ đếm là tập hợp các ký hiệu (các chữ số cơ bản) để biểu diễncác số và xác định giá trị của các biểu diễn số.

    • Ví dụ:

    • Hệ thập phân (cơ số 10, decimal)

    • Hệ nhị phân (cơ số 2, binary)

    • Hệ bát phân (cơ số 8, octal)

    • Hệ thập lục phân (cơ số 16, hexadecimal)

    [email protected] 6

  • Chuyển từ cơ số 2 sang cơ số 10

    (anan-1…a0)2 = an.2n + an-1.2n-1 +…+ a0.20

    Ví dụ:

    • 0B = 0; 10B = 2

    • 1001B = 1.23 + 0.22 +0.21 + 1.20 = 9

    [email protected] 7

  • Chuyển từ cơ số 10 sang cơ số 2

    D = số cần chuyển

    Chia D (chia nguyên) liên tục cho 2

    cho tới khi kết quả phép chia = 0.

    Lấy phần dư các lần chia viết theo

    thứ tự ngược lại.

    • Kết quả: 1011

    [email protected] 8

  • Chuyển từ cơ số 10 sang cơ số 2 (tt)

    Phần nguyên

    – Chia liên tiếp cho 2.

    – Viết phần dư theo chiều ngược lại.

    Phần thập phân

    – X = phần thập phân.

    – Nhân X với 2 → kết quả:

    • Phần nguyên (0,1)

    • Phần thập phân

    – Lặp lại từ bước đầu, đến khi muốn

    dừng hoặc kết quả=0.

    – Viết các phần nguyên theo đúng

    thứ tự được kết quả.

    [email protected] 9

  • Chuyển đổi cơ số 16 và cơ số 10

    Từ hệ 10 → hệ 16

    –Thực hiện chia liên tiếp cho 16.

    –Lấy phần dư viết ngược lại.

    Từ hệ 16 → hệ 10

    • (anan-1…a0)H= an.16n + an-1.16n-1 +…+ a0.160

    [email protected] 10

  • Chuyển đổi cơ số 16 và cơ số 2

    Một chữ số hệ 16

    tương đương 4 BIT

    của hệ Nhị phân

    – 1H = 0001B– FH = 1111B

    Xem bảng chuyển đổi các hệ

    [email protected] 11

  • Đổi hệ 16 sang hệ 2

    • Căn cứ vào bảng chuyển đổi, thay thế 1 chữsố của số hệ 16 bằng 4 bit nhị phân.

    Ví dụ:

    – CH = 1100B– 7H = 0111B→ C7H = 1100 0 111B

    [email protected] 12

  • Đổi hệ 2 sang hệ 16

    Nhóm 4 bit một từ phải sang trái rồi căn cứ

    vào bảng chuyển đổi, thay thế bằng chữ số

    tương ứng trong hệ 16.

    Ví dụ:

    1111100B= 0111 1100B= 7CH

    [email protected] 13

  • Bài tập

    Diễn giải vì sao có những kết quả chuyển đổi dưới

    đây:

    11910 → 011101112 → 77h

    23110 → 111001112 → E7h

    9910 → 011000112 → 63h

    21310 → 110101012 → D5h

    16810 → 101010002 → A8h

    17310 → 101011012 → ADh

    13710 → 100010012 → 89h

    [email protected] 14

  • Bài tập (tt)

    Hãy đổi các số sau sang hệ nhị phân và hệ hex

    • 245.687510• 321.12358• 426.37510

    Hãy đổi các số sau sang hệ thập phân

    • 216.3516• A2.616• 4F6A.1E16• 101110110.1010112

    [email protected] 15

  • Lịch sử phát triển của máy tính

    • Các thế hệ máy tính– 1945 – 1954, Thế hệ số 1 (first generation)

    • Bóng đèn chân không (vacuum tube)

    • Bìa đục lỗ

    • ENIAC: 30 tấn, 18.000 bóng đèn, 100.000 phép tính/giây.

    – 1955-1964, Thế hệ số 2

    • Transitor

    • Intel transitor processor

    – 1965-1974, Thế hệ số 3

    • Mạch tích hợp (Intergrated Circuit – IC)

    – 1975 - nay, Thế hệ 4• LSI (Large Scale Integration), VLSI (Very LSI), ULSI (Ultra

    LSI).

    [email protected] 16

  • Lịch sử phát triển của máy tính

    Một số mốc lịch sử quan trọng

    – Trước công nguyên: Bàn tính gảy ở Trung Quốc.

    – 1642: Bàn tính cơ của Pascal (phép + và - ).

    – 1670: Bàn tính cơ học của Leibniz (các phép tính thông dụng)

    – 1842: Máy tính có thể lập trình được của Charles Babbage.

    – 1890: Herman Hollerith thiết kế hệ thống có thể lưu thông tin trên bìa đục lỗ đọc

    ra bằng tế bào quang điện, thành lập công ty IBM.

    – 1946: Máy ENIAC của Mỹ giá 500.000$ với 18000 bóng đèn điện tử.

    – 1958: Máy tính đầu tiên sử dụng công nghệ bóng bán dẫn transistor (IBM

    7090).

    – 1964: Máy tính đầu tiên sử dụng IC (IBM 360).

    – 1976: Hãng DEC giới thiệu máy VAX 11/780.

    – 1981: IBM giới thiệu máy vi tính PC.

    [email protected] 17

  • Phân loại máy tính

    Microcomputer/Personal Computer (PC)

    Minicomputer– Nhanh hơn PC 3-10 lần

    Mainframe– Nhanh hơn PC 10-40 lần

    Supercomputer– Nhanh hơn PC 50-1.500 lần

    – Phục vụ nghiên cứu là chính

    – VD:Earth Simulator (NEC,5104 CPUs, 35.600 GF).

    Laptop Computer.Handheld Computer: Pocket PC,Palm,

    Mobile devices.

    PC Mini

    Super Mainframe

    LaptopHandheld

    [email protected] 18

  • Cấu tạo chung của MTĐT

    Mouse

    Case

    Optical Disk

    Floppy disk

    Key board

    Monitor

    Screen

    [email protected] 19

  • Cấu tạo chung của MTĐT (tt)

    CPU (1)

    Bộ nhớ RAM (2)

    Card mở rộng

    – Sound Card (3)

    – Modem Card (4)

    – Video Card (5)

    – NIC (6)Cổng

    kết nốingoại vi(7)

    [email protected] 20

    1

    2

    43

    5

    6

    7

  • Cấu tạo chung của MTĐT (tt)

    Khe cắm

    RAM

    Khe cắm Card

    mở rộng

    Đế cắm

    CPU

    Khe cắm cáp dữ liệu

    Cổng ngoại vi chuột, bàn

    phím

    Cổng ngoại

    vi nối tiếp

    Jack cắm

    màn hình

    Lá tản

    nhiệt

    [email protected] 21

  • Cấu tạo chung của MTĐT (tt)

    Bộ xử lý trung tâm (CPU)

    – Đơn vị điều khiển (CU – Control Unit)

    – Bộ số học & Logic (ALU – Arithmetic Logic Unit)

    – Bộ nhớ (Memory)

    Input Devices (các thiết bị vào)

    – Keyboard, Mouse, Scanner, Microphone…v.v.

    Output Devices (các thiết bị ra)

    – Monitor, Printer, Speaker, Projector….v.v.

    [email protected] 22

  • Cấu tạo chung của MTĐT (tt)

    CPU – Central Processing Unit

    – Control Unit : Thực hiện 4 thao tác cơ bản.

    • Fetch: Nạp chỉ thị (Instruction) hoặc dữ liệu từ bộ nhớ.

    • Decode: Giải mã chỉ thị thành lệnh.

    • Execute: Thực thi lệnh.

    • Store: Lưu kết quả của lệnh vừa thực thi vào bộ nhớ.

    – Arithmetic Logic Unit

    • Phép toán số học: + - x ÷

    • Phép toán so sánh: < > =

    • Phép toán luận lý: and, or, not

    [email protected] 23

  • Cấu tạo chung của MTĐT (tt)

    Chu kỳ máy (Machine Cycle)

    – Instruction time: (1) và (2)

    – Execution time: (3) và (4)

    Cách tính tốc độ CPU

    – Tốc độ của CPU được tính bằng

    số triệu lệnh xử lý được trong 1

    giây

    – Đơn vị đo tốc độ CPU là MIPS

    (Millions of Instructions Per

    Second)

    [email protected] 24

  • Cấu tạo chung của MTĐT (tt)

    CPU không sử dụng kỹ thuật Pipelining

    CPU sử dụng kỹ thuật Pipelining

    [email protected] 25

  • Cấu tạo chung của MTĐT (tt)

    Đồng hồ hệ thống (System Clock)

    – Đồng bộ mọi hoạt động của máy tính

    – Mỗi tick là một chu kỳ đồng hồ

    – Đơn vị tính = Herzt (Hz)

    1 MHz (Mega Herzt) = 1 triệu tick đồng hồ hệ thống.

    1 GHz (Giga Herzt) = 1 tỉ tick đồng hồ hệ thống.

    [email protected] 26

  • Tổng quan về hệ điều hành

    Khái niệm

    – Một hệ điều hành là một thành

    phần quan trọng của mọi hệ

    thống máy tính. Một hệ thống

    máy tính có thể được chia

    thành bốn thành phần: Phần

    cứng, Hệ điều hành, Các

    chương trình ứng dụng và

    Người dùng

    [email protected] 27

  • Tổng quan về hệ điều hành (tt)

    Nhiệm vụ của Hệ điều hành

    – Điều khiển và quản lý trực tiếp các phần cứng (mainboard,

    VGA card, sound card…v.v)

    – Thực hiện các thao tác cơ bản: đọc/ghi file, quản lý file …v.v

    – Cung cấp hệ thống giao diện sơ khai cho các ứng dụng khác.

    – Cung cấp hệ thống lệnh cơ bản để người dùng điều hành máy.

    – Cung cấp mộ số dịch vụ cơ bản: (WebBrowser, NotePad,

    Calculator…v.v)

    [email protected] 28

  • Tổng quan về hệ điều hành (tt)

    Các thành phần cơ bản của HĐH

    – Hệ thống quản lý tiến trình (Processes management system).

    – Hệ thống quản lý bộ nhớ (Memory management system).

    – Hệ thống quản lý nhập xuất (Input/Output System).

    – Hệ thống quản lý tập tin (File sytstem).

    – Hệ thống bảo vệ (Security system).

    – Hệ thống dịch vụ lệnh (Command Services system).

    – Hệ thống quản lý mạng (Networking system).

    [email protected] 29

  • Tổng quan về hệ điều hành (tt)

    Phân loại hệ điều hành

    –Dưới góc độ loại máy tính• Hệ điều hành máy MainFrame

    • Hệ điều hành máy chủ (Server)

    • Hệ điều hành dành cho máy nhiều CPU

    • Hệ điều hành máy tính cá nhân PC

    • Hệ điều hành dành cho máy PDA (Embedded OS - hệ điềuhành nhúng)

    –Dưới góc độ người sử dụng• Hệ điều hành đơn nhiệm

    • Hệ điều hành đa nhiệm một người dùng

    • Hệ điều hành đa nhiệm nhiều người dùng

    [email protected] 30

  • Tổng quan về hệ điều hành (tt)

    • Market share

    Số liệu thống kê bởi http://www.netmarketshare.com đến 8/2015

    [email protected] 31

    http://www.netmarketshare.com/

  • 1.2. Mạng máy tính

    Cơ sở mạng

    – Mạng máy tính là mạng của 2 hay nhiều máy tính được kết nối

    với nhau bởi một đường truyền vật lý theo một kiến trúc nhất

    định nào nào đó.

    – Các thành phần của mạng máy tính:

    • Các hệ thống đầu cuối

    • Môi trường truyền dẫn

    • Giao thức truyền thông

    Các phương thức truyền thông trên mạng

    – Quảng bá (broadcast)

    – Điểm-Điểm

    [email protected] 32

  • Phương thức truyền thông

    Kỹ thuật truyền tin trong mạng máy tính

    – Chuyển mạch kênh (Circuit switched)

    – Chuyển mạch gói (Packet switched)

    – Chuyển mạch thông báo (Message Switched)

    Các mô hình mạng

    [email protected] 33

  • Mạng Internet

    Mạng Internet

    – Là một hệ thống thông tin toàn cầu.

    – Là mạng của các mạng máy tính. Hệ thống này truyền thông

    tin bằng kỹ thuật chuyển mạch gói (packet switching) dựa trên

    một giao thức liên mạng đã được chuẩn hóa (giao thức IP).

    – Mạng Internet bao gồm hàng ngàn mạng máy tính nhỏ hơn của

    các doanh nghiệp, các viện nghiên cứu và các trường đại học,

    của người dùng cá nhân và các chính phủ trên toàn cầu.

    [email protected] 34

  • Email trên Internet

    Email trên Internet– Viết tắt của electronic

    mail– Bao gồm: Chương trình

    đọc mail (user agent);Máy chủ mail (mailserver); giao thức gửinhận mail (SMTP –Simple Mail TransferProtocol)

    – Địa chỉ email có dạng:tên-hòm-mail@tên-miền

    [email protected] 35

  • Email trên Internet

    Các mail agent thông dụng

    – Microsoft Outlook

    – Outook Express

    – Thunder Bird

    – Windows Mail

    Webmail

    – Dùng web browser truy cập vào URL của mail server (vd:

    http://mail.yahoo.com hoặc http://mail.google.com)

    – Mọi thao tác trên web mail giống như thao tác với 1 trang

    web bình thường.

    [email protected] 36

    http://mail.yahoo.com/

  • Email trên Internet (tt)

    Các thành phần email

    – From: địa chỉ email của người gửi

    – To: địa chỉ email của người nhận

    – Subject: Tiêu đề của mail

    – CC: đồng thời gửi cho một số địa chỉ email khác

    – BCC: đồng thời gửi cho địa chỉ email khác (người nhận không biết

    điều này)

    – Inbox: Hộp thư đến

    – Outbox: Những mail đã gửi nhưng chưa phát tới địa chỉ người nhận

    – Sent: Những mail đã gửi thành công

    – Spam(Bulk): Những mail rác

    – Trash: thùng rác – chứa mail đã xoá

    [email protected] 37

  • Email trên Internet (tt)

    Các dịch vụ cơ bản của mạng Internet

    – www (wold wide web)

    – Thư điện tử (email)

    – Truyền, tải tập tin (FTP)

    – Tán ngẫu – Chat

    Các dịch vụ nâng cao của mạng internet

    – Điện thoại internet (VoIP)

    – Hội thảo trực tuyến (NetMeeting)

    – Theo dõi, giám sát (Tracking)

    – …..

    [email protected] 38

  • World Wide Web

    World Wide Web (www)

    – Là dịch vụ phổ biến nhất của mạng Internet (đến mức nhiều

    người hiểu đồng nhất khái nhiệm internet với web)

    – Ra đời năm 1991, do Tim Berners Lee ở Trung tâm nghiên

    cứu nguyên tử châu Âu (Cern) phát minh ra dựa theo một ý

    tưởng về siêu văn bản được Ted Nelson đưa ra từ năm 1985.

    – Có thể nói www là một cuộc cách mạng trên Internet vì nhờ nó

    người dùng có thể truy cập, trao đổi thông tin một cách dễ

    dàng.

    [email protected] 39

  • World Wide Web (tt)

    Kiến trúc WWW

    – Gồm tập các máy chủ (server) và máy khách (client) nói truyện

    với nhau thông qua ngôn ngữ HTML (Hypertext Markup

    Language)

    – Máy chủ (server) luôn sẵn sàng “lắng nghe” những yêu cầu từ

    máy khách (client). Khi được hỏi, sẽ “sinh ra” câu trả lời biểu

    diễn dưới dạng ngôn ngữ HTML rồi truyền về cho máy client

    – Máy khách (client) sử dụng các trình duyệt web (web browser)

    để dịch và hiển thị “câu trả lời” từ phía server gửi về.

    [email protected] 40

  • World Wide Web (tt)

    Siêu văn bản (hypertext)

    – Siêu văn bản là một loại văn bản thông thường nhưng chứa một haynhiều tham chiếu tới các văn bản khác.

    – Người sử dụng có thể đi từ tài liệu này sang tài liệu khác thông quacác tham chiếu. Như vậy ta có thể đi vào xa lộ thông tin của thế giới.

    URL (Unifrom Resource Locator)

    – Là chuẩn định vị tài nguyên trên mạng (thường gọi là link). Căn cứvào URL người dùng có thể di chuyển từ văn bản này tới văn bảnkhác trong khái niệm siêu văn bản.

    – Được dùng để tham chiếu tới tài nguyên trên Internet

    – Cú pháp URL:

    • Protocol://Domain-name:Port/Folder/Page?Variable=Value#Label

    – Vd: http://www.utc2.edu.vn

    [email protected] 41

    http://www.utc2.edu.vn/

  • 1.3. Khái niệm về vấn đề và bài toán

    Bài toán– Trong phạm vi tin học, bài toán được hiểu là một công việc

    nào đó mà ta muốn máy tính thực hiện.

    – 2 yếu tố quan trọng của bài toán:• Input: dữ liệu đưa vào

    • Output: kết quả cần tìm của bài toán.

    – Vd: Viết một dòng chữ ra màn hình. Bài toán giải phương trình bậc 2; Bài toán quản lý điểm..v.v

    Thuật toán– Là một dãy hữu hạn các thao tác được sắp xếp theo một trình

    tự xác định sao cho khi thực hiện dãy thao tác đó thì từ Input của bài toán ta sẽ có Output cần tìm.

    [email protected] 42

  • Các bước giải bài toán

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

    – Xác định rõ Input và Output của bài toán.

    – Cần xác định input, output một cách cẩn thận vì nó sẽ ảnh

    hưởng tới việc lựa chọn thuật toán giải quyết. Trong tin học, đôi

    khi việc xác định input/output còn phụ thuộc vào ngôn ngữ lập

    trình sử dụng.

    Bước 2 - Thiết kế thuật toán

    – Là bước quan trọng nhất để giải bài toán

    – Một bài toán có thể có nhiều thuật toán để giải quyết

    – Cần quan tâm tới tính hiệu quả của thuật toán (về bộ nhớ, về

    thời gian thực hiện..v.v)

    [email protected] 43

  • Các bước giải bài toán (tt)

    Bước 3 – Viết chương trình

    – Lựa chọn ngôn ngữ lập trình phù hợp với nhu cầu và khả năng của

    bản thân

    – Cần tận dụng các tiện ích mà các IDE (Integrated Deverlopment

    Environment)

    Bước 4 – Hiệu chỉnh, làm tinh chương trình

    – Cần đưa nhiều bộ số liệu khác nhau vào kiểm thử

    – Đôi khi cần có kinh nghiệm và đầu óc phán đoán lỗi.

    Bước 5 – Viết tài liệu

    – Là hướng dẫn sử dụng, kết quả thử nghiệm, hoặc mô tả chi tiết thuật

    toán

    [email protected] 44

  • Thuật toán – Thuật giải

    Định nghĩa:– Thuật toán (algorithm) là một dãy hữu hạn các thao tác được

    sắp xếp theo một trình tự xác định sao cho khi thực hiện dãy thao tác đó thì từ Input của bài toán ta sẽ có Output cần tìm.

    Các đặc trưng của thuật toán– Tính hữu hạn– Tính xác định

    – Tính đúng đắn

    – Tính chi tiết: thao tác trong thuật toán phải chặt chẽ, đủ chi tiếtđể 1 đối tượng có thể thực hiện được thuật toán.

    – Tính phổ dụng

    [email protected] 45

  • Thuật toán – Thuật giải (tt)

    Từ giải thuật đến chương trình

    Giải thuật chỉ là “phương pháp”.

    Sử dụng giải thuật như thế nào để giải quyết bài toán

    – Cần phải có máy tính.

    – Lập trình: Mô tả (cài đặt) giải thuật lên máy tính.

    Biểu diễn đối tượng xử lý bởi dữ liệu (data) trong chương trình

    (có nhiều kiểu dữ liệu với cấu trúc khác nhau).

    Thuật giải + cấu trúc dữ liệu = chương trình

    [email protected] 46

  • Thuật toán – Thuật giải (tt)

    Có phải mọi bài toán đều có thuật giải?

    Có những bài toán không có giải thuật tổng

    quát để giải quyết.

    Có những bài toán chưa có giải thuật hữu

    hiệu để giải quyết.

    Có những bài toán chưa có giải thuật tìm lời

    giải.

    [email protected] 47

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

    Liệt kê từng bước

    Sử dụng sơ đồ khối

    Sử dụng giả ngôn ngữ lập trình

    [email protected] 48

  • Phương pháp liệt kê từng bước

    Các thao tác của giải thuật được liệt kê từng bước.

    Tại mỗi bước, sử dụng ngôn ngữ tự nhiên để diễn tả công

    việc phải làm.

    Bước đứng trước (có số thứ tự nhỏ hơn) được thực hiện

    trước.

    Ưu nhược điểm

    – Dễ hiểu, dễ làm

    – Phụ thuộc vào “cách hành văn” của người diễn đạt

    – Với những giải thuật phức tạp, cách diễn đạt này trở nên

    rườm rà

    – ….

    [email protected] 49

  • Ví dụ

    Giải thuật “Tìm vị trí xuất hiện đầu tiên của một số

    nguyên trong dãy số nguyên đã cho”:

    Bước 1: Nhập dãy số nguyên a1, a2, …., aN

    Bước 2: Nhập số nguyên s

    Bước 3: Gán vị trí p ban đầu = 0 và vị trí i đang xét = 1 p = 0, i=1

    Bước 4: So sánh ai với s

    Nếu ai =s thì ghi nhận vị trí p = i → Sang Bước 5

    Nếu ai ≠ s và i < N thì gán i=i+1 và lặp lại bước 4, ngược

    lại sang Bước 5

    Bước 5: Nếu p ≠ 0 thì đưa ra vị trí cần tìm là p, ngược lại thông báo không

    tìm thấy giá trị s trong dãy số đã cho.

    Bước 6: Kết thúc.

    [email protected] 50

  • Biểu diễn thuật toán bằng sơ đồ khối

    Sử dụng các hình khối để minh hoạ cho các lệnh hay

    thao tác.

    Sử dụng mũi tên để diễn đạt thứ tự thực hiện.

    Đây là cách diễn đạt khoa học, có tính nhất quán cao.

    Các hình khối cơ bản

    – Khối bắt đầu.

    – Khối kết thúc.

    – Khối thao tác cụ thể.

    – Khối kiểm tra điều kiện.

    – Khối vào/ra dữ liệu.

    – Khối gọi chương trình con.

    Các ký pháp.

    [email protected] 51

  • Các hình khối cơ bản

    [email protected] 52

    Khối bắt đầu và kết thúc

    Khối input/output

    Gọi chương trình con A (ít

    Khối kiểm tra điều kiện

    – Tuỳ thuộc điều kiện (Đúng

    hay Sai) mà rẽ nhánh thích

    hợp

    Khối thực thi công việcA

    A

    A

    Điều kiệnĐúng

    Sai

    End

    dùng)

    Begin

    Điểm nối

  • Sơ đồ một số cấu trúc cơ bản

    • Cấu trúc rẽ nhánh

    [email protected] 53

    if….then if….then

    else

  • Sơ đồ một số cấu trúc cơ bản

    • Cấu trúc lặp xác định

    [email protected] 54

    Biến = 1, 2, …,n

    A

  • Sơ đồ một số cấu trúc cơ bản (tt)

    • Cấu trúc lặp không xác định

    [email protected] 55

    while…do repeat…until

  • Tính chu vi và diện tích HCN

    Phương pháp liệt kê

    – B1. Nhập hai cạnh a,b

    – B2. Tính chu vi

    • C = 2*(a+b)

    – B3. Tính diện tích

    • S = a*b

    – B4. In chu vi C

    – B5. In diện tích S

    – Kết thúc

    [email protected] 56

    Sơ đồ khối

    Nhập a,b

  • Ví dụ

    [email protected] 57

  • Bài tập

    1. Thuật toán tính chu vi, diện tích hình chữnhật

    2. Thuật toán kiểm tra năm nhuận (năm nhuận là

    năm chia hết cho 400 hoặc chia hết cho 4

    nhưng không chia hết cho 100)

    3. Thuật toán tính chu vi, diện tích tam giác biếtđộ

    dài 3 cạnh (kiểm tra 3 cạnh tạo thành tam giác

    hay không trước khi tính)

    4. Thuật toán hoán đổi giá trị của 2 số a vàb

    [email protected] 58

  • Bài tập

    1. Nhập 2 số nguyên dương a, b. Tìm UCLN vàBCNN của 2 sốđó.

    2. Nhập số nguyên a, kiểm tra xem a có phải là sốnguyên tố không?

    3. Nhập số nguyên a, kiểm tra xem a có phải là sốhoàn hảo hay không?

    [email protected] 59

  • Một số bài toán cơ bản

    • Bài toán đếm

    • Bài toán tính tổng

    • Bài toán tính tích

    • Bài toán tìm giá trị lớn nhất, nhỏnhất

    [email protected] 60

  • Bàitoánđếm

    [email protected] 61

    Begin

    Input: n

    i = 1, 2, …,n

    Input: ai

    Dem =0

    i = 1, 2, …,n

    Bt logic

    Dem = Dem + 1

    Output: Dem

    End

    S

    Đ

  • Bài tập

    1. Nhập dãy số nguyên gồm n phần tử, đếm số phần tử

    chia 5 dư 2 và nằm trong đoạn [x, y] với x, y nhập từ

    bànphím.

    2. Nhập dãy số nguyên gồm n phần tử, tính trung bình

    cộng và trung bình nhân các phần tử chẵn, và không

    nằm trong đoạn [-35, 25].

    3. Nhập dãy số nguyên gồm n phần tử.

    a. Đếm số cặp 2 phần tử liên tiếp thỏa mãn điều kiện số

    sau lớn hơn số trước.

    b. Đếm số cặp 2 phần tử liên tiếp có tích chia hết cho

    tổng.

    [email protected] 62

  • Bài tập

    c. Đếm số cặp 3 phần tử liên tiếp có tổng chia hết cho 5.

    d. Đếm số cặp 3 phần tử liên tiếp tạo thành cấp số cộng.

    4. Cho n điểm nằm trong mặt phẳng tọa độxOy.

    a. Đếm số điểm nằm trong góc phần tư thứnhất.

    b. Đếm số điểm nằm trên đường phần giác của góc phần tưthứ

    nhất.

    c. Đếm số điểm nằm phía trên đường phần giác của góc phần tư

    thứ nhất.

    d. Đếm số điểm nằm trong hình tròn tâm Obán kính R(điểm nằm

    trên đường trònđược coi là nằm trong hình tròn).

    e. Đếm số đoạn thẳng cắt trục hoành.

    [email protected] 63

  • Bàitoántínhtổng

    [email protected] 64

    Begin

    Input: n

    i = 1, 2, …,n

    Input: ai

    S = 0

    i = 1, 2, …,n

    S = S + ai

    Output: S

    End

  • Bàitoántínhtích

    [email protected] 65

    Begin

    Input: n

    i = 1, 2, …,n

    Input: ai

    T =1

    i = 1, 2, …,n

    T = T * ai

    Output:T

    End

  • Vídụ

    [email protected] 66

    1. Nhập số nguyên dương n và số thực x.Tính

    𝑆= 2 +1+𝑥 1 +𝑥2

    2 3+ + ⋯+

    1 +𝑥𝑛

    𝑛 +1

    2. Nhập số nguyên dương n và số thực x.Tính

    𝑆= 2+𝑥+3 𝑥+5

    9 11+ + ⋯+

    𝑥+ 2𝑛 +1

    2𝑛 +7

    3. Nhập số nguyên dương n và số thực x.Tính𝑆= 𝑥+ (1 + 𝑥)3+(2 + 𝑥)3+ ⋯+ (𝑛 +𝑥)3

    4. Nhập số thực x.Tính

    𝑆 = 𝑥+ 𝑥+⋯+ 𝑥 (n lần)

    5. Nhập số nguyên dương n. Tính1.3.5. ⋯.𝑛

    𝑆= ቊ2.4.6. ⋯.𝑛

    (n lẻ)

    (nchẵn)

    6. Nhập số nguyên dương n và số thực x.Tính

    𝑥2

    2!𝑆 = 2013 +𝑥+ + ⋯+

    𝑥𝑛

    𝑛!

  • Bàitoántìm gtln(gtnn)

    [email protected] 67

    Begin

    Input: n

    i = 1, 2, …,n

    Input: ai

    Max =a1

    i = 1, 2, …,n

    Max

  • Vídụ

    1. Cho dãy số thực gồm n phần tử. Tìm một phần tử có GTLN và vị trí của nó trong dãy.

    2. Cho dãy số thực gồm n phần tử.

    a. Tìm cặp 2 phần tử liên tiếp có tích nhỏ nhất.

    b. Tìm cặp 3 phần tử liên tiếp có tổng lớn nhất. Tổng đó là bao nhiêu.

    3. Cho dãy số nguyên gồm n phần tử.

    a. Tìm phần tử âm nhỏnhất.

    b. Tìm phần tử chẵn lớnnhất.

    c. Tìm phần tửnhỏ nhất lớn hơn 5.

    4. Nhập n điểm trong mặt phẳng tọa độxOy.

    a. Tìm hình tròn nhỏ nhất tâm O chứa tất cả các điểm.

    b. Tìm tọa độ của điểm xa gốc tọa độnhất.

    c. Trong số các điểm nằm trong góc phần tư thứ nhất, xác định khoảng cách từ gốc tọa độ tới điểmgần nhất.

    [email protected] 68

  • Biểu diễn thuật toán bằng giả ngôn ngữ

    Giả ngôn ngữ

    – Dựa trên ngôn ngữ lập trình bậc cao.

    – Gần với ngôn ngữ tự nhiên của con người.

    – Ví dụ:

    • Ngôn ngữ giả Pascal (tựa Pascal) có các ký pháp khá giống với

    ngôn ngữ lập trình Pascal, được rút gọn sao cho dễ diễn đạt.

    Giả ngôn ngữ được đưa ra với mục đích diễn đạt các giải

    thuật sao cho gần với ngôn ngữ lập trình và ngôn ngữ tự

    nhiên.

    Sử dụng giả ngôn ngữ khiến việc chuyển từ giải thuật sang

    chương trình dễ dàng hơn.

    [email protected] 69

  • Giải thuật tính tổng N số tự nhiên đầu tiên

    • Nhập N

    i:=0

    S:=0

    REPEAT

    • S:=S+i

    • i:=i+1

    • UNTIL (i>N)

    • In S

    [email protected] 70

  • Thiết kế thuật toán

    Các bước giải bài toán trên máy tính:

    – Xác định bài toán

    – Thiết kế giải thuật

    – Viết chương trình

    – Hiệu chỉnh, làm tinh

    – Viết tài liệu

    Thiết kế giải thuật là từ yêu cầu của một bài toán, diễn đạt một giải thuật giải quyết bài toán đó.

    – Mô-đun hoá việc giải quyết bài toán.

    – Tinh chỉnh từng bước.

    Phân tích giải thuật

    – Xem xét các tiêu chuẩn của giải thuật có được thoả mãn không, nếu có thì đến mức độ nào.

    [email protected] 71

  • Thiết kế từ trên xuống

    Các bài toán lớn đòi hỏi giải thuật có quy mô lớn.

    Mô-đun hoá

    – Bài toán = nhiều mô-đun

    – Mô-đun lớn = nhiều mô-đun con.

    – Việc giải quyết một mô-đun ở mức thấp nhất là “đủ đơn giản”

    → Chia để trị.

    • Thiết kế từ trên xuống (top- down design): Bài toán được xem xét từ tổng quát đến chi tiết.

    [email protected] 72

  • Bài toán giải phương trình bậc 2

    [email protected] 73

    GIẢI PHƯƠNG TRÌNH BẬC II

    NHẬP HỆ SỐ XỬ LÝ HIỂN THỊ KẾT QUẢ

    TRƯỜNG HỢP SUY BIẾN TRƯỜNG HỢP KHÔNG SUY BIẾN

    TÍNH DELTA TÍNH NGHIỆM THEO DELTA

  • Phương pháp tinh chỉnh từng bước

    Phương pháp tinh chỉnh từng bước (stepwise refinement)

    – Ban đầu, sử dụng ngôn ngữ tự nhiên để diễn tả những

    công việc chính của giải thuật.

    – Các bước sau, các công việc được chi tiết hoá dần dần,

    ngôn ngữ tự nhiên được thay thế dần dần bằng giả ngôn

    ngữ.

    – Cuối cùng, giả ngôn ngữ được chuyển sang ngôn ngữ lập

    trình

    Đặc điểm

    – Thể hiện rõ ý tưởng thiết kế từ trên xuống

    – Gắn liền việc thiết kế giải thuật với việc lập trình

    [email protected] 74

  • Bài toán sắp xếp dãy số (tăng dần)

    Phác thảo “thô” với những “ý tưởng cơ bản”

    – “Từ dãy các số chưa được sắp xếp, tìm số nhỏ nhất và đưa lên đầu”

    – Lặp lại quy trình trên tới khi dãy chưa được sắp xếp trở thành rỗng.

    Ban đầu, dãy chưa sắp xếp là dãy đã cho, dãy đã sắp xếp là

    rỗng.

    Lưu trữ dãy bằng “mảng” (danh sách các số), đưa số nhỏ nhất (aj)

    lên đầu danh sách là đổi chỗ nó với số đầu tiên.

    Đổi chỗ

    – Số trung gian := aj

    – aj := số đầu tiên

    – Số đầu tiên : = số trung gian

    …, cuối cùng ta được chương trình với ngôn ngữ cụ thể

    [email protected] 75

  • Phân tích thuật toán

    Tính đúng đắn

    – Chạy thử nghiệm, đối chiếu kết quả → phát hiện được tính sai.

    – Dùng công cụ toán học để chứng minh → tính đúng đắn.

    Tính đơn giản

    – Giải thuật có dễ hiểu, dễ lập trình không?

    Tính hiệu quả

    – Đơn giản chưa chắc đã hiệu quả.

    – Đối với nhiều bài toán, tính hiệu quả là quan trọng, các giải thuật

    đơn giản lại gây tốn tài nguyên, chạy chậm.

    – Thời gian tính toán → Độ phức tạp tính toán

    – Những giải thuật hiệu quả phải có độ phức tạp (thời gian) tính toán chấpnhận được.

    Tính hữu hạn dừng

    – Chứng minh, suy luận

    – Chạy thử

    [email protected] 76

  • Một số thuật toán thường gặp

    Bài toán tìm kiếm

    – Thuật toán tìm kiếm tuyến tính

    – Thuật toán tìm kiếm nhị phân

    Bài toán tìm số USCLN của 2 số

    – Thuật toán lặp, kiểm tra các giá trị từ 1,2,...,min(a, b)

    – Thuật toán phân tích các số nguyên đã cho thành các thừa số

    nguyên tố.

    – Thuật toán euclide

    Bài toán sắp xếp dãy tăng/giảm dần

    – Thuật toán nổi bọt (bubble sort)

    – Thuật toán chọn trực tiếp (selection sort)

    – Thuật toán chèn trực tiếp (insertion sort)

    – Thuật toán sắp vun đống (heap sort)

    [email protected] 77

  • Một số thuật toán thường gặp (tt)

    Thuật toán đệ quy

    – Định nghĩa: Một thuật toán được gọi là đệ quy nếu

    nó giải bài toán bằng cách rút gọn liên tiếp bài

    toán ban đầu tới bài toán đồng dạng với dữ liệu

    đầu vào nhỏ hơn.

    – Ví dụ:

    Bài toán tính n!

    Bài toán tìm số thứ n của dãy số Fibonaci

    Bài toán tìm USCLN của 2 số a, b

    Bài toán tìm kiếm nhị phân

    Bài toán tháp Hà Nội

    [email protected] 78

  • Bài tập

    Vẽ sơ đồ biểu diễn thuật toán tìm trung bình cộng

    của dãy số a1, a2, …, an

    Vẽ sơ đồ biểu diễn thuật toán tìm TBC các số

    chẵn và chia hết cho 5 trong dãy số a1, a2, …, an

    Vẽ sơ đồ biểu diễn thuật toán đếm xem trong dãy

    số a1, a2, …, an có bao nhiêu cặp có chỉ số liên

    tiếp (vd: a2, a3) thỏa điều kiện tích chúng chia hết

    tổng của chúng.

    Hãy vẽ sơ đồ thuật toán tìm và in ra các số là số

    nguyên tố trong dãy số a1, a2,...,aN

    [email protected] 79

  • Bài tập (tt)3. Hãy vẽ sơ đồ thuật toán tìm trong số các phần tử của dãy a1, a2,...,aN

    có bao nhiêu cặp (ai, aj) với i≠j thỏa điều kiện ai+aj = x

    4. Hãy vẽ sơ đồ thể hiện thuật toán đổi một số nguyên dương N sang hệ

    đếm cơ số 2 (hệ nhị phân).

    5. Hãy vẽ sơ đồ thể hiện thuật toán giải phương trình bậc 2: ax2+ bx + c =

    0

    6. Hãy vẽ sơ đồ thể hiện toán tìm tích của 2 ma trận Amxn và Bnxp

    7. Hãy vẽ sơ đồ thể hiện thuật toán tìm độ dài của đường gấp khúc đi qua

    N điểm trên mặt phẳng M1(x1, y1), M2(x2, y2),....,Mn(xn, yn).

    8. Vẽ sơ đồ thể hiện thuật toán sắp xếp lại dãy số a1, a2,...,an theo thứ tự

    giảm dần.

    9. Vẽ sơ đồ thể hiện thuật toán tìm các phần tử trong dãy a1, a2,...,an

    thỏa điều kiện ai = ai-1 + ai-2 + ...+ a2+ a1

    10.Vẽ sơ đồ thể hiện thuật toán tìm trung bình cộng của các phần tử là số

    chính phương trong dãy a1, a2,...,aN 80