Thực hành kỹ thuật lập trình cơ bản

38 144 0
Tài liệu ảnh, khi tải xuống sẽ không sao chép được nội dung tài liệu
Thực hành kỹ thuật lập trình cơ bản

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

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

Thông tin tài liệu

BÀI 1. Thực hiện các thuật toán bằng phần mềm Flowgorithm 1.1. Mục đích Sử dụng phần mềm Flowgorithm trong thiết kế và biểu diễn thuật toán; Xây dựng thuật toán cho các bài toán cụ thể trên Flowgorithm 1.2. Cơ sở lý thuyết 1.2.1. Giới thiệu Flowgorithm Flowgorithm là ngôn ngữ lập trình dành cho người mới bắt đầu miễn phí dựa trên sơ đồ đồ họa đơn giản. Thông thường, khi một sinh viên lần đầu tiên học lập trình, họ thường sử dụng một trong những ngôn ngữ lập trình dựa trên văn bản. Tùy thuộc vào ngôn ngữ, điều này có thể dễ dàng hoặc khó khăn. Nhiều ngôn ngữ yêu cầu bạn viết các dòng mã khó hiểu chỉ để hiển thị văn bản Xin chào, thế giới. Bằng cách sử dụng sơ đồ, bạn có thể tập trung vào các khái niệm lập trình hơn là tất cả các sắc thái của ngôn ngữ lập trình thông thường. Bạn cũng có thể chạy các chương trình của mình trực tiếp trong Flowgorithm. Một khi bạn hiểu logic lập trình, bạn sẽ dễ dàng học một trong những ngôn ngữ chính. Flowgorithm có thể tương tác chuyển đổi sơ đồ của bạn sang hơn 18 ngôn ngữ. Chúng bao gồm: C , C ++, Java, JavaScript, Lua, Perl, Python, Ruby, Swift, Visual Basic .NET và VBA (được sử dụng trong Office). 1.2.2. Đặc tính của Flowgorithm Đầu ra dễ hiểu Cửa sổ xem biến đồ họa Tương tác tạo mã thật Phối màu tùy chỉnh Hỗ trợ đa ngôn ngữ Hỗ trợ đầy đủ các toán tử và hơn 20 hàm cơ bản 1.2.3. Các cửa sổ chính khi làm việc với Flowgorithm a. Giao diện chính Secret Number Flowgorithm File Edit Program Tools Help Main secret = random(100)+1 Output Guess 1 to 100 True guess = secret False Input guess False True guess > secret Output Too HIGH Program has finished running. b. Cửa sổ điều khiển Hình 1. Main window EN Phương pháp cổ điển để tương tác với máy tính là sử dụng Bảng điều khiển. Thuật toán lưu lượng cố gắng làm cho nó trông giống như một cửa sổ nhắn tin tức thời điển hình. Bong bóng trò chuyện được mã hóa màu để khớp với hình dạng Đầu vào và Đầu ra được sử dụng trong sơ đồ. Nếu bạn không muốn sử dụng bong bóng trò chuyện, bạn cũng có thể chuyển đổi giữa chúng và văn bản thuần túy cổ điển. Console Enter two numbers. This algorithm will find the greatest common denominator. Enter the first number Enter the second number The greatest common denominator is 13 Hình 2. Console Window 182 39 Enter c. Giao diện mã nguồn Trình xem mã nguồn có thể chuyển đổi sơ đồ của bạn sang một số ngôn ngữ lập trình chính. 7 9 10 11 Source Code Viewer Java I. public static void main(String args) { int secret, guess; guess = 0; secret random.nextInt(100) + 1; System.out.println(Guess 1 to 100); while (guess = secret) { guess = input.nextInt(); if (guess > secret) { 12 13 14 15 16 17 17 } 18 19 20 21 } 22 23 } System.out.println(Too HIGH); if (guess < secret) { System.out.println(Too LOW); System.out.println(Correct); ■ II Hình 3. Source Code Viewer Window d. Giao diện xem các biến của chương trình Cửa sổ theo dõi biến được sử dụng để theo dõi cách các biến của bạn thay đổi khi chương trình của bạn thực thi. Mỗi biến được mã hóa màu dựa trên kiểu dữ liệu của nó. Nhìn thoáng qua, bạn có thể cho biết chính xác loại dữ liệu nào đang được lưu trữ và nắm bắt nơi bạn có thể muốn sử dụng một loại dữ liệu khác. Variable Watch X Variable Watch X Main Main ratio Fibonacci 1.618 0 0 1 1 year 2 1 1947 3 2 name 4 3 Sacramento State 5 5 6 8 co done 7 13 true 8 21 9 34 Hình 4. Variable Watch Window 1.3. Thiết bị thực hành thí nghiệm và vật tư tiêu hao: 1.3.1. Thiết bị thực hành thí nghiệm Máy tính cài phần mềm Flowgorithm 1.3.2. Vật tư tiêu hao: Không 1.4. CÁC BƯỚC TIẾN HÀNH THÍ NGHIỆM 1.4.1. Xây dựng thuật toán hiển thị xâu ký tự với Flowgorithm B1: Tạo chương trình mới Khi bắt đầu một sơ đồ mới, chúng ta sẽ thấy hai hình chữ nhật tròn được gọi là terminals. Những biểu tượng này đại diện cho sự bắt đầu và kết thúc chương trình của bạn. Nhiều sơ đồ thuật toán hiển thị văn bản Begin trong terminal. Flowgorithm sử dụng văn bản Main. Hầu hết các ngôn ngữ lập trình bắt đầu với các nỗ lực Main và Flowgorithm cũng vậy. Main End Hình 5. Bắt đầu và kết thúc chương trình B2: Thêm các khối chức năng — — Tất cả mọi thứ trong một sơ đồ được thể hiện bằng các khối hình. Các khối được thêm vào giữa các terminals Main và End. Để thêm hình dạng, di chuyển con trỏ chuột của bạn trên một dòng. Nếu có thể thêm một khối, dòng sẽ chuyển sang màu cam. Bấm đúp hoặc bấm chuột phải để thêm hình. Hiển thị giao diện với các khối cần thêm Lựa chọn và click vào khối cần thêm sẽ được chương trình như hình 7. Main Clipboard En Miscellaneous Comment Breakpoint Statement InputOutput Variables Control Looping Input Declare While Output Assign Call For Do Hình 6. Thêm các khối chức năng cho chương trình Main Output End Hình 7. Chương trình đã thêm các khối chức năng B3: Định nghĩa chức năng cho khối Click đúp chuột vào khối cần định nghĩa chức năng Cửa sổ “Output Properties” xuất hiện, chúng ta có thể nhập vào các chứng năng theo cú pháp quy định, chương trình sau khi định nghĩa chức năng được chỉ ra trong hình 9. Main Output Output Properties X Output An Output Statement evaluates an expression and then displays the result to the screen. Enter an expression below: Hello, world OK Cancel Hình 8. Định nghĩa chức năng cho khối được thêm vào Main Output Hello, world End Hình 9. Chương trình sau khi định nghĩa cho các khối chức năng thêm vào B4: Khởi chạy chương trình đã thiết kế Bấm F5 hoặc nút “Run” trên menu của chương trình 1 Console Hello, world Enter Hình 10. Cửa sổ điều khiển hiện thị kết quả B5: Xem mã nguồn hoặc các biến sử dụng trong chương trình sử dụng menu “Tools” ở thanh công cụ. 1.4.2. Sử dụng Flowgorithm xây dựng chương trình giải quyết các bài toán a. Tính diện tích hình tròn Area of Circle Flowgorithm File Edit Program Tools Help Main Version 2.20.0 Main Real area Integer radius Output Please enter the radius of a circle Input radius area 3.14 radius 2 Output The area is area End Hình 11. Sơ đồ giải thuật bài toán tính diện tích hình tròn EN File b. Nhập và in số lượng chai sử dụng vòng lặp for 99 Bottles of Beer For Flowgorithm Edit Program Tools Help Main Main Integer n The If Statement inside the loop will print the correct lyric: bottles vs. bottle. This version uses a For Loop rather than a while Loop. It will only work in version 1.7 and later. Next n=99 to 1 decreasing Done End False True n == 1 Output n bottles of beer on the wall Output One bottle of beer on the wall Version 2.20.0 Hình 12. Giải thuật bài toán nhập và in số lượng chai sử dụng vòng lặp while c. Tính diện tích hình tròn sử dụng hàm (chương trình con) Function Circle Flowgorithm File Edit Program Tools Help Main File Function Circle Flowgorithm Edit Program Tools Help Circle Version 2.20.0 Main Integer x Output Input the radius of the circle Input x Circle (Real Radius) Real Area Functions This function has one parameter called Radius. It acts like a local variable that is assigned when the function is called. Area = Pi Radius 2 The following will call the Circle function using the value the user entered. Notice that this variable is called x while the function uses Radius. The value of X is passed to the function. Output Area is Circle(x) End EN Version 2.20.0 Return Real Area This function returns the contents of the Area variable. Hình 13. Sử dụng hàm cho giải thuật tính diện tích hình tròn EN EN d. Viết chương trình nhập và cạnh và chiều cao tương ứng của một tam giác và in ra màn hình diện tích tam giác. e. Xây dựng thuật toán kiểm tra tính nguyên tố (một số nguyên dương n là số nguyên tổ khi chỉ có hai ước là 1 và chính nó) Gợi ý: Bước 1: nhập số nguyên dương n; Bước 2: nếu n=1 thông báo “n khong la so nguyen to”, kết thúc; Bước 3: nếu nn2: print(nl is big) else: print(n2 is big) 2. Viết chương trình nhập hai điểm và tính khoảng cách import math; x1=int (input (Enter x1>)) yl=int (input (Enter y1>)) x2=int (input (Enter x2>)) y2=int (input (Enter y2>)) d1 = d2 = (x2 x1) (x2 x1); (y2 y1) (y2 y1); res = math.sqrt(d1+d2) print (Distance between two points: , res); 3. Viết chương trình nhập vào một số và kiểm tra số đó là chẵn hay lẻ, in thông báo ra màn hình n=int(input(Enter a number>)) if n % 2 == 0: print (EVEN Number); else: print (ODD Number); 4. Viết chương trình in ra màn hình số nghịch đảo và kết quả dưới dạng thập phân của một dãy số tự nhiên trong khoảng (a,b) i=1; for i in range (2,10): print(:,i,j:,j) print (i,,j) print (ij); 5. Viết chương trình nhập vào một số tự nhiên n > 0, in ra màn hình các số tự nhiên giảm dần từ n đến 0, mỗi ký tự in trên 1 hàng n = int(input(Enter A Number>)); while n >=0: print (n); n = n 1; 6. Viết chương trình tìm tất cả các số chia hết cho 7 nhưng không phải bội số của 5, nằm trong đoạn 2000 và 3200 (tính cả 2000 và 3200). Các số thu được sẽ được in thành chuỗi trên một dòng, cách nhau bằng dấu phẩy. Gợi ý: • Sử dụng range(begin, end) Code mẫu: j= for i in range (2000, 3201): if (i7==0) and (i%5=0): j.append(str(i)) print (,.join(j)) 7. Với số nguyên n nhất định, hãy viết chương trình để tạo ra một dictionary chứa (i, ii) như là số nguyên từ 1 đến n (bao gồm cả 1 và n) sau đó in ra dictionary này. Ví dụ: Giả sử số n là 8 thì đầu ra sẽ là: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64}. Gợi ý: • Viết lệnh yêu cầu nhập số nguyên n Code mẫu: n=int(input(Nhập vào một số:)) d=dict () for i in range (1, n+1): di=ii print (d) 8. Viết chương trình in ra màn hình dãy số Fibonacci nhỏ hơn 4.000.000, tìm tổng các số chẵn trong dãy đã in a, b = 1, 2 total = 0 print (a, end= ) while (a (True, 3) Giải thuật tìm kiếm tuyến tính ( Mảng A, Giá trị x) Bước 1: Thiết lập i thành 1 Bước 2: Nếu i > n thì chuyển tới bước 7 Bước 3: Nếu Ai = x thì chuyển tới bước 6 Bước 4: Thiết lập i thành i + 1 Bước 5: Tới bước 2 Bước 6: In phần tử x được tìm thấy tại chỉ mục i và tới bước 8 Bước 7: In phần tử không được tìm thấy Bước 8: Thoát Flowchart: def Sequential_ Search(dlist, item) pos = 0 found False pos len(dlist) and not found? Yes No dlist pos == item? retum found, pos Yes No found True pos pos+1 End 9. Xây dựng hàm “binary_search(list, value)” (giải thuật tìm kiếm nhị phân) dưới dạng module. Viết chương trình nhập một list n phần tử từ bàn phím và tìm kiếm phần tử value bất kỳ. binary_search(1,2,3,5,8, 6) > False binary_search(1,2,3,5,8, 5) > True Gợi ý: Giải thuật kiếm nhị phan (Binary Search) A + một mảng đã được sắp xếp n kích cỡ mảng X ← giá trị để tìm kiếm trong mảng gán lowerBound = 1 gán upperBound = n while x not found if upperBound < lowerBound EXIT: x không tồn tại. gán midPoint = lowerBound + (upperBound lowerBound) 2 if AmidPoint < x gán lowerBound if AmidPoint > x = midPoint + 1 = gán upperBound midPoint if AmidPoint = X — 1 EXIT: x được tìm thấy tại midPoint kết thúc while kết thúc giải thuật Flowchart: def binary_search(item_ list,item) first = 0 last len(item_list)1 found = False (first nlist +1? Yes temp = nlist i nlist= nlist +1 nlist i+1= temp 11. Viết chương trình sử dụng thư viện NumPy để tạo một mảng có cấu trúc từ tên sinh viên, chiều cao, lớp và các kiểu dữ liệu của họ. Bây giờ sắp xếp theo lớp, sau đó chiều cao nếu lớp bằng nhau. Dữ liệu đầu vào: (James, 5, 48.5 ) (Nail, 6, 52.5 ) (Paul, 5, 42.1 ) (Pit, 5, 40.11) Kết quả sắp xếp: (Pit, 5, 40.11) (Paul, 5, 42.1 ) (James, 5, 48.5 ) (Nail, 6, 52.5 ) 12. Viết chương trình sử dụng thư viện NumPy để sắp xếp id sinh viên với chiều cao tăng dần của sinh viên từ id sinh viên và chiều cao đã cho. In các chỉ số nguyên mô tả thứ tự sắp xếp theo nhiều cột và dữ liệu được sắp xếp (sử dụng hàm lexsort() Dữ liệu đầu vào: student_id = 1023, 5202, 6230, 1671, 1682, 5241, 4532 student_height = 40., 42., 45., 41., 38., 40., 42.0 Kết quả: Chỉ số: 4 0 5 3 6 1 2 Dữ liệu sắp xếp: 1682 38.0 1023 40.0 5241 40.0 1671 41.0 4532 42.0 5202 42.0 6230 45.0 1.5. Câu hỏi kiếm tra Giải thích chương trình đã viết Tạo và sử dụng module trong python Các thuật toán sắp xếp, tìm kiếm Thư viện numpy 1.6. Tài liệu tham khảo Allen B. Downey, Think Python, OReilly Media, Inc, 2015. 1.1. 1.2. 1.3. Mục đích Bài 6: Lập trình hướng đối tượng trong Python Giúp sinh viên nắm bắt về lập trình hướng đối tượng trong lập trình python. Cơ sở lý thuyết Xem các quy tắc xây dựng class, các phương thức và thuộc tính của đối tượng. Thiết bị thực hành thí nghiệm và vật tư tiêu hao Thiết bị thực hành thí nghiệm: Máy tính Vật tư tiêu hao: Không 1.4. Các bước tiến hành Thực hiện các bài tập sau sử dụng python 1. Định nghĩa một class có tên là Circle có thể được xây dựng từ bán kính. Circle có một method có thể tính diện tích. Gợi ý: Sử dụng def methodName(self) để định nghĩa method. class Circle (object): def init (self, r): self.radius = r : def area (self): return self.radius23.14 aCircle = Circle (2) print (aCircle.area ()) 2. Định nghĩa class có tên là Hinhchunhat được xây dựng bằng chiều dài và chiều rộng. Class Hinhchunhat có method để tính diện tích. 3. Định nghĩa class Nguoi và 2 class con của nó: Nam, Nu. Tất cả các class có method getGender có thể in Nam cho class Nam và Nữ cho class Nu. class Nguoi (object): def getGender (self): return Unknown class Nam( Nguoi ): def getGender (self): return Nam Code by Quantrimang.com class Nu( Nguoi ): def getGender(self): return Nữ aNam = Nam() aNu= Nu () print (aNam. getGender () ) print (aNu.getGender ()) 4. Viết chương trình Python dưới dạng class để chuyển đổi một số La Mã thành một số nguyên. Flowchart: print(py_solution roman_to_int MMMCMLXXXVI class py_solution 0 and rom_valsi >rom_vallsi 1? return int val int_val+rom_valsi 2 rom_valsi 1 Yes No int_val+rom_vallsü End 5. Viết chương trình Python dưới dạng class để đảo ngược chuỗi từ từng chữ. Dữ liệu vào : hello .py Đầu ra : .py hello Flowchart: print(py_solution() .reverse_words(hello .py)) P End def reverse_words (self, 5) return join(reversed (s.split()) End 6. Viết một class Python có hai phương thức get_String và print_String. get_String chấp nhận một chuỗi từ người dùng và print_String in chuỗi đó bằng chữ in hoa. str1 10String def_init_(self) def get_String(self) def print_String(self) str1.get_String0 str1.print_String() self.str1 self.str1 = input( print(self.str1.upper()) End End KEnd End 7. Viết một class Python có tên Circle được xây dựng theo bán kính và hai phương thức sẽ tính diện tích và chu vi của hình tròn. 8. Chương trình ATM đơn giản class Bank: Account_type = Savings location = Guntur def init (self, name, Account Number, balance): self.name = name self.Account_Number = Account_Number self.balancebalance self.Account_type=Bank.Account_type self.locationBank.location )) def repr (self): print (Welcome to the SBI ATM Machine ) print(➖➖➖ account_pin = int(input (Please enter your pin number if (account_pin==123): Account (self) else: print(Pin Incorrect. Please try again) Error (self) T return .join(self.name, self.Account_Number) def Error (self): account_pin = int (input(Please enter your pin number )) if (account_pin==123): Account (self) else: print(Pin Incorrect. Please try again) Error (self) def Account (self): print (Your Card Number is: XXXX XXXX XXXX 1337) print (Would you like to depositwithdrawCheck Balance?) 1) 4 2 2) 3) 4) print ( Balance Withdraw Deposit Quit 1.5. option=int (input (Please enter your choice:)) if (option==1): Balance (self) elif (option==2): Withdraw (self) elif (option==3): Deposit (self) elif (option==4): exit() def Balance (self): print (Balance:, self.balance) Account (self) def Withdraw (self): wint (input(Please Enter Desired amount: )) if (self.balance>0 and self.balance>=w) : self.balance=self.balancew print(Your transaction is successfull) print(your Balance:, self.balance) print() else: print(Your transaction is cancelled due to) print (Amount is not sufficient in your account) Account (self) def Deposit (self): d=int(input(Please Enter Desired amount: )) self.balance=self.balance+d print(Your transaction is successfull) print (Balance:, self.balance) Account (self) def Exit(): print (Exit) t1 = Bank (mahesh, 1453210145,5000) print (tl) Câu hỏi kiểm tra Giải thích chương trình đã viết Các khái niệm về lớp, đối tượng, thuộc tính, phương thức 1.6. Tài liệu tham khảo Allen B. Downey, Think Python, OReilly Media, Inc, 2015. 1.1. 1.2. 1.3. Mục đích Bài 7: Thao tác trên tập tin và thư mục trong Python Giúp sinh viên có thể thao tác với các file văn bản sử dụng python. Cơ sở lý thuyết Xem các quy tắc mở, đóng file văn bản, đọc và ghi nội dung của các file. Thiết bị thực hành thí nghiệm và vật tư tiêu hao Thiết bị thực hành thí nghiệm: Máy tính Vật tư tiêu hao: Không 1.4. Các bước tiến hành Thực hiện các bài tập sau sử dụng python 1. Chương trình đọc file và in đảo ngược kết quả input_fileopen (D: a.txt, r) for line in input file: 1=len (line) S= 1 while (1>=1): s=s+line 11 1=11 print(s) input file.close() 2. Chương trình đọc một file, tính số ký tự, số từ và số dòng của file k=open(D:a.txt, r) char, wc, lc=0,0,0 for line in k: for k in range (0, len (line)): char +=1 if (line k== ): Wc+=1 if (line k==\n) : wc, lc=wc+1,1c+1 print (The no.of chars is %d\n The no.of words is %d\n The no.of lines is %d % (char, wc, lc)) 3. Viết chương trình Python để đọc toàn bộ tệp văn bản 4. Chương trình Python để đọc n dòng đầu tiên của tập def file read from head (fname, nlines): from itertools import islice with open (fname) as f: for line in islice (f, nlines): print (line) file read from head(test.txt, 2) 5. Chương trình Python để nối văn bản vào tệp và hiển thị văn bản. def file read (fname): from itertools import islice. with open (fname, w) as myfile: txt = myfile.write(Python Exercises\n) myfile.write(Java Exercises) open (fname) print (txt.read()) file_read(abc.txt) 6. Chương trình Python để đọc n dòng cuối cùng của tập import sys import os def file read from tail (fname, lines): bufsize fsize iter = C = = 8192 os.stat (fname).st size with open (fname) as f: if bufsize > fsize: bufsize = data while True: fsize1 iter +=1 f.seek(fsizebufsizeiter) data.extend (f.readlines ()) file_read_from_tail (test.txt, 2) == 0: if len(data) >= lines or f.tell() print(.join (data lines: 1)) break 7. Viết chương trình Python để đếm số dòng trong tệp văn bản 8. Viết chương trình Python để viết nội dung danh sách vào tệp. 9. Viết chương trình Python để sao chép nội dung của tệp này sang tệp khác. 10. Viết chương trình python để tìm những từ dài nhất trong văn bản 1.5. Câu hỏi kiểm tra Giải thích chương trình đã viết. Các thao tác với file văn bản. 1.6. Tài liệu tham khảo Allen B. Downey, Think Python, OReilly Media, Inc, 2015. 1.1. Mục đích Bài 8: Lập trình giao diện trong Python Giúp sinh viên làm quen với lập trình đồ họa và sử dụng thư viện turtle, Tkinter trong python. 1.2. Cơ sở lý thuyết python. 1.3. Xem các quy tắc xây dựng và quản lý layout, widget, hộp thoại, đồ họa trong Thiết bị thực hành thí nghiệm và vật tư tiêu hao Thiết bị thực hành thí nghiệm: Máy tính Vật tư tiêu hao: Không 1.4. Các bước tiến hành Thực hiện các bài tập thực hành sử dụng python: 1. Viết chương trình đồ họa sử dụng thư viện turtle, kiểm tra kết quả và giải thích chương trình import turtle window = turtle.Screen() window.bgcolor (lightgreen) painter = turtle. Turtle () painter.fillcolor (blue) painter.pencolor (blue) painter.pensize (3) def drawsq (t, s): for i in range (4): t.forward(s) t.left (90) for i in range (1,180): painter.left (18) drawsq (painter, 200) 2. Viết chương trình đồ họa sử dụng thư viện turtle, kiểm tra kết quả và giải thích chương trình import turtle, random colors = red, green, blue, orange, purple, pink, yellow painter = turtle. Turtle () painter.pensize (3) for i in range (10): color= random.choice (colors) painter.pencolor (color) painter.circle (100) painter.right (30) painter.left (60) painter.setposition (0, 0) 3. Dựa trên các kết quả đạt được từ các chương trình trên hãy viết chương trình hiển thị hình ảnh đồ họa sau 4. Viết chương sử dụng thư viện đồ họa tkinter thực hiện: a) Xây dựng cửa sổ đồ họa window form b) Thêm một widget (button) vào window form c) Xây dựng phương thức xử lý sự kiện phím bấm Gợi ý: from tkinter import window = Tk () window.title(Welcome to LikeGeeks app) window.geometry (350x200) lbl = Label (window, text=Hello) lbl.grid(column=0, row=0) def clicked(): lbl.configure (text=Button was clicked ) btn = Button (window, text=Click Me, commandclicked) btn.grid(column=1, row=0) window.mainloop() d) Thay đổi màu nền và màu chữ của button sử dụng thuộc tính “bg” và “fg” 5. Sử dụng thư viện tkinter thực hiện: a) Xây dựng các radio button cho phép thực hiện các lựa chọn khác nhau Gợi ý: import tkinter as tk root = V = tk.Tk () tk. IntVar() v.set (1) initializing the choice, i.e. Python languages = (Python, 1), (Perl, 2), (Java, 3), (C++, 4), (C,5) def ShowChoice(): print (v.get()) tk. Label (root, text=Choose your favourite programming language:, = justify tk. LEFT, padx = 20).pack () for val, language in enumerate (languages): tk. Radiobutton (root, text=language, padx 20, variable=v, commandShowChoice, value=val) . pack (anchor=tk.W) root.mainloop () b) Thay thế các radio button thành các indicator như hình tk Choose your favourite programming language: Python 1 Perl 2 X Java 3 C++ 4 C5 Gợi ý: Sử dụng định nghĩa cho indicator như sau tk. Radiobutton (root, textlanguage, indicatoron width padx = = 20, 20, variablev, = 0, commandShowChoice, value=val).pack (anchor=tk.W) 6. Viết chương trình thực hiện tạo menu theo các bước sau: Bước 1: Thực hiện tạo mới window form và các menu theo code mẫu from tkinter import def NewFile(): print (New File) def About(): print (This is a simple example of a menu) root = Tk () menu = Menu (root) root.config (menumenu) filemenu = Menu (menu) menu.add_cascade (label=File, menu=filemenu) filemenu.add command (label=New, command=NewFile) filemenu.add_separator () filemenu.add_command (label=Exit, commandroot.quit) helpmenu = Menu (menu) menu.add_cascade (label=Help, menuhelpmenu) helpmenu.add_command (label=About..., command=About) mainloop() Bước 2: Tiến hành các thay đổi cần thiết để nhận được kết quả các cửa sổ window có các menu như hình: tk File Insert Help New Open Exit X tk File Insert Help Text Picture X Bước 3: Thêm các phương thức OpenFile(), Exit(), InsText(), InsPic() thực hiển hiển thị các thông báo hiển thị ra màn hình các thông báo lựa chọn tương ứng (tương tự thông báo “New File”) 7. Sử dụng thư viện đồ họa tkinter thực hiện các bước sau Bước 1: Viết chương trình game học các màu tiếng anh có nội dung như sau import the modules import tkinter import random list of possible colour.. colours = Red, Blue, Green, Pink, Black, Yellow, Orange, White, Purple, Brown Score = 0 the game time left, initially 30 seconds. timeleft = 30 function that will start the game. def startGame (event): if timeleft == 30: start the countdown timer. countdown () run the function to choose the next colour. nextColour () Function to choose and display the next colour. def nextColour (): use the globally declared score and play variables above. global score global time left if a game is currently in play if timeleft > 0: make the text entry box active. e.focus_set() if the colour typed is equal to the colour of the text if e.get().lower () Score += 1 == colours 1.lower(): clear the text entry box. e.delete (0, tkinter.END) random.shuffle (colours) change the colour to type, by changing the str(colours 0)) text and the colour to a random colour value label.config (fg = str(colours 1), text = update the score. scoreLabel.config (text = Score: + str(score)) Countdown timer function def countdown () : global timeleft if a game is in play if timeleft > 0: decrement the timer. timeleft == 1 update the time left label timeLabel.config (text = Time left: I + str(timeleft)) run the function again after 1 second. timeLabel.after (1000, countdown) Driver Code create a GUI window root = tkinter.Tk () set the title root.title (COLORGAME) set the size root.geometry (375x200) add an instructions label instructions = tkinter. Label (root, text = Type in the colour of the words, and not the word text, = (Helvetica, 12)) font instructions.pack() add a score label ScoreLabel = tkinter. Label (root, text = Press enter to start, font = (Helvetica, 12)) scoreLabel.pack() add a time left label timeLabel = tkinter. Label (root, text = Time left: + str(timeleft), font (Helvetica, 12)) = timeLabel.pack () add a label for displaying the colours label = tkinter. Label (root, font = (Helvetica, 60)) label.pack() add a text entry box for typing in colours e = tkinter.Entry (root) run the startGame function when the enter key is pressed root.bind(, startGame) e.pack() set focus on the entry box e.focus_set() start the GUI root.mainloop() Bước 2: Thay đổi thời gian chơi từ 30s thành 120s Bước 3: Thay đổi số điểm cộng cho mỗi lần đoán đúng là 2, mỗi lần đoán sai là 1. 8. Viết chương trình graphic sử dụng thư viện Tkinter thực hiện: a) Xây dựng form hiển thị thôn tin cá nhân (họ tên, ngày tháng năm sinh, MSSV, ngành học) b) Xây dựng form có nội dung như hình ở dưới, khi bấm vào nút “Click Me” thông tin nút radio button đang lựa chọn sẽ được chỉ ra (tương ứng với các số 1, 2,3) Welcome X First Second Third Click Me 1.5. Câu hỏi kiểm tra 1.6. Giải thích chương trình đã thực hiện. Sử dụng các hàm trong thư viện turtle, tkinter để xây dựng các ứng dụng graphic với python. Tài liệu tham khảo 1. Allen B. Downey, Think Python, OReilly Media, Inc, 2015. 2. https:likegeeks.compythonguiexamplestkintertutorial

