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

Slides:



Advertisements
Similar presentations
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
Advertisements

情報処理実習 第05回 Excelマクロ機能入門 操作マクロ入門.
プログラミング入門 電卓番外編 ~エクセルで関数表示~.
Java I 第2回 (4/18)
プログラミング入門 (教科書1~3章) 2005/04/14(Thu.).
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
ファーストイヤー・セミナーⅡ 第8回 データの入力.
数値計算及び実習 第3回 プログラミングの基礎(1).
第2回ネットワークプログラミング 中村 修.
地理情報システム論 第3回 コンピュータシステムおける データ表現(1)
C言語 配列 2016年 吉田研究室.
基礎プログラミング (第五回) 担当者: 伊藤誠 (量子多体物理研究室) 内容: 1. 先週のおさらいと続き (実習)
応用情報処理V 第1回 プログラミングとは何か 2004年9月27日.
情報科学1(G1) 2016年度.
応用情報処理V 第1回 プログラミングとは何か 2003年9月29日.
プログラミング実習(C言語) ハードウェアとソフトウェアとの関係の理解のためのプログラミング体験
スクリプト言語を用いたPHITSの連続実行
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
第7回 条件による繰り返し.
第2回 Microsoft Visual Studio C++ を使ってみよう
プログラミング 2 ファイル処理.
FlexとBison+アルファ -実習編-
プログラミング応用 printfと変数.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第2回 ファイル処理 情報・知能工学系 山本一公
プログラミング基礎a 第10回 Javaによる図形処理入門(2) GUIの使い方
第7回 条件による繰り返し.
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
実習問題の解き方 JIS3-3の場合.
プログラミング基礎a 第1回 ハードウェアとソフトウェア プログラミング総論 ~プログラミング言語とは~
プログラミング基礎a 第10回 Javaによる図形処理入門(2) GUIの使い方
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
プログラミング基礎a 第7回 C言語によるプログラミング入門 ファイル入出力
東京工科大学 コンピュータサイエンス学部 亀田弘之
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
C言語 はじめに 2016年 吉田研究室.
プログラミング基礎a 第6回 C言語によるプログラミング入門 配列と文字列(その2)
統計ソフトウエアRの基礎.
補講:アルゴリズムと漸近的評価.
基礎プログラミング演習 第6回.
プログラミング演習I 2003年7月2日(第11回) 木村巌.
復習 Cにおけるループからの脱出と制御 break ループを強制終了する.if文と組み合わせて利用するのが一般的. continue
プログラミング基礎a 第4回 C言語によるプログラミング入門 条件判断と反復
アルゴリズムとデータ構造1 2009年6月15日
情報コミュニケーション入門b 第9回 表計算ソフト入門(3)
精密工学科プログラミング基礎 第7回資料 (11/27実施)
アルゴリズム入門 (Ver /10/07) ・フローチャートとプログラムの基本構造 ・リスト ・合計の計算
標準入出力、変数、演算子、エスケープシーケンス
プログラミング基礎a 第3回 C言語によるプログラミング入門 データ入力
cp-3. 計算 (C プログラミング演習,Visual Studio 2019 対応)
コンパイラ 2012年10月11日
プログラミング基礎a 第7回 C言語によるプログラミング入門 ファイル入出力
プログラミング 4 文字列.
アルゴリズムとデータ構造 2010年6月17日
プログラミング実習(Java) グラフィクス処理とGUIプログラミング 講師:坂口 利裕(横浜市立大学)
Cp-1. Microsoft Visual Studio 2019 C++ の使い方 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
情報処理Ⅱ 2005年11月25日(金).
プログラミング基礎a 第5回 C言語によるプログラミング入門 配列と文字列
プログラミング序論演習.
プログラミング基礎a 第3回 C言語によるプログラミング入門 データ入力
printf・scanf・変数・四則演算
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
知能情報工学演習I 第9回(後半第3回) 課題の回答
第5回 配列.
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
Presentation transcript:

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

