Microsoft PowerPoint - kougi4.ppt

Similar documents
Microsoft PowerPoint - kougi2.ppt

Microsoft PowerPoint - guidance.ppt

Microsoft PowerPoint - kougi9.ppt

Microsoft PowerPoint - kougi6.ppt

ゲームエンジンの構成要素

Microsoft PowerPoint - kougi7.ppt

Microsoft PowerPoint - kougi8.ppt

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

情報処理演習 B8クラス

cp-7. 配列

PowerPoint Presentation

Microsoft PowerPoint - kougi11.ppt

ファイル入出力

Taro-ファイル処理(公開版).jtd

ファイル入出力

2006年10月5日(木)実施

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

PowerPoint Presentation

Microsoft PowerPoint - prog04.ppt

プログラミング基礎

Microsoft Word - Cプログラミング演習(9)

A/B (2018/10/19) Ver kurino/2018/soft/soft.html A/B

Prog1_12th

プログラミング演習3 - Cプログラミング -

PowerPoint プレゼンテーション

PowerPoint Presentation

プログラミング基礎

4 分岐処理と繰返し処理 ( 教科書 P.32) プログラムの基本的処理は三つある. (1) 順次処理 : 上から下に順番に処理する ぶんきそろ (2) 分岐処理 : 条件が揃えば, 処理する はんぷく (3) 反復処理 : 条件が揃うまで処理を繰り返す 全てのプログラムは (1) から (3) の

プログラミング演習3 - Cプログラミング -

Microsoft PowerPoint - bp02.ppt

gengo1-12

PowerPoint プレゼンテーション

Microsoft PowerPoint - C_Programming(3).pptx

C言語講座 ~ファイル入出力編~

Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]

Cプログラミング1(再) 第2回

計算機プログラミング

Microsoft PowerPoint - while.ppt

gengo1-12

Microsoft PowerPoint - kougi10.ppt

演算増幅器

ガイダンス

※ ポイント ※

1. ファイルにアクセスするには ファイルにアクセスするには 1. ファイルを開く 2. アクセスする 3. ファイルを閉じるという手順を踏まなければなりません 1.1. ファイルを読み込む まずはファイルの内容を画面に表示させるプログラムを作りましょう 開始 FILE *fp char fname

Microsoft Word - VB.doc

Microsoft PowerPoint - 第3回目.ppt [互換モード]

3. 標準入出力

画像ファイルを扱う これまでに学んだ条件分岐, 繰り返し, 配列, ファイル入出力を使って, 画像を扱うプログラムにチャレンジしてみよう

PowerPoint プレゼンテーション

講習No.12

Microsoft PowerPoint - lec4.ppt

プログラミング基礎

文字列 2 前回の授業ではコンピュータ内部での文字の取り扱い 文字型の変数 文字型変数への代入方法などを学習した 今回は 前回に引き続き 文字処理を学習する 内容は 標準入出力 ( キーボード ディスプレイ ) での文字処理 文字のファイル処理 文字を取り扱うライブラリ関数である 標準入出力 Lin

C 言語の式と文 C 言語の文 ( 関数の呼び出し ) printf("hello, n"); 式 a a+4 a++ a = 7 関数名関数の引数セミコロン 3 < a "hello" printf("hello") 関数の引数は () で囲み, 中に式を書く. 文 ( 式文 ) は

gengo1-12

PowerPoint プレゼンテーション

Microsoft PowerPoint - visualprogram.ppt

Microsoft Word - no204.docx

2 / 26 平成 26 年 4 月 11 日 ( 金 ) 午後 1 時 9 分 Visual C Express の使用法 ( 東海大学理学部物理学科 ) 無償で利用できる開発環境 (Windows XP 以降 ) Visual Studio 2010 Express

Microsoft PowerPoint - CproNt02.ppt [互換モード]

Microsoft PowerPoint - lec10.ppt

Microsoft PowerPoint - program.ppt [互換モード]

Microsoft PowerPoint - 10Com2.ppt

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

kiso2-03.key

Microsoft Word - Cプログラミング演習(10)

slide4.pptx

