Integrated Exercises IV
(総合演習 IV)
Computing Practice I
15th lecture, July 19, 2018
http://www.sw.it.aoyama.ac.jp/2018/CP1/lecture15.html
Martin J. Dürst
© 2005-18 Martin
J. Dürst 青山学院大学
Today's Schedule
- Remaining Schedule
- About last week's exercises
- About Ruby
- Labowork/Programming contest
- Summary of course
- Today's exercises
テストなし、ログイン不要
ログインした学生は授業開始前にサインオフすること
Remaining Schedule
- July 20: Integrated exercises IV
- July 27, 14:50-16:15:
Term final exam (85 minutes)
Results of Previous Exercises
|
1401 |
1402 |
1403 |
1404 |
100 points |
46 |
1 |
1 |
0 |
60 points |
43 |
22 |
48 |
3 |
errors |
5 |
12 |
19 |
8 |
not submitted |
6 |
65 |
32 |
89 |
Total of problems solved: 4 problems: 3 students, 3 problems: 7 students, 2
problems: 49 students, 1 problem: 32 students, 0 problems: 9 students
Beware of Rolling Pin Programming
Relationship between program length and ease of change
Length of program for automatic vending machine:
Longest: 8541 bytes
Shortest: 2194 bytes
Don't Mix Abstractions
What's wrong with the following?
typedef struct {
int remaining_stock;
char drink[15];
int price;
int money;
} Stock;
Stock stock[5] = {
{0, "Cola", 110, 1000},
{10, "Milk tea", 140, 500},
{10, "Coffee", 210, 100},
{10, "Tomato juice", 190, 50},
{10, "Shimijimi", 120, 10},
};
Use of Functions
Handout: 1403variant.c
Design strategy:
- Use functions to abstract money handling
- No per-denomination loops in main program
- Objectify purse/wallet (preparation for C++)
Word Statistics (Problem 1404)
The example solution has 95 lines
The same program in Ruby is just 15
lines!
Ruby について
- 1993年からまつもとゆきひろ (松本行弘、Matz)
が開発開始
- 2000年から欧米でも人気
- 2004年から Ruby on Rails (Web
Application Framework) で更に注目
- 特徴:
簡単で強力な概念、短い記述、手軽な実行、入り口が広い、奥が深い
- Dürst 研究室で Ruby 本体の実装に貢献
(文字コード変換など)
夏休みに勉強したい皆さんのため
- 「協議プログラミング」サイト (例):
- C についての本 (例):
- プログラミング言語 C, B.W. カーニハン/D.M.
リッチー, 共立出版
- Learn C the Hard Way, Zed A. Shaw, Addison-Wesley
- 21st Century C, Ben Klemens, O'Reilly
- ポインタが理解できない理由, 朝井 淳,
技術評論社
- オープンソースのプログラムの勉強 (例: github)
- 他のプログラミング言語の勉強
- Dürst 研究室に書籍が多くて、借り出し可能
後期のラボワークのアイディア:
- プログラミングコンテストのための練習
- Ruby の体験
- Web アプリの体験 (Ruby on Rails)
- ソーシャルメディア分析 (莊司先生)
Summary of this Course
- C is the bridge between software and hardware
- C has influenced a large number of programming languages
- Develop in small steps using tests
- Readability (intent, variable/function names,...) is important
- Rolling pin programming ⇒ DRY; program ⇒ data
Check how much you learned in the last 4 months!
Future Courses
- Fall of 2nd year: Data Structures and Algorithms
(データ構造とアルゴリズム)
- Spring of 3rd year: Language Theory and Compilers
(言語理論とコンパイラ)
- Spring of 3rd year: Seminar I (topic: programming/Ruby)
- Fall of 3rd year: Seminar II (topic: Web technology)
- 4th year: Graduate research (卒業研究)
応用課題演習 IV について
最低一問を授業中に完成、もう一問を宿題として完成
締切は7月22日 (日曜日); 質問の締切は 7月22日の14:00
問題は世界学生プログラミング選手権 (又は予選) から
- 1501: 正方形の配置
- 1502: 船にコンテナを積む
- 1503: Fibonacci Words
- 1504: 整数の集合の数
全ての問題に部分点
説明された入力以外の入力 (エラーなど)
への対応が不要
入力例は複数あるが、プログラム実行ごと一個のみ
Hints をよく読んで、紙上で計画を検討
プログラムが比較的短いが、発想が必要
これからの作業
- 足りない演習問題を完成し、提出
- 復習、期末試験の準備
Q&A フォーラムでも質問歓迎 (7月24日 (火) まで)