プログラミング実習(C言語) ハードウェアとソフトウェアとの関係 の理解のためのプログラミング体験 講師:坂口利裕 横浜市立大学・国際総合科学研究院 自己紹介 氏名 本務先 横浜市立大学 専門分野 坂口利裕 社会工学(都市・地域計画,都市解析) その他は... 後ほどホームページで 2008.08.07~08 プログラミング実習(C言語) 2 テキストp.15 「プログラミング実習」で学ぶこと コンピュータそのものの理解 ハードウェアとソフトウェアの違いと関係 情報の内部表現・データの抽象化 ソフトウェアの働きを理解するためのプログラ ミング体験 アルゴリズム プログラミング環境 2008.08.07~08 プログラミング実習(C言語) 3 成績評価について 原則 全時限出席(実習なので当然(^^)) 受講レポート(アンケート形式の自己診断表) の提出 欠席は1時限まで 出席3時限以下の場合は不合格となります 2008.08.07~08 プログラミング実習(C言語) 4 第1日の目標 ハードウェアとソフトウェアの違いと関連を確認 プログラミングに必要な概念・用語の学習 プログラミングツールを使ったプログラミング体験 プログラミング内容は データの表示のさせ方 データの記憶のさせ方 計算の表現 条件判断の表現 (テキストp.38あたりまで) 2008.08.07~08 プログラミング実習(C言語) 5 テキストp.17~19 コンピュータの概念的構造 本体 概念的装置 制御装置 5大機能 演算装置 入力装置 主記憶装置 マイクロ プロセッサ (MPU) 出力装置 補助記憶装置 周辺装置 2008.08.07~08 プログラミング実習(C言語) 6 テキストp.17~19 ノイマン型コンピュータの要件 電子回路による動作 二進数による演算 物的動作(歯車や電磁石)を伴わずに純粋に電子の 力で動作 速度の向上、耐久性 回路の簡素化 データの信頼性 プログラムの(主記憶装置への)内蔵 プログラムの変更の容易さ、汎用性の向上 2008.08.07~08 プログラミング実習(C言語) 7 テキストp.17~19 ハードウエアとの関係 ワープロ/表計算 電子メール Windows MacOS Linux 基本ソフトはハード ウェアの制御を担当し、 応用ソフトウェアから 要求される機能を同じ 水準で実現する DOS/Vマシン Apple系マシン スーパーコンピュータ 携帯電話 2008.08.07~08 プログラミング実習(C言語) 8 テキストp.17~19 電子計算機 初の電子計算機 動作方式 ENIAC 十進数 ワイヤードプログラム 特徴 軍事目的 超巨大 2008.08.07~08 プログラミング実習(C言語) 9 テキストp.17~19 マイクロプロセッサ 2008.08.07~08 コンピュータの心臓部 半導体の集積技術の 高度化による単体化 パソコン用のプロセッ サでは,1秒あたりの 処理回数→数百万回 ~数億回 10年前のスーパーコ ンピュータなみ プログラミング実習(C言語) 10 テキストp.17~19 ハードウェアとソフトウェアの関係(まとめ) ハードウェアの特徴 概念的には5つの装置から構成される 制御・演算装置の仕組みは想像するよりも単純である 複雑な処理を、適切な順序の単純処理の組合せで表 現することで、ハードウェアの能力を補うことができる →プログラム プログラムも記憶装置上のデータとして電子化されて いる 2008.08.07~08 プログラミング実習(C言語) 11 (休憩) 休憩後に本日分の出欠をとります やむを得ず2時限目を欠席される方は個別に 申し出てください(1時限目終了時) 2008.08.07~08 プログラミング実習(C言語) 12 テキストp.19~21 低水準言語(低級言語) プログラム(ソフトウェア) ハードウェアが理解可能→2進数 メインメモリに記憶されているものだけが有効 1つ1つの動作は,ハードウェア(マイクロプロ セッサ)に依存しておりシンプル プログラムの表現の工夫 2進数のままでは,操作が難しい 記号的表現の導入 抽象的表現の導入 2008.08.07~08 プログラミング実習(C言語) 13 テキストp.19~21 高水準言語(高級言語) CPUの働きをより人間の言葉(英語風の 文法)に近い表現で制御する 変数(英数字の記号によるデータの表現) (予約された、使用目的の定められた)キー ワード(予約語) (条件判断や反復処理のような)制御構造 副手続き(サブルーチン・プロシジャ・関数)の 定義による構造化(処理の分担) 2008.08.07~08 プログラミング実習(C言語) 14 テキストp.19~21 プログラミング言語の種類 高級言語(高水準言語)の種類 汎用言語 Fortran,Cobol,PL/I,BASIC,Pascal, C,C++,Lisp,Prolog, Java,AWK,Perl,Tcl など 特定目的のための専用言語 SAS,TSP,S,Mathematica, DYNAMO, TeX,HTML,PostScript など 2008.08.07~08 プログラミング実習(C言語) 15 テキストp.21~22 プログラミングツールの役割 高級言語によって表現されたプログラムの 実行 そのままでは,CPUは理解不能 (その言語専用の)翻訳ソフトウェア=プログ ラミングツールを用いてCPUが理解可能な状 態に翻訳する いったん翻訳されたものは,繰り返して実行可 能 2008.08.07~08 プログラミング実習(C言語) 16 テキストp.23~24 実習(1)-その1 Windowsへのログオン ユーザ名とパスワードが必要 Webブラウザを使って教材をセットアップ →この作業は1回きりでよい 補足資料p.2~3 セットアッププログラムを「実行」 プログラミングツールの起動 Visual Studio を起動 2008.08.07~08 プログラミング実習(C言語) 17 テキストp.25 実習(1)-その2 既存ファイルの読込み 補足資料p.4~9 Win32プロジェクトを新規作成(内容は空に) 既存ファイルを項目として追加 [ソースファイル]からダブルクリックで読込み コンパイルと実行 [ビルド]メニューから[~のビルド] エラーがないことを確認 [デバッグ]メニューから[デバッグなしで実行] 実行後は,Enterキーを押下して復帰 2008.08.07~08 プログラミング実習(C言語) 18 テキストp.25~26,91~92 プログラムの観察-C言語の文法 予約語 文字列の表記のルール 役割が決まっているもの 変えてはならないキーワード ダブルクォート「”」で両端をくくる 注釈の書き方 覚え書き→コンパイルには影響なし /* 注釈の開始 何を書いてもよい */ 2008.08.07~08 注釈の終了 プログラミング実習(C言語) 19 テキストp.26,98 出力関数printf()の使い方(1) printf:print in formatting(書式付けて出力) 一般形式 引数の与え方 printf(引数[ひきすう,argument]【,第2の引数…】) ; 複数の場合はコンマ「,」で区切る 引数は最低ひとつ。2つ目以降は必要に応じて 表現しておく 第1引数は,書式の内容を示す文字列 第2引数以降は,出力する内容(数値,変数,式) 2008.08.07~08 プログラミング実習(C言語) 20 テキストp.26,98 出力関数printf()の使い方(2) 書式の表し方-データがない場合 英数字・漢字は、そのまま出力される printf(“Enter Height (within 3digits) “) ; \■のパターンは特殊文字を示す printf (“Hello!\n How are you ?”) ; 2008.08.07~08 プログラミング実習(C言語) 21 テキストp.26~27,98 実習(1)-その3 プログラムの改変の手順 修正→実行の反復練習 コンパイルエラー(文法的間違い)への対処 ワープロ感覚で編集 改変部分が実行結果にどう影響するかを観察 補足資料p.8 意図的にエラーを発生させて操作手順を確認 手順が納得できたら休憩 2008.08.07~08 プログラミング実習(C言語) 22 (休憩) (頭と体を十分リラックスさせましょう) 2008.08.07~08 プログラミング実習(C言語) 23 テキストp.29 実習(2)-その1 作成中のプログラムの閉じ方 補足資料p.10 [ファイル]メニューから [ソリューションを閉じる] いったん終了して,Visual Studioを再起動して もよい 別のプログラムの開き方 Visual Studio起動後に開く場合と同じ プロジェクト名などは読み替える 2008.08.07~08 プログラミング実習(C言語) 24 テキストp.29~31,93~96 データ表現の基本 問題の抽象化 変数によるデータ表現 プログラム=与えられたデータに対する加工(計算)手順の指示 具体的数値でなく抽象的記号(変数)による記述 アルファベットと数字の組合せ 最初はアルファベット 単一文字でもよい(が,見直す時に不便) 英単語は(予約語と同じになる場合があるので)避けローマ字で 数式 +-*/や()によって表現。 結果を記憶させる変数を左にして,=を挟み,式を記述。 2008.08.07~08 プログラミング実習(C言語) 25 テキストp.31,95~96 データの記憶と抽象化-変数 データ表現 基本の型(type)-属 性 実数(小数以下を持 つ)と整数(小数以下な し) 一定の記憶量で「実用 的に」まかなえる範囲 データの性質に応じて 使い分け float(実数)またはint (整数)で宣言 2008.08.07~08 値を記憶させるには代 入を使用 float x; x=3.1; x=4.5; 3.1 4.5 プログラミング実習(C言語) 変数x 3.1 4.5 3.1 26 テキストp.31~32,98 出力関数printf()の使い方(3) 書式の表し方-データを表示する場合 データを埋める場所には,%■のパターンを 記述 printf(“Square = %g \n“, menseki ) ; 実数の場合 printf(“Your answer is %d\n Is it OK?”,ans) ; 整数の場合 2008.08.07~08 プログラミング実習(C言語) 27 テキストp.31~32,98 出力関数printf()の使い方(4) データの与え方 printf("Pi Number = %g\n", 3.14159) ; 定数 printf(“Answer = %g [km/h]\n”,jisoku) ; 変数 printf("Square = %g\n", takasa*teihen/2) ; 式 printf(“Vector=(%g %g %g)\n”,x,y,z) ; 複数 2008.08.07~08 プログラミング実習(C言語) 28 テキストp.32 実習(2)-その2 3.3.1 の練習内容に即して データの変更と結果の確認 内容の作り変え 式は考えましょう!(中学レベル) 順序も大事! 代入の形は常に 変数=式; ! できた(と思う)方から一休み 2008.08.07~08 プログラミング実習(C言語) 29 テキストp.33~34,99 実習(2)-その3 任意のデータを外部から入力できるように, プログラムsample2.cを改良 代入文によるデータ設定 手軽な設定で,固定値の場合は十分 別の値に対する結果を得るには再コンパイルが必 要 外部からのデータ入力 プログラミング言語には必ずある機能 2008.08.07~08 プログラミング実習(C言語) 30 テキストp.33~34,99 入力関数scanf()の使い方(1) scanf:scan in formatting(書式付けて入力) 一般形式 引数の与え方 scanf(引数[ひきすう,argument]【,&第2の引数…】) ; 複数の場合はコンマ「,」で区切る 引数は最低ひとつ。2つ目以降は必要に応じて表現して おく 第1引数は,書式の内容を示す文字列 第2引数以降は,入力した内容を覚える変数(のアドレス) 2008.08.07~08 プログラミング実習(C言語) 31 テキストp.33~34,99 入力関数scanf()の使い方(2) 書式の表し方 データを受け取る場所に,%■のパターンを記述 scanf(“%g“, &takasa ) ; 実数の場合 scanf(“%d”, &n) ; 整数 複数のデータの与え方 scanf(“%g %g”, &x, &y ) ; 2008.08.07~08 プログラミング実習(C言語) 32 テキストp.34~37,93~94,97 条件式の表現 数値的な比較のみ可能 式の結果は真偽のみ 1 == 0 1 と0は等しいかどうか x != 3 x(にこの時点で記憶されているデータ)が3と異なっているかどう か 0→偽,0以外(通常は1)→真と扱われる 複数の条件は論理和(~または(or)~)および論理積(~ かつ(and)~)を用いて結合可能 or and 2008.08.07~08 → || (縦バーを間にスペースを置かずに2つ) → && (&を間にスペースを置かずに2つ) プログラミング実習(C言語) 33 テキストp.35~37 実習(2)-その4 プログラム sample3.c の実行と内容の観察 条件式の使い方・組合わせ方の確認 フローチャートの見方 改変 角度も考慮した種別判定へ 表4.1(p.36)をうまく埋める フローチャートを考えましょう 1度の判断で2つに区分できるのだから,7種の判定を行うに はいくつの判断(if構文)が必要か? 時間内に考えつけなかった方は宿題! 2008.08.07~08 プログラミング実習(C言語) 34 テキストp.37~38 実習(2)-その5 補足資料p.10 Visual Studioの終了 Windowsの終了と電源切断 2008.08.07~08 プログラミング実習(C言語) 35 (1日目終了!) お疲れ様でした... 今夜は無理をせず明日に備えましょう(^_^) 2008.08.07~08 プログラミング実習(C言語) 36
© Copyright 2024 ExpyDoc