プログラミング入門2 第4回 式文 代入式 論理演算子 ループの脱出、スキップ 情報工学科 篠埜 功.

Slides:



Advertisements
Similar presentations
SPSSによるHosmer-Lemeshow検定について
Advertisements

レポート書き方. おしいレポート よく調べてある それぞれの、1文の言っていることは正 しい しかし、全体として、何が言いた いのかわからない 内容の重要だが、全体の構成も重 要である.
7.n次の行列式   一般的な(n次の)行列式の定義には、数学的な概念がいろいろ必要である。まずそれらを順に見ていく。
第 3 回 iPhone アプリ開発勉強会 Objective-C 基礎講座 - インスタンスメソッド - 三井 相和.
9.線形写像.
3.多項式計算アルゴリズム べき乗の計算 多項式の計算.
時間的に変化する信号. 普通の正弦波 は豊富な情報を含んでいません これだけではラジオのような複雑な情報 を送れない 振幅 a あるいは角速度 ω を時間的に変化 させて情報を送る.
情報処理A 第10回 Excelの使い方 その3.
麻雀ゲーム 和島研究室 ソ 小林巧人
5.連立一次方程式.
相関.
―本日の講義― ・平均と分散 -代表値 -ぱらつき(分散・標準偏差等) ・Excelによる演習
論理回路 第2回 今日の内容 前回の課題の説明 数の体系 – 数の表現 – 代表的な数 – 基数の変換 – 補数.
広告付き価格サービ ス 小園一正. はじめに 世の中には様々な表現方法の広告があり ます。その中でも私たち学生にとって身 近にあるものを広告媒体として取り入れ られている。 価格サービス(無料配布のルーズリー フ)を体験したことにより興味を惹かれ るきっかけとなった。主な目的は、これ.
素数判定法 2011/6/20.
1章 行列と行列式.
プログラミングⅠ( 1 組) 第 9 回
フーリエ級数. 一般的な波はこのように表せる a,b をフーリエ級数とい う 比率:
3.エントロピーの性質と各種情報量.
9.通信路符号化手法1 (誤り検出と誤り訂正の原理)
Excelによる積分.
1 6.低次の行列式とその応用. 2 行列式とは 行列式とは、正方行列の特徴を表す一つのスカ ラーである。すなわち、行列式は正方行列からスカ ラーに写す写像の一種とみなすこともできる。 正方行列 スカラー(実数) の行列に対する行列式を、 次の行列式という。 行列 の行列式を とも表す。 行列式と行列の記号.
計算のスピードアップ コンピュータでも、sin、cosの計算は大変です 足し算、引き算、掛け算、割り算は早いです
1 0章 数学基礎. 2 ( 定義)集合 集合については、 3セメスタ開講の「離散数学」で詳しく扱う。 集合 大学では、高校より厳密に議論を行う。そのために、議論の 対象を明確にする必要がある。 ある “ もの ” (基本的な対象、概念)の集まりを、 集合という。 集合に含まれる “ もの ” を、集合の要素または元という。
複素数.
4.プッシュダウンオートマトンと 文脈自由文法の等価性
1 0章 数学基礎. 2 ( 定義)集合 集合については、 3セメスタ開講の「離散数学」で詳しく扱う。 集合 大学では、高校より厳密に議論を行う。そのために、議論の 対象を明確にする必要がある。 ある “ もの ” (基本的な対象、概念)の集まりを、 集合という。 集合に含まれる “ もの ” を、集合の要素または元という。
信号測定. 正弦波 多くの場合正弦波は 0V の上下で振動する しかし、これでは AD 変換器に入れら れないので、オフ セットを調整して データを取った.
1 9.線形写像. 2 ここでは、行列の積によって、写像を 定義できることをみていく。 また、行列の積によって定義される写 像の性質を調べていく。
通信路(7章).
3.プッシュダウンオートマトンと 文脈自由文法
6.符号化法(6章).
ビット. 十進数と二進数 十進数  0から9までの数字を使って 0、1、2、3、4、5、6、7、8、9、 10、11、12 と数える 二進数  0と1を使って 0、1、10、11、100、101、11 0、111 と数える.
人工知能特論 II 第 4 回 二宮 崇 1. CCG (COMBINATORY CATEGORIAL GRAMMAR) 組合せ範疇文法 2 今日の講義の予定.
1 コンピュータの構成 基本情報技術概論 ( 第1回 ) 埼玉大学 理工学研究科 堀山 貴史. 主記憶 (main memory, メモリ ) に、 プログラム と データを置く 2 出力装置入力装置 制御装置 補助記憶装置 CPU 演算装置 コンピュータの構成 主記憶装置.
アルゴリズムとデータ構造 補足資料14-1 「ハッシュ法」
3.正方行列(単位行列、逆行列、対称行列、交代行列)
プログラミング演習B ML編 第3回 2010/6/15 (コミ) 2010/6/16 (情報・知能) 住井 ~sumii/class/proenb2010/ml3/
論理回路 第1回. 今日の内容 論理回路とは? 本講義の位置づけ,達成目標 講義スケジュールと内容 受講時の注意事項 成績の評価方法.
JPN 312 (Fall 2007): Conversation and Composition Contraction (2); 意見を言う (to express your opinion)
方程式を「算木」で 解いてみよう! 愛媛大学 教育学部 平田 浩一.
データベース入門 日進高等学校 情報化推進委員会. 表計算ソフトとの比較 表計算ソフト (Excel) データベース ( Access ) 編集 二人目はデータの編集が ロックされる 複数の人が同時にデータ を 編集できる 信頼性 ファイルの数だけ データが存在する データは一つ データ処理 自由.
C言語応用 構造体.
Servlet 入門 大岩研究室 川村昌弘. そもそも WEB アプリってなんやね ん n この研究会のテーマは『 WEB アプリケー ションの開発』でした. n じゃぁ WEB アプリケーションって何です か? o WEB アプリってどんなものがありますか? 検索エンジン 乗換え案内サイト 翻訳.
実装の流れと 今後のスケジュール 03k0014 岸原 大祐. システム概要 天気データをもとに、前向き推論をし ていき、親の代わりに子供に服装、持 ち物、気をつけることなどを教える。
3.多項式計算アルゴリズム べき乗の計算 多項式の計算.
プログラミング演習B ML編 第3回 2006/7/4 (通信コース) 2006/7/12 (情報コース) 住井 ~sumii/class/proenb2006/ml3/
JPN 312 (Fall 2007): Conversation and Composition 文句 ( もんく ) を言う.
確率と統計 確率編- 平成23年10月13日(木).
HKS Analysis Log Jul 2006 Part1 D.Kawama. 第壱部 HKS Sieve Slit Analysis.
HSPによる学習機能付き シューティングゲームの製作
1 中野研究室 4 年ゼミのイロハ 斉藤(修士 2 年) ( 2009 年 ”4 年ゼミのイロハ ” を参考に作りました)
1 プログラミング言語論 第13回 プログラムの意味論と検証 (2) 表示的意味論 担当:犬塚. 2 表示的意味論 denotational semantics  表示的意味論では、プログラムの要素とそれが 意味するものを対応付ける。 変数 式 文 A B … A+2 2B+C A:=A+2 if.
Elementary Japanese ‐in twenty hours- Chapter 9
プログラミングⅠ( 2 組) 第 1 回 / pLB1.pptx.
「ネット社会の歩き方」レッスンキット プレゼンテーション資料集 15. チャットで個人情報は 言わない プレゼンテーション資料 著作権は独立行政法人情報処理推進機構( IPA )及び経済産業省に帰属します。
8.任意のデータ構造 (グラフの表現とアルゴリズム)
プログラミング入門2 第3回 複合文、繰り返し 情報工学科 篠埜 功.
第14回 プログラムの意味論と検証(3) 不動点意味論 担当:犬塚
実験5 規則波 C0XXXX 石黒 ○○ C0XXXX 杉浦 ○○ C0XXXX 大杉 ○○ C0XXXX 高柳 ○○ C0XXXX 岡田 ○○ C0XXXX 藤江 ○○ C0XXXX 尾形 ○○ C0XXXX 足立 ○○
ことばとコンピュータ 2007 年度 1 学期 第 1 回. 2 ことばとコンピュータ 授業科目名:言語情報処理論 授業題目名:ことばとコンピュータ 履修コード: 5067 教室: 323 一学期開講 授業の進め方 – 基本的に講義中心ですすめ,時々コンピュー タを使う.
プログラミング演習( 1 組) 第 8 回
オセロの思考アルゴリズムについて 1103072 岩間 隆浩.
LANG3910 Japanese Ⅲ Lesson 14 依頼・現在進行形. 学習項目 1. 「て -form 」 2. 依頼表現 An expression of request 3. 相手の意向を尋ねる Ask someone’s mind 4. 現在進行形 Actions in Progress.
音の変化を視覚化する サウンドプレイヤーの作成
プログラミングの基礎知識 プログラミングの手順と重要概念 アルゴリズム. プログラミングの手順 コーディング エディタなどでコードを記述 コンパイル・インタープリタ 実行可能な形に翻訳 デバッグ(虫取り、不具合の調整) 完成!
HCC Hair Color Change. メンバー ソ 渋谷麻美 ソ 渋谷麻美 ソ 清野理衣子 ソ 清野理衣子 ソ 三上貴大 ソ 三上貴大.
本文. 考えながら読みましょ う 「いろいろなこと」( 3 行目)は何で すか 「①電話料金はコンビニで支払いをしていま す。いつでも払えますから、便利です。」 「②夕食はコンビニで買います。お弁当やお かずがいろいろありますから。」今、若者に 人気のあるコンビニは、いろいろなことをす るのに非常に便利な場所になった。
今日の内容 高階関数  関数を値として扱う 関数を引数にとる 関数を返す関数 プログラミングの例題  クイックソート.
英語勉強会 名手⇒詫間 2015/10/22. 原文 This study says acquiring motor skills support system. There is how to acquire moor skills that coach advises learner. Motor.
Presentation transcript:

プログラミング入門2 第4回 式文 代入式 論理演算子 ループの脱出、スキップ 情報工学科 篠埜 功

今日の内容 複合文について(前回の説明の補足) 式文 代入式 論理演算子 ループの脱出、スキップ

複合文(ブロック)の構文につい て 複合文の構文 { 0 個以上の宣言あるいは文の並 び } 複合文の意味 複合文中の文を順番に実 行 1999 年の ISO 規格( C99 と呼ばれる)では、複合文 の中で、変数宣言は先頭部分以外に書いてもよい こととなっている。 複合文の先頭以外で宣言した場合、その変数の有 効範囲はそこから始まる。 ただし、内側の複合文で同じ名前の変数が宣言さ れたら、その地点以降、その複合文の最後までを 除く。 現状では 1990 年の ISO 規格(教科書はこれに基づいて書かれてい る)に従っておくのが無難。

複合文の例1(打ち込んで確 認) #include int main (void) { int x; x=3; int y; y=4; printf ("x=%d, y=%d\n", x, y); return 0; } 変数 y の宣言を複合文の 先頭以外で行っている。

複合文の例2(打ち込んで確認) #include int main (void) { int x; x=3; { printf ("x=%d\n", x); /* x の値は 3 */ x=100; int x; printf ("x=%d\n", x); /* x の値は未定義 */ x=5; printf ("x=%d\n", x); /* x の値は 5 */ } printf ("x=%d\n", x); /* x の値は 100 */ return 0; } 変数 x が内側の複合文 の途中で宣言されてい る。