Microsoft PowerPoint - 3.pptx

Prog1_6th

3.Cygwin で日本語を使いたい Cygwin で以下のコマンドを実行すると それ以降 メッセージが日本語になります export LANG=ja_JP.UTF-8 これは 文字コードを日本語の UTF-8 に設定することを意味しています UTF-8 は Cygwin で標準の文字コードで, 多

FORTRAN( と C) によるプログラミング 5 ファイル入出力 ここではファイルからデータを読みこんだり ファイルにデータを書き出したりするプログラムを作成してみます はじめに テキスト形式で書かれたデータファイルに書かれているデータを読みこんで配列に代入し 標準出力に書き出すプログラムを作り

Microsoft PowerPoint - class04.ppt

Microsoft Word - no103.docx

V

Microsoft Word - 3new.doc

memo

02: 変数と標準入出力

第 1 章 : はじめに RogueWave Visualization for C++ の Views5.7 に付属している Views Studio を使い 簡単な GUI アプリケーションの開発手順を紹介します この文書では Windows 8 x64 上で Visual Studio2010

プログラミング入門1

ポインタ変数

JavaScriptで プログラミング

Microsoft PowerPoint - 計算機言語 第7回.ppt

Prog1_2nd

Microsoft PowerPoint - prog06.ppt

実習を行う上での心構えについて

Microsoft PowerPoint - 14th.ppt [互換モード]

第2回講義:まとめ

Microsoft Word - DF-Salford解説09.doc

1. 新規プロジェクト作成の準備新規プロジェクトのためのフォルダを用意して そこにプロジェクトを作成します [ 新しいフォルダー ] をクリックして希望のフォルダに新しいフォルダを作成します この例では TrST_F401N_BlinkLD2 というフォルダを作成しました TrST_F401N_Bl

Microsoft PowerPoint - 4.pptx

