Cứu với, các pro ơi giúp em làm bài tập lập trình căn bản này với

Chào cả nhà! Em đang SOS cực mạnh đây Các bác nào giỏi tiếng Đức thì chịu khó Google Translate giúp em với, em không biết tiếng Đức nên dịch không ra gì hết. Cảm ơn các bác nhiều lắm luôn ạaaaaa ✨

Đây là bài tập môn Lập trình 1 - học kỳ mùa đông 2016/17 của giáo sư Dr. Michael Rohs và thầy Oliver Beren Kaul, M.Sc. nè!

Lưu ý quan trọng nha mọi người:

Tất cả các bài tập (trừ bài đầu tiên) phải làm theo nhóm 2 người. Cả hai thành viên phải nộp bài riêng lẻ nhưng phải ghi tên cả hai người trong bài nộp nhé. Nếu làm Bài tập 1 mà chưa có bạn cùng nhóm thì nộp một mình trước, rồi tận dụng buổi tutorium đầu tiên để tìm partner với sự giúp đỡ của tutor nha.

⚠️ Cẩn thận: Đạo văn = out khỏi môn học luôn đó!

Deadline: Thứ Năm ngày 27.10 lúc 23:59 nộp qua trang https://assignments.hci.uni-hannover.de



Bài nộp phải là 1 file zip duy nhất, bao gồm source code, file pdf cho các câu tự luận và tất cả file cần thiết khác (ví dụ: dữ liệu đầu vào hoặc Makefiles). Nhớ xử lý các ký tự đặc biệt trong tên file nhé các bạn!

---

Bài tập 1: Thuật toán

Cho một dãy số và thuật toán bằng ngôn ngữ tự nhiên như sau:

1. Chọn số đầu tiên trong dãy
2. So sánh với số tiếp theo
3. Nếu số hiện tại lớn hơn số tiếp theo:
a. Thì đổi chỗ hai số và tiếp tục với số đầu tiên trong dãy
b. Nếu không thì tiếp tục với số tiếp theo
4. Làm như vậy cho đến khi đến cuối dãy số



Câu a) Mô tả xem thuật toán này làm gì. Cho dãy số: 11, 5, 1. Áp dụng thuật toán lên dãy số này và thực hiện "Schreibtischtest" (test trên giấy) bằng cách ghi lại từng bước trong bảng:

| Bước | Trạng thái trước bước | Bước thuật toán |
|------|----------------------|-----------------|
| 1 | 11, 5, 1 | Chọn 11 |
| ... | ... | ... |

Câu b) Thuật toán này có hoạt động đúng với mọi dãy số không? Giải thích tại sao nhé.

---

Bài tập 2: Giá trị, Biến, Phép gán

Câu a) Phân biệt khái niệm Giá trị (Wert) và Biến (Variable).

Câu b) Định nghĩa khái niệm Phép gán (Zuweisung). Đưa ra một ví dụ minh họa.

---

Bài tập 3: Tài liệu học

Tại http://hci.uni-hannover.de/files/prog1script/script.html có tài liệu mô tả phương pháp tiếp cận giải quyết bài tập lập trình được giới thiệu trong bài giảng.



Câu a) Đọc Chương 1 (Introduction) và trả lời câu hỏi: Tại sao trong phương pháp này người ta lại tạo các ví dụ về input và output mong đợi trước khi implement code?

Câu b) Đọc Chương 2 (Recipe for Atomic Data) và trả lời: Tại sao nên định nghĩa các hằng số (ví dụ: WEEKLY_HOURS) thay vì viết trực tiếp giá trị vào trong chương trình?

Câu c) Điều gì khiến bạn thắc mắc khi đọc Chương 1 và 2? Nếu không có gì khó hiểu thì khía cạnh nào bạn thấy thú vị nhất?

---

Bài tập 4: Cài đặt C-Compiler

Bài này để chuẩn bị cho các bài tập C từ tuần sau nha. Cài đặt GCC-Compiler và một text editor (tốt nhất là có syntax highlighting) trên máy của bạn. Hướng dẫn cài đặt chi tiết cho Windows, OS X và Linux có trong slide bài tập đó.



Test cài đặt:

Gõ lệnh gcc –v trên command line. Copy kết quả vào bài nộp của bạn nhé.

Ngoài ra test thêm với chương trình này:

```c
include <stdio.h>

int main(void) {
printf("hello, world
");
return 0;
}
```

Các bước thực hiện:

1. Lưu chương trình dạng text file với tên hello.c
2. Mở command line và chuyển đến thư mục chứa hello.c:
cd /Pfad/zu/meinem/Verzeichnis (Linux/Mac)
cd C:\Pfad\zu\meinem\Verzeichnis (Windows)
3. Compile chương trình:
gcc hello.c –o hello (Linux/Mac)
gcc hello.c –o hello.exe (Windows)
4. Chạy chương trình:
./hello (Linux/Mac)
hello.exe (Windows)

Kết quả phải ra: hello, world

---

Nguồn: tinhte.vn
 
Back
Top