第2日の目標 第1日の復習 反復処理と配列表現 アルゴリズムによる表現 実用プログラム作りへのステップ プログラミング作業全体の流れの確認 練習 sample3.c の拡張問題の解答例 条件判断の使い方 計算問題の作成 反復処理と配列表現 繰り返しの表現 アルゴリズムによる表現 アルゴリズム表現の重要性の認識 既存アルゴリズムによる例題 実用プログラム作りへのステップ データファイルの扱い方 (おおむねp.59まで-最低目標) 文字列データの扱い方 プログラムの分業化 2008.08.07~08 プログラミング実習(C言語)

プログラムの設計から実行までの流れ (設計段階) テキストp.39 コーディング 設計書 ・計算の手順 ・必要な答と必要なデータ プログラミング言語による表現 (ソースプログラム) 2008.08.07~08 プログラミング実習(C言語)

プログラムの設計から実行までの流れ (ソース・プログラムの作成) テキストp.39 プログラム入力・編集 データ・ファイルとして保管 編集用ソフトウェア (エディタ) プログラミング言語による表現 (ソースプログラム) (電子化された) ソースプログラム 2008.08.07~08 プログラミング実習(C言語)

プログラムの設計から実行までの流れ (ソース・プログラムの翻訳) テキストp.39 コンパイルとリンク データ・ファイルとして保管 翻訳用ソフトウェア (コンパイラ) (電子化された) ソースプログラム 実行可能 プログラム 2008.08.07~08 プログラミング実習(C言語)

プログラムの設計から実行までの流れ (実行可能プログラムの実行) テキストp.39 プログラムの実行 オペレーティング システム 実行可能 プログラム CPU (マイクロプロセッサ) 周辺装置 メインメモリ 2008.08.07~08 プログラミング実習(C言語)

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

実習(3) 補足資料p.11,14~15 既存プロジェクトの呼出し手順 コマンドラインによるプログラミング手順 プログラミング実習(C言語) 2008.08.07~08 実習(3) 補足資料p.11,14~15 既存プロジェクトの呼出し手順 一度作成したプロジェクトを「開く」 プロジェクトに関連付けられたファイルはそのまま呼び出される コマンドラインによるプログラミング手順 コマンド(文字列入力による操作指示)によるプログラミング 古典的な(GUIのない時代の)環境 単独ファイルで完結している小規模プログラムの開発には十分 いずれかの手順にてsample3.cを完成 フローチャートの解答を確認 プログラムの文として表現 出来上がった人から一休み 2008.08.07~08 プログラミング実習(C言語) 坂口 利裕

(休憩) 休憩後に午前分の出欠をとります 2008.08.07~08 プログラミング実習(C言語)

実習(4)-その1 練習 sample4.c 判断処理を利用したゲーム 実行した後,ifの使い方を確認 テキストp.40 2008.08.07~08 プログラミング実習(C言語)

実習(4)-その2 1日目の総復習 練習 sample5.c の完成 余力のある方は,改変問題にチャレンジ テキストp.40~41 結果の判定を追加 BMI指数も追加 標準体重の計算 2008.08.07~08 プログラミング実習(C言語)

反復処理の表現(for構文) 構文の形式 通常は,特定の変数を用いて,反復回数を表現する テキストp.43~45,101~104 for( n=1 ; n<=10 ; n=n+1 ) printf(“n=%d\n”, n) ; 変数nを,1から始めて1ずつ増加させながら10以下の間(10を超えるまで) printf文を反復 2008.08.07~08 プログラミング実習(C言語)

実習(5)-その1 ソースプログラムの新規作成手順 テキストp.43~47 補足資料p.12~13 既存プログラムは[ソリューションを閉じる]で終了 [ファイル]メニューから[新規作成]でプロジェクトを作成 [既存項目の追加]の代わりに[新規項目の追加]を選択 ファイルの種類を[C++ソースファイル]に 保存場所([位置])を確認し,必要に応じて変更 [ファイル名]の指定にも注意(.cは省く) 2008.08.07~08 プログラミング実習(C言語)

