プログラミング論i · 2014-10-01 · – 大統領選挙の候補者は2名である. –...

57
プログラミング論I 担当 小橋(情報システムコース)

Upload: others

Post on 20-May-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

プログラミング論I

担当

小橋(情報システムコース)

Page 2: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

講義担当者

• 小橋昌司 – 情報システムコース所属 – [email protected] – http://www.eng.u-hyogo.ac.jp/eecs/kobashi/index-j.html

• 他担当科目 – プログラミング演習(1年後期) – 電気系工学実験II(3年生通年)

• 研究内容 – 医用画像処理

プログラミング論Ⅰ 2 兵庫県立大学

Artificial Hip Joint

これまでの研究成果Brain Cerebral Aneurysm

12

3

Lung Lobe

LiverS

IR L

Foot Bone

膵管

Meniscus(半月板)

A

PL

R

Brain Function

Artificial Knee Joint

Page 3: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

講義の達成目標

• プログラミングの考え方(アルゴリズム)を理解

• アルゴリズムを実現するC言語文法の基礎

プログラミング論Ⅰ 3

Page 4: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

講義の進め方

• プログラミング演習と連携して行います.

• 授業中にQuizを出します. Quiz中は周囲の人との相談,教員,TAへの相談を積極的に行ってください.

プログラミング論Ⅰ 4

Page 5: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

• 授業スライド – Webページに掲載するので,各自印刷して持参すること

http://www.eng.u-hyogo.ac.jp/eecs/kobashi/study/ProgrammingI

• テスト – 理解度テスト – 期末テスト

• 成績評価 – テストの点数(理解度テストおよび期末テスト)のみ

• 出席 – 授業開始10分までにパソコンにログインしておくこと – 自動的に出席を取ります

オリエンテーション

5 プログラミング論Ⅰ

Page 6: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

• 時間: 毎週水曜日3時限(13:00から14:30) • 場所 6号館3階6313室 • 内容

– C言語が苦手な人へ • 講義内容の補足説明 • 簡単な練習用Q&A • 試験対策

– C言語が得意な人へ • より発展的な内容の説明 • 実プログラムの問題提示 • 実プログラミングのアドバイス

6 プログラミング論Ⅰ

オフィスアワー

Page 7: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

プログラミングって?

• Wikiより – 「コンピュータプログラムを作成すること」 – 「コンピュータプログラム」とは「コンピュータの分野におけるプログラム(コンピュータプログラム、英:computer programs、ソフトウェアプログラム、英:software programs)とは、コンピュータに対する命令(処理)を記述したものである [1] 。」

• JIS規格 – 問題を解決する方法およびその手順(アルゴリズム)を,コンピュータが理解できる言語で記述すること プログラミング論Ⅰ 7

Page 8: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

何に使われる

• ゲーム開発,ソフトウェア開発 • Webアプリ,携帯アプリ(android, iOS, etc) • 組込みプログラミング.マイコン電子機器に内蔵されたMPU(microprocessor unit)用のプログラミング.

• 電子回路(LSI)設計.

非常に多くの場所で使われおり, プログラミングが必要でない分野は 考えられない プログラミング論Ⅰ 8

Page 9: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

組み込みプログラミング

PSoC

プログラミング論Ⅰ 9

Page 10: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

電子回路設計

FPGAボード

プログラミング論Ⅰ 10

Page 11: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

プログラミングに必要なもの

1. プログラミング言語 2. アルゴリズム 3. アルゴリズムを作成する基礎学力

プログラミング論Ⅰ 11

Page 12: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

プログラミングに必要なこと ① プログラミング言語

• C, C++ • JAVA • VBA • Fortran • HDL(ハードウェア記述言語)など

プログラミング論Ⅰ 12

Page 13: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

本学でのプログラミング関連授業 ~電子情報電気工学科情報システムコースの場合~ • 1年生

– 前期: 情報科学 – 後期: プログラミング論I,

プログラミング演習 • 2年生