Taro-Basicの基礎・はじめに(公

Microsoft PowerPoint - VBA解説1.ppt [互換モード]

Report#2.docx

プログラミング実習I

スクールCOBOL2002

02: 変数と標準入出力

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

ゲームプログラミング講習 第0章 導入

/*Source.cpp*/ #include<stdio.h> //printf はここでインクルードして初めて使えるようになる // ここで関数 average を定義 3 つの整数の平均値を返す double 型の関数です double average(int a,int b,int c){

Prog1_15th

Transcription:

C の実行モデル

自由落下距離 前回の授業の 例題 1 の復習と重要事項 の確認 地上で物を落とし始めた後の自由落下距離を 求める 重力加速度 g は 9.8 とする 自由落下距離を求めるために, プログラム中に, 計算式 y = ( 9.8 / 2.0 ) * x * x を書く

C++ ソースファイルの編集 編集画面 編集中のファイル名 関係するファイルなどが表示される ビルド結果などが表示される画面

#include "stdafx.h" #include <math.h> int _tmain(int argc, _TCHAR* argv[]) { double x; double y; char buf[256]; int i; double start_x; double step_x; FILE* fp; printf( "start_x =" ); fgets( buf, 256, stdin ); sscanf( buf, "%lf n", &start_x ); printf( "step_x =" ); fgets( buf, 256, stdin ); sscanf( buf, "%lf n", &step_x ); fp = fopen( "z: data.csv", "w" ); for( i = 0; i < 20; i++ ) { x = start_x + ( i * step_x ); y = ( 9.8 / 2.0 ) * x * x; printf( "x= %f, y= %f n", x, y ); fprintf( fp, "x=, %f, y=, %f n", x, y ); fprintf( stderr, "file z: data.csv created n" ); fclose( fp ); return 0; キーボードからのデータ読み込みを行っている部分 計算を行っている部分 ( 自由落下距離 ) ファイルへの書き出しを行っている部分

#include "stdafx.h" #include <math.h> int _tmain(int argc, _TCHAR* argv[]) { double x; double y; char buf[256]; int i; double start_x; double step_x; FILE* fp; printf( "start_x =" ); fgets( buf, 256, stdin ); sscanf( buf, "%lf n", &start_x ); printf( "step_x =" ); fgets( buf, 256, stdin ); sscanf( buf, "%lf n", &step_x ); fp = fopen( "z: data.csv", "w" ); for( i = 0; i < 20; i++ ) { x = start_x + ( i * step_x ); y = sin( x ); printf( "x= %f, y= %f n", x, y ); fprintf( fp, "x=, %f, y=, %f n", x, y ); fprintf( stderr, "file z: data.csv created n" ); fclose( fp ); return 0; 変数 x, y, buf, i, start_x, step_x, fp をメモリエリア中に確保 ここで変数を使用

#include "stdafx.h" #include <math.h> int _tmain(int argc, _TCHAR* argv[]) { Cプログラムはメイン関数から実行開始 double x; double y; char buf[256]; int i; double start_x; double step_x; FILE* fp; printf( "start_x =" ); fgets( buf, 256, stdin ); sscanf( buf, "%lf n", &start_x ); printf( "step_x =" ); fgets( buf, 256, stdin ); sscanf( buf, "%lf n", &step_x ); fp = fopen( "z: data.csv", "w" ); for( i = 0; i < 20; i++ ) { x = start_x + ( i * step_x ); y = sin( x ); printf( "x= %f, y= %f n", x, y ); fprintf( fp, "x=, %f, y=, %f n", x, y ); fprintf( stderr, "file z: data.csv created n" ); fclose( fp ); return 0; プログラムは順次実行 この部分は繰り返し処理 (for 文による繰り返し ) この部分を繰り返す 実行の流れが今日の授業のポイント

#include "stdafx.h" #include <math.h> int _tmain(int argc, _TCHAR* argv[]) { double x; double y; char buf[256]; int i; double start_x; double step_x; FILE* fp; printf( "start_x =" ); fgets( buf, 256, stdin ); sscanf( buf, "%lf n", &start_x ); printf( "step_x =" ); fgets( buf, 256, stdin ); sscanf( buf, "%lf n", &step_x ); fp = fopen( "z: data.csv", "w" ); for( i = 0; i < 20; i++ ) { x = start_x + ( i * step_x ); y = ( 9.8 / 2.0 ) * x * x; printf( "x= %f, y= %f n", x, y ); fprintf( fp, "x=, %f, y=, %f n", x, y ); fprintf( stderr, "file z: data.csv created n" ); fclose( fp ); return 0; C プログラムはメインの関数から実行開始 printf でメッセージを表示 fgets でキーボードから 1 行を読み込み sscanf で数値を読み取って変数に格納 printf でメッセージを表示 fgets でキーボードから 1 行を読み込み sscanf で数値を読み取って変数に格納 20 回の繰り返し (i = 0, 1,... 19) x の値から ( 9.8 / 2.0 ) * x * x を求め,y に書き込む

#include "stdafx.h" #include <math.h> int _tmain(int argc, _TCHAR* argv[]) { double x; double y; char buf[256]; int i; double start_x; double step_x; FILE* fp; printf( "start_x =" ); fgets( buf, 256, stdin ); sscanf( buf, "%lf n", &start_x ); printf( "step_x =" ); fgets( buf, 256, stdin ); sscanf( buf, "%lf n", &step_x ); fp = fopen( "z: data.csv", "w" ); for( i = 0; i < 20; i++ ) { x = start_x + ( i * step_x ); y = sin( x ); printf( "x= %f, y= %f n", x, y ); fprintf( fp, "x=, %f, y=, %f n", x, y ); fprintf( stderr, "file z: data.csv created n" ); fclose( fp ); return 0; 変数は 4 種類使っている 整数を扱う int 型 整数は, 5, -3, 0 など 文字を扱う char 型 文字は, 1, 0, 3, -, a など数字 (1, 0, 3 など ) も文字の一種 浮動小数を扱う double 型 3.14, -1.414, 5, 0, -3 など (5, 0, -3 などの整数も浮動小数の一種 ) ファイルポインタ ファイル操作に使う変数

#include "stdafx.h" #include <math.h> int _tmain(int argc, _TCHAR* argv[]) { double x; double y; char buf[256]; int i; double start_x; double step_x; FILE* fp; printf( "start_x =" ); fgets( buf, 256, stdin ); sscanf( buf, "%lf n", &start_x ); printf( "step_x =" ); fgets( buf, 256, stdin ); sscanf( buf, "%lf n", &step_x ); fp = fopen( "z: data.csv", "w" ); for( i = 0; i < 20; i++ ) { x = start_x + ( i * step_x ); y = sin( x ); printf( "x= %f, y= %f n", x, y ); fprintf( fp, "x=, %f, y=, %f n", x, y ); fprintf( stderr, "file z: data.csv created n" ); fclose( fp ); return 0; double 型の変数については, sscanf では %lf を,printf, fprintf では %f を, 使う決まりになっている 変数は 4 種類使っている 整数を扱う int 型 整数は, 5, -3, 0 など 文字を扱う char 型 文字は, 1, 0, 3, -, a など数字 (1, 0, 3 など ) も文字の一種 浮動小数を扱う double 型 3.14, -1.414, 5, 0, -3 など (5, 0, -3 などの整数も浮動小数の一種 ) ファイルポインタ ファイル操作に使う変数

Microsoft Visual Studio.NET の起動時に 既存のプロジェクトを開く ための画面が現れた場合 プロジェクト の名前を選びクリック ( 前回の授業で作成した プロジェクト を開いている )

C++ ソースファイルの編集 編集中のファイル名 関係するファイルなどが表示される 編集画面

実行ファイル はこのフォルダの中にある *.vcproj という名前のファイルは, プロジェクトファイル. ダブルクリックにより Visual Studio.NET が起動する 編集画面での編集の対象となる C++ ソースファイル 1 つのプロジェクトは, 複数のファイルからなる Windows で, プロジェクトの保存先のファイルを見た場合

ビルド による実行ファイルの生成 #include "stdafx.h" #include <math.h> int _tmain(int argc, _TCHAR* argv[]) { double x; double y; char buf[256]; int i; double start_x; double step_x; FILE* fp; printf( "start_x =" ); fgets( buf, 256, stdin ); sscanf( buf, "%lf n", &start_x ); printf( "step_x =" ); fgets( buf, 256, stdin ); sscanf( buf, "%lf n", &step_x ); fp = fopen( "z: data.csv", "w" ); for( i = 0; i < 20; i++ ) { x = start_x + ( i * step_x ); y = ( 9.8 / 2.0 ) * x * x; printf( "x= %f, y= %f n", x, y ); fprintf( fp, "x=, %f, y=, %f n", x, y ); fprintf( stderr, "file z: data.csv created n" ); fclose( fp ); return 0; C++ ソースファイル ビルド により実行ファイル等が生成される ビルド Microsoft Visual Studio.NET 実行ファイル その他, ビルドの結果として生成されるファイル その他のファイル 構文エラーがあると, ビルド 時にエラーメッセージが表示される ( 実行ファイルは生成されない )

消去 (clean) の操作 #include "stdafx.h" #include <math.h> int _tmain(int argc, _TCHAR* argv[]) { double x; double y; char buf[256]; int i; double start_x; double step_x; FILE* fp; printf( "start_x =" ); fgets( buf, 256, stdin ); sscanf( buf, "%lf n", &start_x ); printf( "step_x =" ); fgets( buf, 256, stdin ); sscanf( buf, "%lf n", &step_x ); fp = fopen( "z: data.csv", "w" ); for( i = 0; i < 20; i++ ) { x = start_x + ( i * step_x ); y = ( 9.8 / 2.0 ) * x * x; printf( "x= %f, y= %f n", x, y ); fprintf( fp, "x=, %f, y=, %f n", x, y ); fprintf( stderr, "file z: data.csv created n" ); fclose( fp ); return 0; C++ ソースファイル ビルド Microsoft Visual Studio.NET 実行ファイル その他, ビルドの結果として生成されるファイル その他のファイル 消去 (clean) の操作により, ビルドの結果が消える ( 元のソースファイル等は消えない )

消去 (clean) の操作 消去 (clean) の操作を行っても, 元のソースファイルが消えるわけでは無い ( ディスク使用量の節約になる )

構文エラーの例 全角文字 全角文字はプログラム中の決められた場所にしか入れてはならない コメント 文字列 ( ダブルクォートで囲まれた部分 ) " 抜け ; 忘れ など

ビルドが正常終了し, 実行ファイルが生成できたことを示すメッセージ ビルド結果が現れる. 1 正常終了,0 失敗 ならばビルドに成功

構文エラーの例 (1) ここでは, セミコロン ; を入れるのを忘れている ( 人間の目では発見が難しい ) ビルドが失敗したことを示すメッセージ 6 行目に構文エラー

構文エラーの例 (1) エラーの付近にマークが付く ここでは, セミコロン ; を入れるのを忘れている ( 人間の目では発見が難しい ) マウスで 構文エラー とある行をダブルクリックすると エラーの原因が表示される

構文エラーの例 (2) ここで, doublr とあるのはスペルミス ( 正しくは,double) ビルドが失敗したことを示すメッセージ ( ミスは 1 箇所なのに, エラーは多数 ) 10 行目に doublr : 定義されていない識別子です

データファイル プログラムでのファイル操作 ファイル生成 ファイル読み出し ファイル書き込み

#include "stdafx.h" #include <math.h> int _tmain(int argc, _TCHAR* argv[]) { double x; double y; char buf[256]; int i; double start_x; double step_x; FILE* fp; printf( "start_x =" ); fgets( buf, 256, stdin ); sscanf( buf, "%lf n", &start_x ); printf( "step_x =" ); fgets( buf, 256, stdin ); sscanf( buf, "%lf n", &step_x ); fp = fopen( "z: data.csv", "w" ); for( i = 0; i < 20; i++ ) { x = start_x + ( i * step_x ); y = ( 9.8 / 2.0 ) * x * x; printf( "x= %f, y= %f n", x, y ); fprintf( fp, "x=, %f, y=, %f n", x, y ); 自由落下距離 のプログラムを実行するとデータファイルが生成される データファイルに関係している部分 fprintf( stderr, "file z: data.csv created n" ); fclose( fp ); return 0; C++ ソースファイル ビルド 実行ファイル Microsoft Visual Studio.NET データファイル その他のファイル 自由落下距離のプログラムを実行すると, データファイル data.csv が生成される

例題 1. 自由落下距離 自由落下距離 のプログラムについて, 実行順を確認するとともに, 変数の値の変化を観察する Microsoft Visual Studio.NET のステップ実行機能を使用 前回の授業で作成した プロジェクト を開く 注 ) 次の場合には, 開けないので, 前回の授業の手順を繰り返して, プロジェクトを作る z ドライブあるいは a ドライブに保存していなかったとき ( 九州大のパソコンの場合 )