実習(5)-その2 C言語プログラム全体の構成の確認 単純な反復処理の確認 テキストp.43~47 補足資料p.12~13 プログラム全体の新規作成の体験 単純な反復処理の確認 構文 for() の基本形の理解と確認 改変問題を行うことで理解を深める 2008.08.07~08 プログラミング実習(C言語)

(休憩・昼食) ここまでくれば占めたモノ! 栄養を十分補給して午後に備えましょう 2008.08.07~08 プログラミング実習(C言語)

データの構造化-配列型 数列,ベクトル,行列を扱うためのデータ表現 テキストp.49~50,105 これまでの変数→単純変数と区別 4.5 3.1 変数x 4.5 3.1 3.1 単純変数の場合には,同じ変数には,同時に二つ以上のデータを記憶できない! 2008.08.07~08 プログラミング実習(C言語)

配列変数の構造 同じ名前の変数を区分け →それぞれに別のデータを記憶 テキストp.49~50,105 float x[5] ; x という名前の5つに区分けされた変数 2.5 x[0] 4.2 x[1] 3.5 x[2] 6.9 x[3] 2.5 x[4] それぞれの区画は単純変数と同じ 配列変数x (全体で) 2008.08.07~08 プログラミング実習(C言語)

配列変数の表記 定義 データの記憶・参照-区画ごとに行なう テキストp.49~50,105 型名(それぞれの区画の型) 名前[全体の区画数] ; 例) float x[5] ; データの記憶・参照-区画ごとに行なう 名前[区画の番号(添え字:subscript)] 添え字は0からの順序番号 添え字として,式を用いることが可能 例) x[0] = 3.2 ; x[1] = x[0]+3 ; x[n] = x[n-1]+x[n-2] ; 2008.08.07~08 プログラミング実習(C言語)

反復処理における配列の利用 5つのデータを(それぞれ)読み取って記憶する テキストp.50,75~76 複数の単純変数を用いる場合 float a,b,c,d,e ; scanf(“%g”,&a) ; scanf(“%g”,&b) ; scanf(“%g”,&c) ; scanf(“%g”,&d) ; scanf(“%g”,&e) ; 配列変数を用いる場合 float x[5] ; int m ; for( m=0 ; m<5 ; m=m+1 ) scanf(“%g”,&x[m]) ; mが変化することを利用 2008.08.07~08 プログラミング実習(C言語)

実習(6)-その1 配列表現の確認 練習 sample6.c と sample7.c の比較 それぞれ実行してみて,「結果は同じ」ことを確認 2008.08.07~08 プログラミング実習(C言語)

実習(6)-その2 練習 sample7.c を改良し,配列の特徴を生かす 規則性をうまくとらえる(取り出す)ことがポイント データ数を増やすには? 2008.08.07~08 プログラミング実習(C言語)

実習(6)-その3 最低限 sample7 の改良を終えたら休憩 練習 sample8 を実行 (余裕のある方) 「表引き」処理への配列表現の応用 限定された範囲の検索処理の基本 2008.08.07~08 プログラミング実習(C言語)

複雑な問題の考え方 (人間にとっては簡単でも)コンピュータにとっては,理解できる言葉(プログラミング言語)でないと伝わらない テキストp.51~56 (人間にとっては簡単でも)コンピュータにとっては,理解できる言葉(プログラミング言語)でないと伝わらない 条件判断 if 反復処理 for (やwhile) 計算処理 変数 = 式(代入) データの入力 scanf メッセージやデータの表示 printf  の組み合わせで表現し直すのが非常にやっかい 2008.08.07~08 プログラミング実習(C言語)

アルゴリズム テキストp.51~56 計算手順(算法) 図式による表現 代表的なアルゴリズムとそのプログラム表現を学習 特定のプログラミング言語に依らない 判断基準や処理内容が明確である (答えがない時も含めて)必ず答を導ける 自然言語や数式による記述が中心 図式による表現 フローチャート 代表的なアルゴリズムとそのプログラム表現を学習 ユークリッドの互除法-最大公約数を求める 単純選択法-データを順序に応じて並べかえる 2008.08.07~08 プログラミング実習(C言語)

