プログラミング実習(C言語) ハードウェアとソフトウェアとの関係の理解のためのプログラミング体験

Slides:



Advertisements
Similar presentations
2.5 プログラムの構成要素 (1)文字セット ① ASCII ( American Standard Code for Interchange ) JIS コードと同じ ② EBCDIC ( Extended Binary Coded Decimal for Information Code ) 1.
Advertisements

情報処理基礎 A ・ B 第 5 回 プログラミング入門 操作の自動化を実現する仕組み. 2004/11/16 ・ 17 情報処理基礎 A ・ B 2 本日の内容 処理の自動化~プログラムの概念 ハードウェアとソフトウェア プログラミング言語 Excel における処理の自動化 入力支援の機能 分析ツール.
初年次セミナー 第8回 データの入力.
プログラミング実習(C言語) ハードウェアとソフトウェアとの関係の理解のためのプログラミング体験
1.コンピュータと情報処理 p.20 第1章第1節 3.ソフトウェア ソフトウェア 基本ソフトウェア
応用理工学情報処理 第1回(2015年10月 5日) 月曜日担当 前島展也 Manaba
Java I 第2回 (4/18)
情報工学基礎(改訂版) 岡崎裕之.
地理情報システム論 第3回 コンピュータシステムおける データ表現(1)
情報科学1(G1) 2016年度.
情報コミュニケーション入門 2016年度版 情報コミュニケーション入門m 総合実習(1).
プログラムはなぜ動くのか.
初年次セミナー 第2回 文字の出力.
データ分析基礎c(2012年以降入学) 情報編集基礎c(2011年以前入学)
データベース設計 第9回 Webインタフェースの作成(1)
情報コミュニケーション入門b 第6回 Part1 オペレーティングシステム入門
情報コミュニケーション入門e 第11回 Part1 オペレーティングシステム入門
シミュレーション演習 G. 総合演習 (Mathematica演習) システム創成情報工学科
コンピュータ リテラシー 担当教官  河中.
地理情報システム論演習 地理情報システム論演習
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
第7回 条件による繰り返し.
コンピュータの原理 1E17M053-9 奈良 皐佑 1E17M070-7 師尾 直希        1E17M078-6 渡邊 惇.
データベース設計 第2回 データベースモデル(1)
第2回 Microsoft Visual Studio C++ を使ってみよう
【プログラミング応用】 必修2単位 通年 30週 授業形態:演習.
序章 第2節 教育機器とコンピュータ 1 パーソナルコンピュータ
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第2回 ファイル処理 情報・知能工学系 山本一公
プログラミング基礎a 第10回 Javaによる図形処理入門(2) GUIの使い方
第7回 条件による繰り返し.
プログラミング基礎a 第1回 ハードウェアとソフトウェア プログラミング総論 ~プログラミング言語とは~
情報コミュニケーション入門b 第6回 Part1 オペレーティングシステム入門
情報コミュニケーション入門e 第11回 Part1 オペレーティングシステム入門
プログラミング基礎a 第10回 Javaによる図形処理入門(2) GUIの使い方
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
プログラミング基礎a 第1回 ハードウェアとソフトウェア プログラミング総論 ~プログラミング言語とは~
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
整数データと浮動小数データ.
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
情報とコンピュータ 静岡大学工学部 安藤和敏
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
情報処理基礎A・B 坂口利裕 横浜市立大学・商学部
C言語 はじめに 2016年 吉田研究室.
高度プログラミング演習 (01).
地理情報システム論(総)/ 国民経済計算論(商)
情報基礎Ⅱ (第1回) 月曜4限 担当:北川 晃.
計算機アーキテクチャ1 (計算機構成論(再)) 第一回 計算機の歴史、基本構成、動作原理
2013年度 プログラミングⅠ ~ 内部構造と動作の仕組み(2) ~.
vc-2. Visual Studio C++ のデバッガー (Visual Studio C++ の実用知識を学ぶシリーズ)
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
ガイダンス 電子計算機 電気工学科 山本昌志 1E
プログラミング基礎a 第4回 C言語によるプログラミング入門 条件判断と反復
基本情報技術概論(第13回) 埼玉大学 理工学研究科 堀山 貴史
vc-1. Visual Studio C++ の基本操作 (Visual Studio C++ の実用知識を学ぶシリーズ)
情報コミュニケーション入門e 第9回 Part2 ハードウェアとソフトウェア
情報コミュニケーション入門b 第2回 Part1 ハードウェアとソフトウェア
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
情報コミュニケーション入門b 第2回 Part1 ハードウェアとソフトウェア
標準入出力、変数、演算子、エスケープシーケンス
プログラミング基礎a 第3回 C言語によるプログラミング入門 データ入力
Visual Studio 2013 の起動と プロジェクトの新規作成 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
情報実習I (第1回) 木曜4・5限 担当:北川 晃.
情報コミュニケーション入門e 第9回 Part2 ハードウェアとソフトウェア
オブジェクト指向言語論 第一回 知能情報学部 新田直也.
コンピュータの機能 第2章.
プログラミング基礎a 第5回 C言語によるプログラミング入門 配列と文字列
プログラミング基礎a 第3回 C言語によるプログラミング入門 データ入力
printf・scanf・変数・四則演算
復習 いろいろな変数型(2) char 1バイト → 英数字1文字を入れるのにぴったり アスキーコード → 付録 int
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
Presentation transcript:

プログラミング実習(C言語) ハードウェアとソフトウェアとの関係の理解のためのプログラミング体験 2008.08.07~08 プログラミング実習(C言語) ハードウェアとソフトウェアとの関係の理解のためのプログラミング体験 坂口 利裕

自己紹介 氏名 本務先 専門分野 その他は... 坂口利裕 横浜市立大学 社会工学(都市・地域計画,都市解析) 後ほどホームページで 2008.08.07~08 プログラミング実習(C言語)

「プログラミング実習」で学ぶこと コンピュータそのものの理解 ハードウェアとソフトウェアの違いと関係 情報の内部表現・データの抽象化 プログラミング実習(C言語) 2008.08.07~08 「プログラミング実習」で学ぶこと テキストp.15 コンピュータそのものの理解 ハードウェアとソフトウェアの違いと関係 情報の内部表現・データの抽象化 ソフトウェアの働きを理解するためのプログラミング体験 アルゴリズム プログラミング環境 2008.08.07~08 プログラミング実習(C言語) 坂口 利裕

成績評価について 原則 欠席は1時限まで 全時限出席(実習なので当然(^^)) 受講レポート(アンケート形式の自己診断表)の提出 出席3時限以下の場合は不合格となります 2008.08.07~08 プログラミング実習(C言語)

第1日の目標 ハードウェアとソフトウェアの違いと関連を確認 プログラミングに必要な概念・用語の学習 プログラミングツールを使ったプログラミング体験 プログラミング内容は データの表示のさせ方 データの記憶のさせ方 計算の表現 条件判断の表現 (テキストp.38あたりまで) 2008.08.07~08 プログラミング実習(C言語)

コンピュータの概念的構造 概念的装置 テキストp.17~19 本体 5大機能 制御装置 演算装置 入力装置 主記憶装置 出力装置 周辺装置 プログラミング実習(C言語) 2008.08.07~08 コンピュータの概念的構造 テキストp.17~19 本体 概念的装置 5大機能 マイクロ プロセッサ (MPU) 制御装置 演算装置 入力装置 主記憶装置 出力装置 周辺装置 補助記憶装置 2008.08.07~08 プログラミング実習(C言語) 坂口 利裕

ノイマン型コンピュータの要件 電子回路による動作 二進数による演算 プログラムの(主記憶装置への)内蔵 テキストp.17~19 プログラミング実習(C言語) 2008.08.07~08 ノイマン型コンピュータの要件 テキストp.17~19 電子回路による動作 物的動作(歯車や電磁石)を伴わずに純粋に電子の力で動作 速度の向上、耐久性 二進数による演算 回路の簡素化 データの信頼性 プログラムの(主記憶装置への)内蔵 プログラムの変更の容易さ、汎用性の向上 2008.08.07~08 プログラミング実習(C言語) 坂口 利裕