– 前期: プログラミング論II, コンピュータ実習A

– 後期: コンピュータ実習B • 3年生

– 前期: アルゴリズム, コンピュータ実習C, 電気系工学実験C

– 後期: コンピュータ実習D, 電気系工学実験D

• 4年生 – 卒業研究

• 大学院(修士・博士) – 修士研究 – 博士研究

• その他

– プロコンサークル

「問題を解く力」を養成する科目は,数学,電気電子回路,電磁気,情報理論,などすべての科目

プログラミング論Ⅰ 13

Page 14: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

電気系工学実験CD(3年生) ~psocプログラミング~

• 指定されたコースをより短時間で走行する 自律走行ロボットカーを作成

• 規則 – psoc(組込みマイコン)を使う – 予算(3,000円以下) – スタート後は接触,リモコン等の禁止,等

• 評価 – 走行時間 – 作成コンセプトの面白さ (プレゼンテーションで評価)

プログラミング論Ⅰ 14

Page 15: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

オリエンテーション・準備

プログラミング論Ⅰ 15

Page 16: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

走行前の最終調整

プログラミング論Ⅰ 16

Page 17: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

走行風景(動画)

プログラミング論Ⅰ 17

Page 18: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

最優秀者の表彰式

プログラミング論Ⅰ 18

Page 19: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

計算機実習(3年生)

• プログラミング言語(C,C++,JAVA等任意)

を使って,自由にアプリケーションを企画,作成.

学生の作成アプリの一例 (自炊のために,カメラで撮影した画像から,本の部分のみを自動切り出しするソフト)

プログラミング論Ⅰ 19

Page 20: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

ACMプログラミングコンテスト

• 国内予選(2013年7月12日) (結果) 通過 !!

• アジア地区予選(2013年11月23-24日@会津大学)

• 世界大会(2014年6月3-4日@インド)

インターネット予選(学内)の風景 プログラミング論Ⅰ 20

Page 21: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

2013年国内予選問題の一部 • デモクラティア共和国の大統領は,以下のような複数段階の選挙により

選ばれる. – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

なる.有権者が投票するのはこの第1段階だけである. – 第k段階 (k > 1) の選挙区は,複数の第k − 1段階の選挙区を含む.一方,第k − 1段階の各選挙区は,ちょうど一

つの第k段階の選挙区に含まれる.そして,第k段階の選挙区の勝者は,この選挙区に含まれる第k − 1段階の選挙区のうち過半数で勝った候補者である.

– 最終段階の選挙区は全国区であり一つしかない.ここでの勝者が大統領に選ばれる.

• この国の大統領選挙では,以下の仮定が成り立つ. – すべての有権者が,それぞれ一票を投じる. – 第1段階の各選挙区の有権者数は奇数である. – 第k段階 (k >1) の各選挙区に含まれる第k − 1段階の選挙区の数も奇数である. – したがって,すべての段階のすべての選挙区で,必ずどちらかの候補が勝つ (引き分けはない).

• あなたの仕事は,なるべく少ない得票数で大統領選挙に勝つ方法を求めるプログラムを作成することである. たとえば,最終段階の選挙区がちょうど三つの第1段階の選挙区を含んでおり,これらの第1段階の選挙区の有権者数がそれぞれ123名,4567名,89名だったとする. この場合,最初の選挙区で62票,3番目の選挙区で45票の計107票を獲得するのが,最も少ない得票数で勝つ方法になる. プログラミング論Ⅰ 21

Page 22: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

研究 • 卒業研究

– 4年生の1年間で,指導教員の指導の下,学術研究を実施し,その研究成果を年度末に口頭発表し,卒業論文を提出する

• 大学院研究 – 修士2年間で,・・・以下同文 – 積極的に国内外学会で発表

学生の発表風景 WCCI@バルセロナ,2010

プログラミング論Ⅰ 22

Page 23: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

研究の例 ~卒業研究,修士論文の題目より抜粋~