#include "stdafx.h" #include <math.h> int _tmain(int argc, _TCHAR* argv[]) { double x; double y; char buf[256]; int i; double start_x; double step_x; 前回の授業の例題 1 FILE* fp; printf( "start_x =" ); と同じ fgets( buf, 256, stdin ); sscanf( buf, "%lf n", &start_x ); printf( "step_x =" ); fgets( buf, 256, stdin ); sscanf( buf, "%lf n", &step_x ); fp = fopen( "z: data.csv", "w" ); for( i = 0; i < 20; i++ ) { x = start_x + ( i * step_x ); y = ( 9.8 / 2.0 ) * x * x; printf( "x= %f, y= %f n", x, y ); fprintf( fp, "x=, %f, y=, %f n", x, y ); fprintf( stderr, "file z: data.csv created n" ); fclose( fp ); return 0;

1 #include "stdafx.h" #include <math.h> int _tmain(int argc, _TCHAR* argv[]) { double x; 2 3 4 5 6 7 8 9 123 10 124 11 125 12 126 13 127 14 128 129 130 131 132 double y; char buf[256]; int i; double start_x; double step_x; FILE* fp; printf( "start_x =" ); fgets( buf, 256, stdin ); sscanf( buf, "%lf n", &start_x ); printf( "step_x =" ); fgets( buf, 256, stdin ); sscanf( buf, "%lf n", &step_x ); fp = fopen( "z: data.csv", "w" ); Visual Studio.NET のステップ実行で観察したステップ実行の順序 実際に確認しよう for( i = 0; i < 20; i++ ) { x = start_x + ( i * step_x ); y = ( 9.8 / 2.0 ) * x * x; printf( "x= %f, y= %f n", x, y ); fprintf( fp, "x=, %f, y=, %f n", x, y ); fprintf( stderr, "file z: data.csv created n" ); fclose( fp ); return 0; 20 回の繰り返し (i = 0, 1,... 19)