DOS/Vマシン Apple系マシン スーパーコンピュータ 携帯電話 プログラミング実習(C言語) 2008.08.07~08 ハードウエアとの関係 テキストp.17~19 基本ソフトはハードウェアの制御を担当し、応用ソフトウェアから要求される機能を同じ水準で実現する ワープロ/表計算 電子メール Windows MacOS Linux DOS/Vマシン Apple系マシン スーパーコンピュータ 携帯電話 2008.08.07~08 プログラミング実習(C言語) 坂口 利裕

電子計算機 初の電子計算機 動作方式 特徴 テキストp.17~19 ENIAC 十進数 ワイヤードプログラム 軍事目的 超巨大 プログラミング実習(C言語) 2008.08.07~08 電子計算機 テキストp.17~19 初の電子計算機 ENIAC 動作方式 十進数 ワイヤードプログラム 特徴 軍事目的 超巨大 2008.08.07~08 プログラミング実習(C言語) 坂口 利裕

マイクロプロセッサ コンピュータの心臓部 半導体の集積技術の高度化による単体化 テキストp.17~19 コンピュータの心臓部 半導体の集積技術の高度化による単体化 パソコン用のプロセッサでは,1秒あたりの処理回数→数百万回~数億回 10年前のスーパーコンピュータなみ 2008.08.07~08 プログラミング実習(C言語)

ハードウェアとソフトウェアの関係(まとめ) プログラミング実習(C言語) 2008.08.07~08 ハードウェアとソフトウェアの関係(まとめ) テキストp.17~19 ハードウェアの特徴 概念的には5つの装置から構成される 制御・演算装置の仕組みは想像するよりも単純である 複雑な処理を、適切な順序の単純処理の組合せで表現することで、ハードウェアの能力を補うことができる→プログラム プログラムも記憶装置上のデータとして電子化されている 2008.08.07~08 プログラミング実習(C言語) 坂口 利裕

(休憩) 休憩後に本日分の出欠をとります やむを得ず2時限目を欠席される方は個別に申し出てください(1時限目終了時) 2008.08.07~08 プログラミング実習(C言語)

低水準言語(低級言語) プログラム(ソフトウェア) プログラムの表現の工夫 ハードウェアが理解可能→2進数 テキストp.19~21 プログラム(ソフトウェア) ハードウェアが理解可能→2進数 メインメモリに記憶されているものだけが有効 1つ1つの動作は,ハードウェア(マイクロプロセッサ)に依存しておりシンプル プログラムの表現の工夫 2進数のままでは,操作が難しい 記号的表現の導入 抽象的表現の導入 2008.08.07~08 プログラミング実習(C言語)

高水準言語(高級言語) CPUの働きをより人間の言葉(英語風の文法)に近い表現で制御する 変数(英数字の記号によるデータの表現) プログラミング実習(C言語) 2008.08.07~08 高水準言語(高級言語) テキストp.19~21 CPUの働きをより人間の言葉(英語風の文法)に近い表現で制御する 変数(英数字の記号によるデータの表現) (予約された、使用目的の定められた)キーワード(予約語) (条件判断や反復処理のような)制御構造 副手続き(サブルーチン・プロシジャ・関数)の定義による構造化(処理の分担) 2008.08.07~08 プログラミング実習(C言語) 坂口 利裕

プログラミング言語の種類 高級言語(高水準言語)の種類 汎用言語 特定目的のための専用言語 テキストp.19~21 プログラミング実習(C言語) 2008.08.07~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 など 2008.08.07~08 プログラミング実習(C言語) 坂口 利裕

プログラミングツールの役割 高級言語によって表現されたプログラムの実行 そのままでは,CPUは理解不能 いったん翻訳されたものは,繰り返して実行可能 2008.08.07~08 プログラミング実習(C言語)