• 断層画像データからの3次元モデル再構築

• オートマトンモデルによる非同期論理素子回路の構築

• ホップフィールドニューラルネットワークによる想起

• 外来患者待ち時間予測システム • 強化学習を用いた戦略決定 • サポートベクタマシンを用いたにおい識

別 • ファジィ理論による歩行レベル推定法 • 超音波装置を用いた筋肉厚さ測定 • ファジィ医用画像処理 • ぜんそく発作数の地域別要因分析と予測 • 計算機シミュレーションによるラマン分光

• PSoCを用いた生体情報モニタリングシス

テム • 身体活動モニタリングシステムの低消費

電力化 • 無線LANを用いた屋内位置推定 • 自立移動ロボットの自己推定と障害物回

避 • 3次元断層顕微鏡による局面画像再生 • ホログラフィック顕微鏡を用いた生体試料

観察 • Web検索での網羅度を用いた未閲覧情

報の表示 • 看護ケアテキスト評価支援 • 方程式誤差法による音源方向推定 • パンの画像識別

情報システムコースの多くの研究テーマはプログラミングが基本技術 プログラミング論Ⅰ 23

Page 24: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

第1回

プログラムとフローチャート

Page 25: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

プログラミング論Ⅰ 25

Agenda

• アルゴリズムとは

• フローチャート – 部品 – 記述方法

Page 26: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

プログラミング論Ⅰ 26

アルゴリズムとは

• JIS規格:「問題を解くためのものであって、 明確に定義され、順序付けられた有限個の 規則からなる集合」

Page 27: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

Quiz 1-1: アルゴリズム

プログラミング論Ⅰ 27

• [問題] 金額73円を,この金額を50円硬貨,10円硬貨,5円硬貨,1円硬貨で出すとき,それぞれの枚数を求めよ.ただし,全体の硬貨枚数を最小になるように,各硬貨の枚数を求めなければならない.

Page 28: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

Answer 1-1: アルゴリズム

プログラミング論Ⅰ 28

• 50円玉 1枚 • 10円玉 2枚 • 5円玉 0枚 • 1円玉 3枚

Page 29: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

Answer 1-1: アルゴリズム

プログラミング論Ⅰ 29

1. 73÷50=1 余り 23 50円硬貨 1枚 2. 23÷10=2 余り 3 10円硬貨 2枚 3. 3÷ 5=0 余り 3 5円硬貨 0枚 4. 3÷ 1=3 余り 0 1円硬貨 3枚

Page 30: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

Quiz 1-2: アルゴリズム

プログラミング論Ⅰ 30

• [問題] 金額Y円を,この金額を50円硬貨,

10円硬貨,5円硬貨,1円硬貨で出すとき,それぞれの枚数を求めよ.ただし,全体の硬貨枚数を最小になるように,各硬貨の枚数を求めなければならない.

Page 31: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

Answer 1-2: アルゴリズム

プログラミング論Ⅰ 31

1. Y÷50=C50 余り X 50円硬貨 C50枚 2. X÷10=C10 余り X 10円硬貨 C10枚 3. X÷ 5=C5 余り X 5円硬貨 C5枚 4. X 1円硬貨 C1枚

Page 32: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

Answer 1-2: アルゴリズム 1. Y÷50=C50 余り X

50円硬貨 C50枚

2. X÷10=C10 余り X 10円硬貨 C10枚

3. X÷ 5=C5 余り C1 5円硬貨 C5枚

1. Y÷50の商C50を求める 2. 1の余りをXに代入する

3. X÷10の商C10を求める 4. 3の余りをXに代入する

5. X÷ 5の商C5を求める 6. 5の余りをC1に代入する

プログラミング論Ⅰ 32

すべての計算手順を明らかにする 値はすべて変数に代入する

Page 33: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

C言語プログラミング アルゴリズム 1. Y÷50の商C50を求める 2. 1の余りをXに代入する 3. X÷10の商C10を求める 4. 3の余りをXに代入する 5. X÷ 5の商C5を求める 6. 5の余りをC1に代入する