ビルド後の画面 ビルドの手順 : ビルド のビルド ビルドが正常終了しないときは, プログラム中の構文エラーを疑う ビルドが正常終了したことを示すメッセージ 1. 正常終了 を確認

実行を示すマーク 実行ウインドウが開く F10 キーを押すとステップ実行が始まる.( マウスカーソルは, Microsoft Visual Studio.NET 内に入れておく )

マークが進む 変数の値を観察できる さらに F10 キーを押すとステップ実行が続く

表示されたメッセージ printf( "start_x=" ); の実行が終わったので, メッセージが出る マークが進む 変数の値を観察できる さらに F10 キーを押すとステップ実行が続く

マークは消える ( 正常な動作 ) 入力待ち状態 ( fgets( buf, 256, stdin ); の実行が終わったので, 実行ウインドウにおけるキーボードからの入力待ち状態に入っている ) 変数の値を観察できる さらに F10 キーを押すとステップ実行が続く ( 今度は入力待ち状態 )

ここでは 0 Enter 実行ウインドウで, 0 Enter とすると, ステップ実行が再開する マークが現れる 読み込んだデータが変数 buf に入ったことが確認できる 実行ウインドウで 0 Enter とすると実行が続く (0 の部分は数値なら何でも良い )

実行手順 ( 通常実行の場合 ) Microsoft Visual Studio.NET で デバック 開始 すると, 新しいウインドウが開く 新しいウインドウが現れるので, start_x, step_x の値をキーボードから与える例えば start_x = 0 step_x = 0.1 ウインドウは消えるが,z: ドライブに data.csv ( データファイル ) が作成されるので,Excel 等で開き確認する