式文 例えば、文 x=1; は、 x=1 が代入式であり、その次にセミコロンが書かれ ているという構造をしている。式の次にセミコロン; を書くと文になる。これを式文と言う。 式文の構文1 式;式; 式文 e; の意味 式 e を評価する。評価結果は捨てる。 式文は文であり、文が書けるところならどこにでも書くことができる。 式文は、式の評価中に変数への代入や画面への出力などが起こる場合 に用いる。 1+2; なども式文であり文であるが、このような文は書く意 味がない。

式文の構文2: 空文 何もしない文として、空文というものがある。空 文も式文である。 式文の構文2(空文): ; 空文 ; の意味 何もしな い こんな構文を使う機会がないように思うか もしれないが、使われることもあるので紹 介する。

これまでに出てきた式文の例 代入式のあとにセミコロン x = 1+2 ; 関数呼び出し式のあとにセミコロン(関数の 回でもう一度説明する) printf (“test”) ; scanf (“%d”, &x) ; 赤字の x=1+2, printf(“test”), scanf(“%d”,&x) の部 分はそれ自体式であり、値を持つ。(式文で はそれは捨てられるが。)

代入式について 代入式の構文 変数名 = 式 代入式 x = e の意味 まず式 e を評価し、その結果の値を 変数 x に代入する。代入式の値は変 数 x に代入された値である。 (注意) 代入式 x=e の値は、式 e の値とは必ずしも同じではない。 例えば、 int x; x = 2.95; のような例では、 x には 2 が代入されるので、代入式 x=2.95 の値は 2 である。 (代入式の構文は後で(配列やポイン タの回で)拡張する)