C言語 #include <stdio.h> int main() {

int X, Y, C1, C5, C10, C50; Y=73; C50 = Y / 50; X = Y % 50; C10 = X / 10; X = C10 % 10; C5 = X / 5; C1 = X % 5; printf(“%d, %d, %d, %d¥n”, C50, C10, C5, C1); return 0;

} プログラミング論Ⅰ 33

Page 34: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

プログラミング論Ⅰ 34

アルゴリズムを記述する方法

• フローチャート • NSチャート • PAD

Page 35: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

プログラミング論Ⅰ 35

アルゴリズムの例

• 問題「3値(a,b,c)の最大値(max)を求める」

• 自然言語による記述(これが重要) 1.maxにaを代入 2.bの値がmaxより大きいとき、maxにbを代入 3.cの値がmaxより大きいとき、maxにcを代入

Page 36: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

プログラミング論Ⅰ 36

フローチャートの例 • 問題「3値(a,b,c)の最大値

(max)を求める」

• 自然言語による記述 1.maxにaを代入 2.bの値がmaxより大きいとき、maxにbを代入

3.cの値がmaxより大きいとき、maxにcを代入

開始

max=a

b>max

max=b

c>max

max=c

終了

yes

yes

No

No

Page 37: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

プログラミング論Ⅰ 37

主な部品1

• 端子(開始、終了など)

• 処理(数値計算など)

• 判断(2つ以上の条件分岐)

• 入出力(データ)

• 手作業入力

処理

端子

判断

データ

手作業入力

JIS規格より抜粋

Page 38: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

プログラミング論Ⅰ 38

主な部品2

• ループ端

• 表示(画面への表示など)

• 結合子(他の場所へつなげる)

• 流れ線

ループ端(開始)

ループ端(終了)

Page 39: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

プログラミング論Ⅰ 39

主な書き方1

• 上から下へ流れる

処理1

開始

処理2

終了

Page 40: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

Quiz 1-3: アルゴリズム

プログラミング論Ⅰ 40

• 以下を行うフローチャートを示せ. • 金額Y円を,この金額を50円硬貨,10円硬

貨,5円硬貨,1円硬貨で出すとき,それぞれの枚数を求めよ.ただし,全体の硬貨枚数を最小になるように,各硬貨の枚数を求めなければならない. – ただし,X÷Yの商Zは, Z = X / Y

X÷Yの余りZは, Z = X % Y で求められるとする

Page 41: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

Answer 1-3: アルゴリズム

プログラミング論Ⅰ 41

C50 = Y / 50

開始

終了

1. Y÷50の商C50を求める 2. 1の余りをXに代入する

3. X÷10の商C10を求める 4. 3の余りをXに代入する

5. X÷ 5の商C5を求める 6. 5の余りをC1に代入する

X = Y % 50

C10 = X / 10

X = X % 10

C5= X / 5

C1 = X % 5

1

2

3

4

5

6

Page 42: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

プログラミング論Ⅰ 42

主な書き方2

• 分岐がある場合 開始

処理2

終了

判断

処理1

yes

no

Page 43: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

プログラミング論Ⅰ 43

主な書き方3

• 複数分岐 開始

処理4

終了

判断

処理3 処理1 処理2

1 2 それ以外

Page 44: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

プログラミング論Ⅰ 44

主な書き方4

• 繰り返し 開始

終了

処理1

ループ端 条件

ループ端(終了)

Page 45: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

プログラミング論Ⅰ 45

Quiz 1-4: フローチャート記述

• 1から10までの整数の合計(sum)を計算するアルゴリズムを自然言語による記述で示せ.

Page 46: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

プログラミング論Ⅰ 46

Answer 1-4: フローチャート記述

• 自然言語による記述 1. sumに0を代入 2. iに1を代入する 3. iが10より大きいとき終了する 4. sumにsumとiの和を代入する 5. iにiと1の和を代入する 6. 3に戻る

