1 / 33

プログラミング実習(C言語)

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

knoton
Télécharger la présentation

プログラミング実習(C言語)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

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

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

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

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

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

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

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

  12. 反復処理の表現(for構文) テキストp.43~45,101~104 • 構文の形式 • for( 初期化 ; 継続条件 ; 再初期化 )文 ; またはブロック条件式の成立している間,文を繰り返して実行 • 通常は,特定の変数を用いて,反復回数を表現する • for( n=1 ; n<=10 ; n=n+1 ) printf(“n=%d\n”, n) ;変数nを,1から始めて1ずつ増加させながら10以下の間(10を超えるまで) printf文を反復 プログラミング実習(C言語)

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

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

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

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

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

  18. 配列変数の表記 テキスト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] ; プログラミング実習(C言語)

  19. 反復処理における配列の利用 テキストp.50,75~76 • 5つのデータを(それぞれ)読み取って記憶する • 複数の単純変数を用いる場合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が変化することを利用 プログラミング実習(C言語)

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

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

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

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

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

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

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

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

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

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

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

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

  32. 関数を自前で定義 一般的書き方 関数の型 関数名 (【引数の型 引数の名前【,…】 】) { 関数の処理 return 関数の処理結果 ; } 分業化のための表現 テキストp.61,82~83 • 定義側 • 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 ; プログラミング実習(C言語)

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

More Related