代入式がネストされたプログラム 例1 (打ち込んで確認) #include int main (void) { int x; int y; x = y = 2; printf (“x=%d, y=%d\n”, x, y); return 0; } 赤字の y=2 の部分は代入式であ り、外側の代入式 x=y=2 の右辺 を成している。(代入式のネス ト) 代入演算子 = は右結合である。 つまり、式 x=y=2 は、式 x=(y=2) と等価で ある。

代入式がネストされたプログラム 例2 (打ち込んで確認) #include int main (void) { double x; int y; x = y = 1.5; printf (“x=%f, y=%d\n”, x, y); return 0; } 代入式 y=1.5 においては、 y が int 型なので 1.5 が int 型に変換され、 1 が y に代入される。 よって、代入式 y=1.5 の値は 1 である。次に x=1 が評価され、 x が double 型なので、 1 が double 型 に変換され, 1.0 が x に代入される。

よくある間違い(打ち込んで確 認) #include int main (void) { int x; x = 1; if (x=2) { printf (“x の値は 2 です \n”); } else { printf (“x の値は 2 ではありません \n”); } return 0; } 赤字の x=2 の部分は代入式であり、 x に 2 が代入される。よって代入式 x=2 の値は 2 である。 if 文の条件式 の値が 2 であり、 0 ではないので、 最初の printf が実行されることに なる。 x==2 と書くつもりが、 x=2 と書いてしまうということがよく あるので、注意する。

論理 AND 演算子 && /* キーボードから月を読み込み、その月が春かどうかを 判定 ただし 3 月から 5 月を春とする。 */ #include int main (void) { int month; printf (“ 月を入力してください: “); scanf (“%d”, &month); if (month >= 3) { if (month <= 5) printf (“ 春です。 \n”); else printf (“ 春ではありません。 \n”); } else printf (“ 春ではありません。 \n”); return 0; } 3 以上 5 以下の判定は if 文の ネストで書けるが、 if 文一 つで書きたい。

論理 AND 演算子 && (打ち込んで確 認) /* キーボードから月を読み込み、その月が春か どうかを判定。ただし 3 月から 5 月を春とする。 */ #include int main (void) { int month; printf (“ 月を入力してください: “); scanf (“%d”, &month); if (month >= 3 && month <= 5) printf (“ 春です。 \n”); else printf (“ 春ではありません。 \n”); return 0; }

論理 AND 式 論理 AND 式の構文 式 && 式 論理 AND 式 a && b の意味 まず式 a を評価し、その評価結果が 0 の場合は式 b は評価せずに a&&b の 評価結果は 0 となる。式 a の評価結 果が 0 でない場合、式 b を評価し、 その値が 0 のときは 0 、そうでない 場合は1が式 a&&b の評価結果とな る。 a, b に代入式や printf などを含む式を使うのは避けた方がよい。 真偽が定まった時点で評価を終える。 Short circuit evaluation という。

論理 AND 式の評価に関する確認 (打ち込んで確認) #include int main (void) { int x; x = 5; if (0 && (x=1)) printf ("true\n"); else printf ("false\n"); printf ("x=%d\n", x); return 0; } 代入式 x= 1 は評価されない。