実行手順 ( ステップ実行の場合 ) Microsoft Visual Studio.NET で F10( ファンクションの 10) すると, 新しいウインドウが開く F10 は,Microsoft Visual Studio. NET のウインドウ内にマウスカーソルを入れた状態で押すこと F10 を押すたびに,1 ステップずつ実行が進む

補足説明 マークが, 最後の に来たときに, F10 を押すと

補足説明 画面が切り替わる ( これは正常な動作 ) この授業では関係無いので, F10 を押し続ける ( すると, 元の状態に復帰する )

例題 2. 平方根の計算 浮動小数データを読み込んで, 平方根の計算と表示を行うプログラムを作る. 但し, 負の数の場合には, メッセージを表示する 負の数であるかどうかによって条件分岐を行うため に if 文を使う. 例 ) 9のとき : 3-1のとき: メッセージを表示

#include "stdafx.h" #include <math.h> int _tmain(int argc, _TCHAR* argv[]) { double x; double y; char buf[256]; int ch; printf("x="); fgets( buf, 256, stdin ); sscanf( buf, "%lf n", &x ); if ( x < 0 ) { printf(" 負なので計算できません n"); else { y = sqrt(x); printf("sqrt(%f)=%f n", x, y); ch = getchar(); ch = getchar(); return 0; 条件式 条件が成り立つ場合に実行される部分条件が成り立たない場合に実行される部分