実習(7)-その1 アルゴリズムを考える実習 ユークリッドの互除法 アルゴリズム表現とフローチャートの比較 プログラム例の入力と実行 テキストp.51~56 アルゴリズムを考える実習 ユークリッドの互除法 アルゴリズム表現とフローチャートの比較 プログラム例の入力と実行 2008.08.07~08 プログラミング実習(C言語)

実習(7)-その2 アルゴリズムを考える実習 単純選択法 余力のある方は, 演習問題-金種計算に挑戦! 練習 sample9.c の実行 並べ替え機能を追加 フローチャートからプログラムへの読み替え 余力のある方は, 演習問題-金種計算に挑戦! 2008.08.07~08 プログラミング実習(C言語)

単純選択法の動き テキストp.53~56 3 x[0] 2 x[1] 5 x[2] 6 x[3] 8 x[4] i j imin アルゴリズムAによる探索範囲(i=1~n) アルゴリズムBによる探索範囲(j=i+1~n) j imin より小さい値の場所に更新 本来の最小値の場所iと,実際の最小値の場所iminとが異なった場合はデータを入れ替え 2008.08.07~08 プログラミング実習(C言語)

実用プログラムの作成に向けて ファイル入出力 文字情報の扱い 大規模なプログラム→部品化(分業化)→独立した関数に分解して開発 テキストp.57~62,109~111 ファイル入出力 文字情報の扱い 大規模なプログラム→部品化(分業化)→独立した関数に分解して開発 2008.08.07~08 プログラミング実習(C言語)

ファイル入出力 キーボードからのデータ入力 計算結果の画面表示 ファイルを直接利用する手段 手軽にできる(特に大げさな準備は不要) テキストp.57~59,109~110 キーボードからのデータ入力 手軽にできる(特に大げさな準備は不要) 大量データに対する処理・同一データに対して別のプログラムで処理→入力ミスの恐れ 計算結果の画面表示 情報量が少ない時は手軽に利用できる 直接ワープロなどに利用できない ファイルを直接利用する手段 2008.08.07~08 プログラミング実習(C言語)

C言語におけるファイルの扱い方 “ファイル”を表す特別な型の変数:FILE型 FILE *f ; テキストp.57~59,109~110 “ファイル”を表す特別な型の変数:FILE型 FILE *f ; 実際のファイルを指定して“開く” f = fopen(ファイル名,ファイルモード) ; f = fopen(“ex13.txt”, “r”) ; ファイル入出力関数 fscanf, fprintfを使う fscanf(f, …) ; fprintf(f, …) ; “閉じる” fclose(f) ; 2008.08.07~08 プログラミング実習(C言語)

文字情報の扱い C言語における文字型 使い方 テキストp.106~107 char (<character)の配列 ただし,実際には余分に1文字分必要。  使い方 読み取り:scanf(“%s”,name); /*配列名のみ*/ 表示:printf(“%s”,name) ; 四則演算:不可能 許される演算:比較・複写(代入)・連結→標準ライブラリ関数使用 2008.08.07~08 プログラミング実習(C言語)

分業化のための表現 関数を自前で定義 一般的書き方 テキストp.61,82~83 関数の型 関数名 (【引数の型 引数の名前【,…】 】 ) { 関数の処理 return 関数の処理結果 ; } 定義側 float sum( int n, float x[ ] ) { int k ; float s ; s=0 ; for( k=0 ; k<n ; k+=1 ) s += x[k] ; return s ; } 参照側 xmean = sum(n,x)/n ; 2008.08.07~08 プログラミング実習(C言語)

(総合実習) 消化不良の例題 余力のある方 自発的に復習してみましょう 質問ももちろんOK 演習問題(p.87~88)にも挑戦 プログラミング実習(C言語) 2008.08.07~08 (総合実習) 消化不良の例題 自発的に復習してみましょう 質問ももちろんOK 余力のある方 演習問題(p.87~88)にも挑戦 2008.08.07~08 プログラミング実習(C言語) 坂口 利裕