実習(1)-その1 Windowsへのログオン Webブラウザを使って教材をセットアップ →この作業は1回きりでよい テキストp.23~24 補足資料p.2~3 Windowsへのログオン ユーザ名とパスワードが必要 Webブラウザを使って教材をセットアップ →この作業は1回きりでよい セットアッププログラムを「実行」 プログラミングツールの起動 Visual Studio を起動 2008.08.07~08 プログラミング実習(C言語)

実習(1)-その2 既存ファイルの読込み コンパイルと実行 テキストp.25 補足資料p.4~9 Win32プロジェクトを新規作成(内容は空に) 既存ファイルを項目として追加 [ソースファイル]からダブルクリックで読込み コンパイルと実行 [ビルド]メニューから[~のビルド] エラーがないことを確認 [デバッグ]メニューから[デバッグなしで実行] 実行後は,Enterキーを押下して復帰 2008.08.07~08 プログラミング実習(C言語)

プログラムの観察-C言語の文法 予約語 文字列の表記のルール 注釈の書き方 /* 注釈の開始 何を書いてもよい */ 注釈の終了 テキストp.25~26,91~92 予約語 役割が決まっているもの 変えてはならないキーワード 文字列の表記のルール ダブルクォート「”」で両端をくくる 注釈の書き方 覚え書き→コンパイルには影響なし /* 注釈の開始 何を書いてもよい */ 注釈の終了 2008.08.07~08 プログラミング実習(C言語)

出力関数printf()の使い方(1) printf:print in formatting(書式付けて出力) 一般形式 引数の与え方 printf(引数[ひきすう,argument]【,第2の引数…】) ; 引数の与え方 複数の場合はコンマ「,」で区切る 引数は最低ひとつ。2つ目以降は必要に応じて表現しておく 第1引数は,書式の内容を示す文字列 第2引数以降は,出力する内容(数値,変数,式) 2008.08.07~08 プログラミング実習(C言語)

出力関数printf()の使い方(2) 書式の表し方-データがない場合 英数字・漢字は、そのまま出力される \■のパターンは特殊文字を示す テキストp.26,98 書式の表し方-データがない場合 英数字・漢字は、そのまま出力される printf(“Enter Height  (within 3digits) “) ; \■のパターンは特殊文字を示す printf (“Hello!\n How are you ?”) ; 2008.08.07~08 プログラミング実習(C言語)

実習(1)-その3 プログラムの改変の手順 改変部分が実行結果にどう影響するかを観察 コンパイルエラー(文法的間違い)への対処 テキストp.26~27,98 補足資料p.8 プログラムの改変の手順 ワープロ感覚で編集 改変部分が実行結果にどう影響するかを観察 修正→実行の反復練習 コンパイルエラー(文法的間違い)への対処 意図的にエラーを発生させて操作手順を確認 手順が納得できたら休憩 2008.08.07~08 プログラミング実習(C言語)

(休憩) (頭と体を十分リラックスさせましょう) 2008.08.07~08 プログラミング実習(C言語)

実習(2)-その1 作成中のプログラムの閉じ方 別のプログラムの開き方 [ファイル]メニューから [ソリューションを閉じる] テキストp.29 補足資料p.10 作成中のプログラムの閉じ方 [ファイル]メニューから [ソリューションを閉じる] いったん終了して,Visual Studioを再起動してもよい 別のプログラムの開き方 Visual Studio起動後に開く場合と同じ プロジェクト名などは読み替える 2008.08.07~08 プログラミング実習(C言語)

データ表現の基本 テキストp.29~31,93~96 問題の抽象化 変数によるデータ表現 数式 プログラム=与えられたデータに対する加工(計算)手順の指示 具体的数値でなく抽象的記号(変数)による記述 変数によるデータ表現 アルファベットと数字の組合せ 最初はアルファベット 単一文字でもよい(が,見直す時に不便) 英単語は(予約語と同じになる場合があるので)避けローマ字で 数式 +-*/や()によって表現。 結果を記憶させる変数を左にして,=を挟み,式を記述。 2008.08.07~08 プログラミング実習(C言語)

データの記憶と抽象化-変数 データ表現 テキスト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 2008.08.07~08 プログラミング実習(C言語)