Page 47: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

プログラミング論Ⅰ 47

Quiz 1-5: フローチャート記述

• Quiz1-4(以下)のフローチャートをループを用いずに示せ.

• 1から10までの整数の合計(sum)を計算するアルゴリズムを自然言語による記述で示せ.

Page 48: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

プログラミング論Ⅰ 48

Answer 1-5: フローチャート記述 開始

終了

sum=0

i=1

i ≤10

sum=sum+i

i=i+1

yes

no

自然言語による記述 1. sumに0を代入 2. iに1を代入する 3. iが10より大きいと

き終了する 4. sumにsumとiの

和を代入する 5. iにiと1の和を代入

する 6. 3に戻る

Page 49: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

プログラミング論Ⅰ 49

Quiz 1-6: フローチャート記述

• Quiz1-4(以下)のフローチャートをループを用いて示せ.

• 1から10までの整数の合計(sum)を計算するアルゴリズムを自然言語による記述で示せ.

Page 50: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

プログラミング論Ⅰ 50

Answer 1-6: フローチャート記述 開始

終了

sum=0

i=1

sum=sum+i

i=i+1

ループ1 i ≤10

ループ1

自然言語による記述 1. sumに0を代入 2. iに1を代入する 3. iが10以下の時

ループ1を繰り返す 4. sumにsumとiの和

を代入する 5. iにiと1の和を代入

する

自然言語による記述 1. sumに0を代入 2. iに1を代入する 3. iが10より大きいと

き終了する 4. sumにsumとiの

和を代入する 5. iにiと1の和を代入

する 6. 3に戻る

Page 51: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

#include <stdio.h> main() { printf("hello world¥n"); return 0; }

C言語プログラムの構造

プログラミング論Ⅰ 51

必ず覚える 注意 1.括弧() 2.セミコロン(;)

← 実行文 この箇所に任意の プログラムを記述する

Page 52: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

• アルゴリズムでは,値を必ず変数に代入する

• C言語における変数について – 変数は使用前に必ず定義が必要 – 値の違い(整数,小数など)により定義方法が異なる

変数

プログラミング論Ⅰ 52

Page 53: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

変数の定義

• 整数(integer)の場合

int a; char a;

• 小数(float)の場合

float a;

プログラミング論Ⅰ 53

変数の種類 変数名

文の最後

変数の種類

変数名

文の最後

違い:格納可能な値の範囲が異なる int は -231 から +231-1 charは 0 から 255

Page 54: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

• 変数の定義 int a, b;

• 数値の代入

a = 5;

• 数値の計算 b = a / 5;

変数への代入

プログラミング論Ⅰ 54

複数の変数を一度に定義できる 変数を , で区切る

各命令の最後は必ず ;

割り算は / と記述

Page 55: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

Quiz 3-1: 初めてのプログラミング

プログラミング論Ⅰ 55

• 3つの変数x, y, zを定義し,xに5を代入,yに10を代入し,zにxとyの和を代入するプログラムを作成せよ.

Page 56: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

#include <stdio.h> main() { int x, y, z; x = 5; y = 10; z = x + y; return 0; }

プログラミング論Ⅰ 56

Answer 3-1: 初めてのプログラミング

• 3つの変数x, y, zを定義し,xに5を代入,yに10を代入し,zにxとyの和を代入するプログラムを作成せよ.

Page 57: プログラミング論I · 2014-10-01 · – 大統領選挙の候補者は2名である. – 第1段階の選挙では,有権者は選挙区ごとに投票する.有権者の過半数の票を得た候補者がその選挙区の勝者と

プログラミング演習受講者への アナウンス

• クラス分けとWebサイトのURLについては掲示

• Webサイトで公開している資料については熟読してきていることを前提に実習を行う

• 不明な点があれば実習の際に質問の時間を設けるのでその際に質問を受け付ける

プログラミング論Ⅰ 57