論理 OR 式 論理 OR 式の構文 式 || 式 論理 OR 式 a || b の意味 まず式 a を評価し、その評価結果が 0 でない場合は式 b は評価せずに a||b の評価結果は 1 となる。式 a の 評価結果が 0 の場合、式 b を評価し、 その値が 0 のときは 0 、そうでない 場合は1が式 a||b の評価結果とな る。 a, b に代入式や printf などを含む式を使うのは避けた方がよい。

論理 OR 演算子 || を使った例 (打ち込んで確認) /* キーボードから月を読み込み、その月が春か どうかを判定。ただし 3 月から 5 月を春とする。 */ #include int main (void) { int month; printf (“ 月を入力してください: “); scanf (“%d”, &month); if (month == 3 || month == 4 || month ==5) printf (“ 春です。 \n”); else printf (“ 春ではありません。 \n”); return 0; }

論理演算子の優先順位について 四則演算の演算子では、 +, - より *, / の優 先順位が高い。 論理演算子の && は || より優先順位が高い。

&& と || の優先順位を示す例 (打ち込んで確認) #include int main (void) { if (1 || 0 && 0) printf (“true\n”); else printf (“false\n”); return 0; } 0 && 0 が || の右側の引数と解 釈されるので、条件部分が 1 となり、 true が表示される。

否定演算子 ! 否定式の構文 !式!式 否定式 !e の意味 式 e を評価し、その評価結果が 0 の とき 1 、そうでない場合 0 が !e の評 価結果である。

否定演算子を使った例(打ち込んで確 認) #include int main (void) { if (!0) printf (“true\n”); else printf (“false\n”); return 0; } !0 の評価結果は 1 であり、 true が表示される。

ループの脱出 (goto 文による ) (打ち込んで確認) /* 5 匹目を数えるところで終了 */ #include int main (void) { int x; x = 1; while (x <= 10) { if (x == 5) goto aaa; printf (“ 羊が %d 匹 \n", x); x=x+1; } aaa: return 0; }

ループの脱出( break 文による) (打ち込んで確認) /* 5 匹目を数えるところで終了 */ #include int main (void) { int x; x = 1; while (x <= 10) { if (x == 5) break; printf (“ 羊が %d 匹 \n", x); x=x+1; } return 0; } break 文が実行されると、それが属す る最も内側のループ (while ループ, for ループ, do while ループ ) の直後の部分 へジャンプする。 break 文は後に紹介する switch 文を脱出するためにも使われる。

ループのスキップ (goto 文による ) (打ち込んで確認) /* 5 匹目だけ表示しない */ #include int main (void) { int x; x = 1; while (x <= 10) { if (x == 5) { x=x+1; goto aaa; } printf (“ 羊が %d 匹 \n", x); x=x+1; aaa: ; } return 0; } ここのセミコロンは空文。

ループのスキップ (continue 文による ) (打ち込んで確認) /* 5 匹目だけ表示しない */ #include int main (void) { int x; x = 1; while (x <= 10) { if (x == 5) { x=x+1; continue; } printf (“ 羊が %d 匹 \n", x); x=x+1; } return 0; } continue 文が実行されると、それが属 する最も内側のループ (while ループ, for ループ, do while ループ ) の最後の部 分へジャンプする。

演習課題 1.整数を2つキーボードから入力し、それらの和を表示す るということを繰り返すプログラムを書け。ただし、毎回以 下のようなメッセージを出し、確認するようにせよ。 続ける場合 1 を、終了する場合 0 を入力してください: 2. 正の整数をキーボードから入力し、各桁の数および桁 数を以下のように表示するプログラムを書け。 (例)入力した数が 234 の場合: 1 の位は 4 です。 10 の位は 3 です。 100 の位は 2 です。 234 は 3 桁の数です。 (チャレンジ課題:1も2もできた人用) 正の整数をキー ボードから( 10 進表現で)入力し、それの 2 進表現での各桁 の数および桁数を表示するプログラムを書け。これができた ら 16 進表現で同様のことを行え。 (ヒント) 10 で割った余りが1の位、 10で割った商が1の位を取り除い た数である。商が0の場合は1桁の 数である。