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