BÀI Thực thuật toán phần mềm Flowgorithm 1.1 Mục đích - Str dung phan mém Flowgorithm thiết kế biểu diễn thuật toán; - _ Xây dựng thuật toán cho bai toán cụ thê Flowgorithm 1.2 Cơ sở lý thuyết 1.2.1 Giới thiệu Flowgorithm Flowgorithm ngơn ngữ lập trình dành cho người bắt đầu miễn phí dựa sơ đồ đồ họa đơn giản Thông thường, sinh viên lần học lập trình, họ thường sử dụng ngơn ngữ lập trình dựa văn Tùy thuộc vào ngơn ngữ, điều dễ dàng khó khăn Nhiều ngơn ngữ u cầu bạn viết dịng mã khó hiểu để hiển thị văn "Xin chào, giới!" Bằng cách sử dụng sơ đồ, bạn có thé tập trung vào khái niệm lập trình tất sắc thái ngơn ngữ lập trình thơng thường Bạn chạy chương trình trực tiếp Flowgorithm Một bạn hiểu logic lập trình, bạn dễ dàng học ngơn ngữ Flowgorithm tương tác chuyển đổi sơ đồ bạn sang 18 ngôn ngữ Chúng bao gồm: C #, C ++, Java, JavaScript, Lua, Perl, Python, Ruby, Basic NET va VBA (duoc sử dụng Office) 1.2.2 Đặc tính Flowgorithm - Đầu dễ hiểu - _ Cửa số xem biến đồ họa - _ Tương tác tạo mã thật - _ Phối màu tùy chỉnh - _ Hỗ trợ đa ngôn ngữ -_ 1.2.3 a Hỗ trợ đầy đủ toán tử 20 hàm Các cửa số làm việc với Flowgorithm Giao điện Swift, Visual File Edit Program Tools Help lel | > PU DD | ea | ee 18 4@4@Q3 EEE | ‘secret= random(100) +1 Output "Guess to 100 b Cửa số điều khiển Hinh Main window Phương pháp cổ điển để tương tác với máy tính sử dụng "Báng điều khiển" Thuật tốn lưu lượng cố gắng làm cho trơng giống cửa số nhắn tin tức thời điển hình "Bong bóng trị chuyện" mã hóa màu để khớp với hình đạng Đầu vào Đầu sử dụng sơ đồ Nếu bạn khơng muốn sử dụng bong bóng trị chuyện, bạn chuyển đổi chúng văn túy cổ điển @ @ '[S]>Mi II E ' H 3® + | E J | Entertwo numbers This algorithm will find the greatest common denominator i | Enter the frstrumber | |_Entertne second number ne] | Pie eae arian erento 19 | Hình Console Window c Giao dién ma nguon Trình xem mã nguồn chuyên đổi sơ đồ bạn sang số ngơn ngữ lập trình Q = ~|#-|Q @, [ie|ilZ]] M , : 10 gue3s = 0; 12 System out.println ("Guess to 100"); : —— 15 if „ 20 > secret) { bh] 21 es) (guess tr] 18 as II ME yy oO Hinh Source Code Viewer Window d Giao dién xem cac biến chương trình Cửa số theo dõi biến sử dụng để theo dõi cách biến bạn thay đổi chương trình bạn thực thi Mỗi biến mã hóa màu dựa kiểu liệu Nhìn thống qua, bạn cho biết xác loại liệu lưu trữ - nắm bắt nơi bạn muốn sử dụng loại liệu khác Hình Variable Watch Window 1.3 Thiết bị thực hành thí nghiệm vật tư tiêu hao: 1.3.1 Thiết bị thực hành thí nghiệm Máy tính cài phần mềm Flowgorithm 1.3.2 Vật tư tiêu hao: Khơng 1.4 CAC BUOC TIEN HANH THÍ NGHIỆM 1.4.1 Xây dựng thuật toán hiển thi x4u ky tw voi Flowgorithm BI: Tạo chương trình -_ Khi bắt đầu sơ đồ mới, thấy hai hình chữ nhật tròn gọi "terminals" Những biểu tượng đại diện cho bắt đầu kết thúc chương trình bạn - Nhiều sơ đồ thuật tốn hiển thị văn "Begin" terminal Flowgorithm sir dung van ban "Main" Hầu hết ngơn ngữ lập trình bắt đầu với nỗ lực "Main" Flowgorithm Main ) Hình Bắt đầu kết thúc chương trình B2: Thêm khối chức - Tất thứ sơ đồ thể khối hình Các khối thêm vào terminals Main End - Để thêm hình dang, di chuyén trỏ chuột bạn dòng Nếu có - thé thêm khối, dịng chun sang màu cam Bam dup bấm chuột phải để thêm hình - _ Hiển thi giao diện với khối cần thêm - _ Lựa chọn click vào khối cần thêm chương trình hình Main = | [ Macelaneous | @ Breatpoint Statement | Variables Control Looping i Input/ Output Hình Thêm khối chức cho chương trình Hình Chương trình thêm khối chức B3: Định nghĩa chức cho khối - Click dup chuột vào khối cần định nghĩa chức - Cửa số “Output Properties” xuất hiện, nhập vào chứng theo cú pháp quy định, chương trình sau định nghĩa chức hình (— Mai ) -ÑUU Ƒ AnOutput Stat luates an expression and then Enter an expression below: "Hello, world!" Hinh Dinh nghia chức cho khối thêm vào (\ “TC Main }) Hình Chương trình sau định nghĩa cho khối chức thêm vào B4: Khởi chạy chương trình thiết kế - _ Bấm F5 nút “Run” menu chương trình [S|QQ\P oI EG & © dl Enter Hình 10 Cửa số điều khiển thị kết qua B5: Xem mã nguồn biến sử dụng chương trình sử dụng menu “Tools” cơng cụ Tính diện tích hình trịn File : Edit So Program Tools Help P Pill© |e eee SIQAQHE/E m a Sử dụng Flowgorithm xây dựng chương trình giải tốn KỸ 1.4.2 , Version 2,20.0 Hình 11 Sơ đồ giải thuật tốn tính diện tích hình trịn b Nhập in số lượng chai sử dụng vòng lặp for File Edit Program Tools Help Sa|Pw I | ei 6S @ Q EÖ BHA ‘The if Statement inside the ioop will print the correct re: bottles vs, bottle This version uses a For Loop rather than ‘awhile Loop twill only workin version 17 and later Version 2200 ——— = ror Hình 12 Giải thuật toán nhập in số lượng chai sử dụng vịng lặp while c File Tỉnh diện tích hình trịn sử dụng hàm (chương trình con) Edit Program Tools Help File Sl > bị lÍ BH da: | (eit) Edit Program Tools Help So > di ll B8 Circle (Real Radius), | This function has one parameter called | sees Radius tt acts ike a local variable thats | | assigned when the function is called The following will call the Circle function | using the value the user entered weed aaaaAaa Notice that this variable is called x while { the function uses ‘Radius’ The value of > is passed to the function Na v2 pcg | This function retums the contents ofthe | ‘Area variable Ị — Retum Real Area Hình 13 Sử dụng hàm cho giải thuật tính diện tích hình trịn eg d Viét chương trình nhập cạnh chiều cao tương ứng tam giác in hình diện tích tam giác e Xây dựng thuật tốn kiểm tra tính nguyên tổ (một số nguyên dương n số nguyên tơ có hai ước nó) Gợi ý: Bước l1: nhâp số nguyên dương n; Bước 2: n=l thông báo “n khong la so nguyen to”, kết thúc; Bước 3: nn2: ("enter n2 value")) print ("nl is big") print("n2 is big") else: Viét chương trình nhập hai điểm tính khoảng cách import math; xl=int (input ("Enter xl ->")) yl=int (input ("Enter yl ->")) x2=int (input ("Enter x2 ->")) y2=int (input ("Enter y2 ->")) dl = (x2 d2 = res print (y2 = - x1) - yl) * (x2 * - (y2 x1); - yl); math.sqrt(dl+d2) ("Distance between two points:",res); Viết chương trình nhập vào số kiểm tra số 1a chin hay lẻ, in thơng báo hình n=int(input("Enter ifn %2 a number >")) == print ("EVEN print ("ODD Number"); else: Number"); Viét chuong trinh in man hinh sé nghich dao va két đạng thập phân dãy số tự nhiên khoảng (a,b) i=1; for j in range(2,10): print("i:",i,"j:",4) print(i,"/",3) print (1/3); Viết chương trình nhập vào số tự nhiên n > 0, in hình số tự nhiên giảm dần từ n đến 0, ký tự in hang n = int(input("Enter while n >=0: print (n); n=n1; A Number ->")); Viét chương trình tìm tất số chia hết cho bội số 5, nằm đoạn 2000 3200 (tính 2000 3200) Các số thu in thành chuỗi dòng, cách dấu phây Goi y: e Sw dung range(#begin, #end) Code mau: 3=[] for i if print in range(2000, (i%7==0) and 3201): (i%5!=0): j.append (str (i) (',"'.join(j)) Với số nguyên n định, viết chương trình dé tạo dictionary chứa (i, i*i) nhu số nguyên từ I đến n (bao gồm n) sau in dictionary Ví dụ: Giả sử số n đầu là: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64} Goi y: « _ Viết lệnh yêu cầu nhập số nguyên n Code mẫu: n=int (input ("Nhập d=dict () for print i in vào số: ")) range(1,nt1): đ[i]=i*i (d) Viét chương trình in man hình dãy số Fibonacci nhỏ 4.000.000, tìm tổng số chan dãy in 10 Xây dựng hàm “bubbleSort (nlist) ” (giải thuật xếp bọt) dudi dang module Viết chương trình nhập zs¿ n phần tử từ bàn phím xếp Sample Data: [14,46,43,27,57,41,45,21,70] Expected Bắt đầu hàm loop for Result: [14, 21, 27, 41, 43, 45, 46, 57, 70] bubbleSort( = : mảng thực hiện: i = tới loop-l swapped false j = /* if kết /*Néu phần /* tráo đổi chúng thúc thúc phần tử ) tử list[j+1] cạnh */ then */ list[j+1] if không cần mảng tráo swapped) thúc then i£ for hàm hién: for break thúc > swap( list[j], swapped = true thuc sánh 1f(not kết loop-1 so thúc tức tdi list[j] kết kết list.count; for Kết 1ist return 1ist Flowchart: def bubbleSort(nlist: for passnum in tange(len(nlist)-1,0,-1 End temp = niistfi] alist] = nlisti+1] nlistf-+1] = temp đổi phần xếp tử Thốt khỏi vịng lặp.*/ 11 Viết chương trình sử dụng thư viện NumPy để tạo mảng có cấu trúc từ tên sinh viên, chiều cao, lớp kiểu đữ liệu họ Bây xếp theo lớp, sau chiều cao lớp Dữ liệu đầu vào: [(James', 5, 48.5 ) ('Nail', 6, 52.5 ) (Paul', 5, 42.1 ) (Pit, 5, 40.11)] Kết xếp: [(Pit, 5, 40.11) (Paul', 5, 42.1 ) (James', 5, 48.5 ) (Nail', 6, 52.5 )] 12 Viết chương trình sử dụng thư viện NumPy đề xếp ¡d sinh viên với chiều cao tăng dần sinh viên từ ¡đ sinh viên chiều cao cho In số nguyên mô tả thứ tự xếp theo nhiều cột đữ liệu xếp (sử dụng hàm lexsort()) Dữ liệu đầu vảo: student_id = [1023, 5202, 6230, 1671, 1682, 5241, 4532] student_height = [40., 42., 45., 41., 38., 40., 42.0] Kêt qua: Chỉ số: [405361 2] Dữ liệu xếp: 1.5 1682 38.0 1023 40.0 5241 40.0 1671 41.0 4532 42.0 5202 42.0 6230 45.0 Câu hồi kiểm tra Giải thích chương trình viết Tạo sử dụng module python Các thuật tốn xếp, tìm kiếm 1.6 Thư viện numpy Tài liệu tham khảo Allen B Downey, Think Python, O'Reilly Media, Inc, 2015 Bài 6: Lập trình hướng đối tượng Python 1.1 Mục đích Giúp sinh viên nắm bắt lập trình hướng đối tượng lập trình python 1.2 Cơ sở lý thuyết Xem quy tắc xây dựng class, phương thức thuộc tính đối tượng 1.3 Thiết bị thực hành thí nghiệm vật tư tiêu hao Thiết bị thực hành thí nghiệm: Máy tính Vật tư tiêu hao: Khơng 1.4 Các bước tiến hành Thực tập sau sử dụng python Định nghĩa class có tên Circle xây dựng từ bán kính Circle có method tính diện tích Goi y: Str dung def methodName(self) dé dinh nghia method class Circle(object): def sinit (self, self.radius = xr): r ##ttttttiiHttttttlttlttttittilttttititt Wel amea (self) : return self.radius**2*3.14 aCircle = Circle(2) print (aCircle.area()) Định nghĩa class có tên #nhchunhat xây dựng chiều dài chiều rộng Class Hinhchunhat có method để tính diện tích Dinh nghia class Nguoi class nó: Nam, Nu Tat ca cac method "getGender" có thé in "Nam" cho class Nam va "Nit" cho class Nu class def Nguoi (object): getGender( return class self ): "Unknown" Nam( Nguoi ): def getGender( self ): return "Nam" # Code by Quantrimang.com class Nu( Nguoi ): def getGender( return aNam = aNu= Nu() print print self ): "Nt" Nam() (aNam.getGender () (aNu.getGender () ) class có Viét chuong trình Python dạng class để chuyên đổi số La Mã thành số nguyên Flowchart: ian oa : foman_to_int t 'MMMCMLXXXVI print(py_solution().roman_to_int(MMMM}) 1° 60, '©° 100, Đ 800, M: 1000} int_val=— solutian(.rornan_to_int(C rint(py_ ==fer ¡ in range(len(s) End for ¡ >0 and rom_val[s[Ï]] > rom_val[s{i - 1]] Ye: il + om vai- - 2” rom_val[s[i Viết chương trình Python đưới dạng class để đảo ngược chuỗi từ chữ Dữ liệu vào : 'hello py' Đầu : ‘py hello’ Flowchart: print(py_solution() feverse_words(hello def reverse_words(self, s) py) † return | Keng ‘joi d © Viết class Python có hai phương thức get String print String get String chấp nhận chuỗi từ người dùng va print_String in chuỗi chữ in hoa 4G Lg ie a strl.get_! i ~ str1.print Strin [ self ae = Bo» [ self zie input0 | oo [print(self n fb upper0) | Viét mét class Python có tên Cirele xây dựng theo bán kính hai phương thức tính diện tích chu vi hình trịn § Chương trình ATM đơn giản class Bank: Account _type = "Savings" location = "Guntur" def init (self, name, Account_Number, balance) : self.name = name self.Account_Number = Account_Number self balance=balance self.Account_type=Bank.Account_type self.location=Bank.location def repr (self): print XE ("Welcome to the SBI ATM Machine ") enter your (”

Ngày đăng: 23/06/2023, 21:11

Tài liệu cùng người dùng

Tài liệu liên quan