出力関数printf()の使い方(3) 書式の表し方-データを表示する場合 データを埋める場所には,%■のパターンを記述 実数の場合 テキストp.31~32,98 書式の表し方-データを表示する場合 データを埋める場所には,%■のパターンを記述 printf(“Square = %g \n“, menseki ) ; printf(“Your answer is %d\n Is it OK?”,ans) ; 実数の場合 整数の場合 2008.08.07~08 プログラミング実習(C言語)

出力関数printf()の使い方(4) データの与え方 テキストp.31~32,98 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言語)

実習(2)-その2 3.3.1 の練習内容に即して データの変更と結果の確認 内容の作り変え できた(と思う)方から一休み テキストp.32 式は考えましょう!(中学レベル) 順序も大事! 代入の形は常に 変数=式; ! できた(と思う)方から一休み 2008.08.07~08 プログラミング実習(C言語)

実習(2)-その3 任意のデータを外部から入力できるように,プログラムsample2.cを改良 代入文によるデータ設定 外部からのデータ入力 手軽な設定で,固定値の場合は十分 別の値に対する結果を得るには再コンパイルが必要 外部からのデータ入力 プログラミング言語には必ずある機能 2008.08.07~08 プログラミング実習(C言語)

入力関数scanf()の使い方(1) テキストp.33~34,99 scanf:scan in formatting(書式付けて入力) 一般形式 scanf(引数[ひきすう,argument]【,&第2の引数…】) ; 引数の与え方 複数の場合はコンマ「,」で区切る 引数は最低ひとつ。2つ目以降は必要に応じて表現しておく 第1引数は,書式の内容を示す文字列 第2引数以降は,入力した内容を覚える変数(のアドレス) 2008.08.07~08 プログラミング実習(C言語)

入力関数scanf()の使い方(2) 書式の表し方 複数のデータの与え方 テキストp.33~34,99 データを受け取る場所に,%■のパターンを記述 scanf(“%g“, &takasa ) ; 実数の場合 scanf(“%d”, &n) ; 整数 複数のデータの与え方 scanf(“%g %g”, &x, &y ) ; 2008.08.07~08 プログラミング実習(C言語)

条件式の表現 テキストp.34~37,93~94,97 数値的な比較のみ可能 式の結果は真偽のみ 1 == 0 1 と0は等しいかどうか x != 3 x(にこの時点で記憶されているデータ)が3と異なっているかどうか 式の結果は真偽のみ 0→偽,0以外(通常は1)→真と扱われる 複数の条件は論理和(~または(or)~)および論理積(~かつ(and)~)を用いて結合可能 or → || (縦バーを間にスペースを置かずに2つ) and → && (&を間にスペースを置かずに2つ) 2008.08.07~08 プログラミング実習(C言語)

実習(2)-その4 プログラム sample3.c の実行と内容の観察 改変 テキストp.35~37 条件式の使い方・組合わせ方の確認 フローチャートの見方 改変 角度も考慮した種別判定へ 表4.1(p.36)をうまく埋める フローチャートを考えましょう 1度の判断で2つに区分できるのだから,7種の判定を行うにはいくつの判断(if構文)が必要か? 時間内に考えつけなかった方は宿題! 2008.08.07~08 プログラミング実習(C言語)

実習(2)-その5 Visual Studioの終了 Windowsの終了と電源切断 テキストp.37~38 補足資料p.10 2008.08.07~08 プログラミング実習(C言語)

(1日目終了!) お疲れ様でした... 今夜は無理をせず明日に備えましょう(^_^) 2008.08.07~08 プログラミング実習(C言語)

マルチタスクの働き 参考 OS本体 スワップ領域 スワップ領域 メインメモリ CPU ハード・ディスク タイマー アプリケーションA OSそのものは常にメモリで活動 7 アプリケーションA OS本体 スワップ領域 4 スワップ領域 6 アプリケーションA 1 5 アプリケーションC アプリケーションA アプリケーションB 2 アプリケーションB 3 アプリケーションC メインメモリ CPU 一定の間隔でOSに制御を委ねる ハード・ディスク タイマー 2008.08.07~08 プログラミング実習(C言語)