#include "stdafx.h" #include <math.h> int _tmain(int argc, _TCHAR* argv[]) { double x; double y; char buf[256]; int ch; printf("x="); fgets( buf, 256, stdin ); sscanf( buf, "%lf n", &x ); if ( x < 0 ) { printf(" 負なので計算できません n"); else { y = sqrt(x); printf("sqrt(%f)=%f n", x, y); ch = getchar(); ch = getchar(); return 0; 変数は 3 種類使っている 整数を扱う int 型 整数は, 5, -3, 0 など 文字を扱う char 型 文字は, 1, 0, 3, -, a など数字 (1, 0, 3 など ) も文字の一種 浮動小数を扱う double 型 3.14, -1.414, 5, 0, -3 など (5, 0, -3 などの整数も浮動小数の一種 ) 変数 x は double 型なので, sscanf では %lf を,printf では %f を, 使う決まりになっている

実行順 (x<0) の場合 1{ #include "stdafx.h" #include <math.h> int _tmain(int argc, _TCHAR* argv[]) 2 3 4 5 6 7 8 9 10 11 double x; double y; char buf[256]; int ch; printf("x="); fgets( buf, 256, stdin ); sscanf( buf, "%lf n", &x ); if ( x < 0 ) { printf(" 負なので計算できません n"); else { y = sqrt(x); printf("sqrt(%f)=%f n", x, y); ch = getchar(); ch = getchar(); return 0;

実行順 (x 0) の場合 1{ #include "stdafx.h" #include <math.h> int _tmain(int argc, _TCHAR* argv[]) 2 3 4 5 6 7 8 9 10 11 double x; double y; char buf[256]; int ch; printf("x="); fgets( buf, 256, stdin ); sscanf( buf, "%lf n", &x ); if ( x < 0 ) { printf(" 負なので計算できません n"); else { y = sqrt(x); printf("sqrt(%f)=%f n", x, y); ch = getchar(); ch = getchar(); return 0;

平方根の計算 マークが if ( x < 0 ) { に来たときに, F10 を押すと 変数 x の値

y = sqrt(x); の行にジャンプする 変数 x の値

条件分岐とは 条件式 Yes No B A ある条件式 が成り立てば A を 成り立たなければ B を実行

if 文と else 文 if ( 条件式 ) { 式 ; A...; else { 式 ;...; B 条件式 B No Yes A 条件式 が成り立てば A を 成り立たなければ B を実行

if 文 if ( 条件式 ) { 式 ; A...; 条件式 No Yes A if 文のみを書いて,else 文を書かないこともできる ある条件 が成り立つときに限り A を実行

比較演算 条件式の中には, ふつう, 比較演算を書く 演算子意味 < 左辺が右辺より小さい <= 左辺が右辺以下 > 左辺が右辺より大きい >= 左辺が右辺以上 == 左辺が右辺と等しい!= 左辺が右辺と等しくない

比較演算の例 左辺が右辺以上 の意味 if (age >= 20 ){ printf("you may drink alcoholic beverage. "); else{ printf("you may not drink alcoholic beverage.");

字下げとセミコロンを忘れないこと セミコロンを忘れると プログラムは動かない 字下げを忘れると プログラムは動くが, 読みづらい 字下げ 字下げ if ( 条件式 ) { 文 ;...; セミコロン if ( 条件式 ) { 文 ;...; else { 文 ;...; セミコロン

例題 3. 棒グラフでのステップ実行 整数から, その長さだけの棒を表示する関数 bar を作る 例 ) 5 ***** 関数 bar を使って, 整数を読み込んで, 読み込んだ長さの棒を表示するメイン関数を作る ステップ実行 ( F10 キー ) を行う 注意点今までのプロジェクトを使ってもよい. 新しいプロジェクトを作成してもよい

棒グラフ #include "stdafx.h" #include <math.h> void bar( int len ) { int i; for (i=0; i<len; i++) { printf("*"); printf(" n"); return; int _tmain(int argc, _TCHAR* argv[]) { int len; char buf[256]; int ch; printf( "len =" ); fgets( buf, 256, stdin ); sscanf( buf, "%d n", &len ); bar( len ); ch = getchar(); ch = getchar(); return 0;

棒グラフ #include "stdafx.h" #include <math.h> void bar( int len ) { int i; for (i=0; i<len; i++) { printf("*"); bar 関数 printf(" n"); return; int _tmain(int argc, _TCHAR* argv[]) { int len; char buf[256]; int ch; printf( "len =" ); fgets( buf, 256, stdin ); sscanf( buf, "%d n", &len ); bar( len ); ch = getchar(); ch = getchar(); return 0; 複数の関数を含むプログラム プログラム実行はメイン関数から始まる main 関数

#include "stdafx.h" #include <math.h> void bar( int len ) { int i; for (i=0; i<len; i++) { printf("*"); printf(" n"); return; int _tmain(int argc, _TCHAR* argv[]) { int len; char buf[256]; int ch; printf( "len =" ); fgets( buf, 256, stdin ); sscanf( buf, "%d n", &len ); bar( len ); ch = getchar(); ch = getchar(); return 0; 変数は 2 種類使っている 整数を扱う int 型 整数は, 5, -3, 0 など 文字を扱う char 型 文字は, 1, 0, 3, -, a など数字 (1, 0, 3 など ) も文字の一種 変数 len は int 型なので, sscanf では %d を使う決まりになっている

ビルド後の画面 ビルドの手順 : ビルド のビルド ビルドが正常終了しないときは, プログラム中の構文エラーを疑う ビルドが正常終了したことを示すメッセージ

ステップ実行 F10 キーを押すとステップ実行が始まる.( マウスカーソルは, Microsoft Visual Studio.NET 内に入れておく )

マークが進む 変数の値が変化する さらに F10 キーを押すとステップ実行が続く

さらに F10 キーを押すとステップ実行が続く

実行ウインドウで 5 Enter とすると実行が続く (5 の部分は整数なら何でも良い )

さらに F10 キーを押すとステップ実行が続く

さらに F10 キーを押すとステップ実行が続く

さらに F10 キーを押すとステップ実行が続く

実行ウインドウで Enter とすると実行が続く

さらに F10 キーを押すとステップ実行が続く

さらに F10 キーを押すとステップ実行が続く

さらに F10 キーを押すとステップ実行が続く

F10 キーを押し続けると元に戻る

例題 3(b). 棒グラフでのステップイン ステップ実行とステップインを行う ステップ実行 ( F10 キー ) ステップイン ( F11 キー ) 例題 2 のプログラムをそのまま使う

プログラム実行順 普通, プログラム中の文は, 上から下へ順 に実行される このことは,C 言語が 手続き型言語 と言われる理由の 1 つ 関数呼び出しでは, 関数の先頭に ジャンプ する. 関数呼び出しの例 bar( len ); 呼び出された関数の中で return 文に出会うと, 関数呼び出しの場所に戻る.

プログラムの流れ プログラムの実行開始 メイン関数 関数呼び出し bar( len ); #include "stdafx.h" #include <math.h> void bar( int len ) { int i; for (i=0; i<len; i++) { printf("*"); printf(" n"); return; int _tmain(int argc, _TCHAR* argv[]) { int len; int ch; printf( "len=" ); scanf( "%d", &len ); bar( len ); ch = getchar(); ch = getchar(); return 0; bar 関数 プログラムの実行終了 return; * printf, scanf の呼び出しについては図では省略

#include "stdafx.h" #include <math.h> void bar( int len ) { int i; for (i=0; i<len; i++) { printf("*"); 5 printf(" n"); 6 return; 戻り 4 int _tmain(int argc, _TCHAR* argv[]) { int len; int ch; 1 printf( "len=" ); 23 scanf( "%d", &len ); bar( len ); 関数呼び出し 7 8 9 ch = getchar(); ch = getchar(); return 0; プログラム実行順 メイン関数の先頭行がプログラム実行の始まり メイン関数内の return がプログラム実行の終わり

ステップイン機能 マークが bar( len ); の行に来たときに F11 キーを押して, ステップイン機能を使う

ステップイン機能 マークが bar 関数の内部に移る ( 後は, F10 キーでステップ実行を続ける )

補足説明事項

ブレークポイント Microsoft Visual Studio.NET のブレークポイント機能を試す ブレークポイント

Microsoft Visual Studio.NET でのブレークポイント設定 ここをクリックして, ブレークポイントの設定 はブレークポイント設定済みの印 ブレークポイントでプログラム実行が中断するので, 実行結果の画面が消えずに残る