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

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

PowerPoint Presentation

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

Microsoft Word - no11.docx

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

講習No.1

プログラミング実習I

PowerPoint プレゼンテーション

Microsoft PowerPoint - kougi2.ppt

計算機プログラミング

02: 変数と標準入出力

C言語入門

Microsoft PowerPoint - 10Com2.ppt

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

Microsoft Word - no15.docx

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

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

memo

Prog1_12th

kiso2-09.key

Microsoft Word - no103.docx

PowerPoint Presentation

PowerPoint プレゼンテーション

ポインタ変数

Microsoft PowerPoint - prog04.ppt

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

Microsoft PowerPoint - prog06.ppt

DVIOUT

情報処理演習 B8クラス

プログラミング実習I

2006年10月5日(木)実施

講習No.12

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

ポインタ変数

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

cp-7. 配列

slide5.pptx

メソッドのまとめ

スライド 1

Microsoft PowerPoint - kougi4.ppt

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

Prog1_6th

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdiu.h> #define InFile "data.txt" #define OutFile "surted.txt" #def

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

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

02: 変数と標準入出力

PowerPoint プレゼンテーション

Microsoft PowerPoint - bp02.ppt

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

PowerPoint Presentation

関数の動作 / printhw(); 7 printf(" n"); printhw(); printf("############ n"); 4 printhw(); 5 関数の作り方 ( 関数名 ) 戻り値 ( 後述 ) void である. 関数名 (

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

* ライブラリ関数 islower(),toupper() を使ったプログラム 1 /* 2 Program : trupper.c 3 Student-ID : K 4 Author : TOUME, Kouta 5 Comments : Used Library function i

Microsoft Word - 03

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

PowerPoint プレゼンテーション - 物理学情報処理演習

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

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

Microsoft Word - 3new.doc

gengo1-11

memo

Microsoft PowerPoint - C_Programming(3).pptx

Microsoft PowerPoint - å®�æ−•è©¦é¨fi3ㆮ対ç�Œ.pptx

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdio.h> #define InFile "data.txt" #define OutFile "sorted.txt" #def

演算増幅器

プログラミング方法論 II 第 14,15 回 ( 担当 : 鈴木伸夫 ) 問題 17. x 座標と y 座標をメンバに持つ構造体 Point を作成せよ 但し座標 は double 型とする typedef struct{ (a) x; (b) y; } Point; 問題 18. 問題 17 の

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

gengo1-12

CプログラミングI

Java講座

物質工学科 田中晋

PowerPoint プレゼンテーション

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

<4D F736F F D20438CBE8CEA8D758DC03389F0939A82C282AB2E646F63>

kiso2-03.key

デバッグの工夫

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

ファイル入出力

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

ポインタ変数

コマンドラインから受け取った文字列の大文字と小文字を変換するプログラムを作成せよ 入力は 1 バイトの表示文字とし アルファベット文字以外は変換しない 1. #include <stdio.h> 2. #include <ctype.h> /*troupper,islower,isupper,tol

Microsoft PowerPoint - 3.pptx

Microsoft PowerPoint - kougi6.ppt

1. 入力した文字列を得る 1.1. 関数 scanf() を使う まずは関数 scanf() を使ったプログラムを作ってみましょう 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: #include<stdio.h> #define SIZE 128 main(

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

gengo1-2

講習No.10

Microsoft Word - no202.docx

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

PowerPoint プレゼンテーション

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

Microsoft Word - no204.docx

※ ポイント ※

gengo1-10

gengo1-12

6 関数 6-1 関数とは少し長いプログラムを作るようになると 同じ処理を何度も行う場面が出てくる そのたびに処 理を書いていたのでは明らかに無駄であるし プログラム全体の見通しも悪くなる そこで登場す るのが 関数 である 関数を使うことを 関数を呼び出す ともいう どのように使うのか 実際に見て

プログラミング入門1

第2回講義:まとめ

1 C STL(1) C C C libc C C C++ STL(Standard Template Library ) libc libc C++ C STL libc STL iostream Algorithm libc STL string vector l

のプログラムはそのままでは 人間は理解できても コンピュータは理解できません 皆さんが作るプログラムはソースプログラム ( ソースファイル ) と呼ばれます C 言語では *.c という形式にファイルで作成します そのソースプログラムをコンピュータが理解できるようなデータ形式に変換することをコンパイ

Transcription:

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

前回のレポートから 前回の宿題 数あてゲーム の説明において 次のように書いていたものがいた : これはコンピュータがランダムに設定した数字を人間が当てるゲームである この説明でどこかおかしなところはないだろうか? 2

コンピュータの用語と日常的な用語の違い 物理において 力 というのは日常語の 力 とは違うものだ という話を 物理学 でしたのは覚えているだろうか??? ここでは 数 と 数字 がそれにあたる 2 は数だろうか 数字だろうか? それでは 20 は数だろうか 数字だろうか? 似た例では 文字 と 文字列 がある a は文字だろうか 文字列だろうか ( 単語 ) apple は文字だろうか 文字列だろうか 実はいずれも文字列ではなく C の意味の 文字 でもない 3

1.C プログラムを観察しよう おなじみのプログラム : これは何をするものか? # include<stdio.h> int main(void) { printf("hello, world! n"); } return 0; 4

2.C の流儀を理解しよう 実行開始の場所と終了の場所 main は C プログラムのエントリーポイント かつ終了の場所 Cプログラムは関数の集まり関数我々の知っている関数の例 : sin cos log 数学的には f(x) とか g(x,y) のように書かれる 引数 ( ひきすう, argument) 基本的に関数とは 引数をとり 何らかの計算をして 値を返す (return) もの 5

3.C のプログラムを見てみよう 1: #include <stdio.h> ヘッダファイルの取込 2: #include <stdlib.h> 3: 4: int factorial(int n); factorial 関数の宣言 5: 6: int main(int argc, char *argv[]) main 関数の定義 7: { 8: int x, n; 9: 10: if (argc < 2) { 変数の宣言 条件文 11: fprintf(stderr, Usage: %s number n, argv[0]); 12: return 1; 13: } 14: n = atoi(argv[1]); 15: x = factorial(n); factorial 関数の呼出 16: printf( %d! = %d n, n, x); 17: return 0; 18: } 値の戻し (return) 19: 20: int factorial(int n) 21: { 22: int i, x = 1; 23: 24: for (i = 2; i <= n; i++) 25: x *= i; 26: return x; 27: } 註 :factorial 階乗 factorial 関数の定義 変数の宣言 繰り返し文 値の戻し (return) 関数を使うには 事前に宣言 定義されていないといけない 6

1: #include <stdio.h> 4.C プログラムの構造解析 (1) ヘッダファイル (2) 関数宣言 (3) main 関数定義 (4) main 関数以外の関数 ( ここではfactorial) 定義 2: #include <stdlib.h> 3: 4: int factorial(int n); 5: 6: int main(int argc, char *argv[]) 7: { 8: int x, n; 9: 10: if (argc < 2) { 11: fprintf(stderr, Usage: %s number n, argv[0]); 12: return 1; 13: } 14: n = atoi(argv[1]); 15: x = factorial(n); 16: printf( %d! = %d n, n, x); 17: return 0; 18: } 19: 20: int factorial(int n) 21: { 22: int i, x = 1; 23: 24: for (i = 2; i <= n; i++) 25: x *= i; 26: return x; 27: } 7

ちょっと複雑な C プログラム 1: #include <stdio.h> 2: #include <stdlib.h> 3: 4: int factorial(int n); 5: 6: int main(int argc, char *argv[]) 7: { 8: int x, n; 9: 10: if (argc < 2) { 11: fprintf(stderr, Usage: %s number n, argv[0]); 12: return 1; 13: } 14: n = atoi(argv[1]); 15: x = factorial(n); 16: printf( %d! = %d n, n, x); 17: return 0; 18: } 19: 20: int factorial(int n) 21: { 22: int i, x = 1; 23: 24: for (i = 2; i <= n; i++) 25: x *= i; 26: return x; 27: } 参考 : stdio.h で宣言されているもの : stderr, fprintf, printf stdlib.h で宣言されているもの : atoi 関数を使うには 事前に宣言 定義されていないといけない 8

1: #include <stdio.h> このプログラムの構造 2: #include <stdlib.h> 3: 4: int factorial(int n); main 関数 fprintf atoi factorial printf factorial 関数 stdio stdlib factorial stdio 5: 6: int main(int argc, char *argv[]) 7: { 8: int x, n; 9: 10: if (argc < 2) { 11: fprintf(stderr, Usage: %s number n, argv[0]); 12: return 1; 13: } 14: n = atoi(argv[1]); 15: x = factorial(n); 16: printf( %d! = %d n, n, x); 17: return 0; 18: } 19: 20: int factorial(int n) 外部関数 : fprintf, atoi, printf ユーザー定義の関数 : factorial 注 : = は関数ではない return, if, for, while もそう 21: { 22: int i, x = 1; 23: 24: for (i = 2; i <= n; i++) 25: x *= i; 26: return x; 27: } 9

5. 関数の構造関数の定義 宣言 6: int main(int argc, char *argv[]) 7: { 8: int x, n; 9: 10: if (argc < 2) { 11: fprintf(stderr, Usage: %s number n,argv[0]); 12: return 1; 13: } 14: n = atoi(argv[1]); 15: x = factorial(n); 16: printf( %d! = %d n, n, x); 17: return 0; 18: } 関数の型 関数名 引数の宣言 関数本体全体を波括弧 {} でくくる 変数宣言 ブロックまたは実行文文の終わりは ; return 文で値を返す 上から順に文を実行 10

6.C プログラムは文字で作る プログラミングには キーボードから文字を入力 テキストエディタを用いる : TeraPad, 秀丸 Emacs, Vi, プログラム開発環境 : Visual Studio, Eclipse, プログラムを素早く正確にタイピングする能力はとても大事 11

7.C は英語とは違う でも 英語の省略形をよく使っているので英語が分かっていると プログラムもわかりやすい n --- nは newline( 改行 ) の頭文字 t --- tは tab ( タブ ) h --- header ( ヘッダ ) io --- input/output ( 入力 出力 ) lib --- library( ライブラリ ) std --- standard ( 標準 ) int --- integer ( 整数 ) float --- floating point number ( 浮動小数点数 ) stdio.h = standard input/output header stdlib.h = standard library header 12

8. プログラムの音読のすすめ 実際に読んでみましょう ( 注 : カッコ コッカは 開きカッコ 閉じカッコ の略) # include<stdio.h> int main(void) { printf("hello, world! n"); } return 0; 波コッカ ( 中コッカ ) シャープインクルードかぎカッコスタンダード アイ オーピリオドエイチかぎコッカ イントメインカッコボイドコッカ リターンゼロセミコロン 波カッコ ( 中カッコ ) プリントエフカッコダブルクォーテーションヘローコンマワールドエクスクラメーション円マークエヌダブルクォーテーションコッカセミコロン 13

9.C の単語の読み方 読んでみましょう ----- stdio.h stdlib.h int argc argv fprintf atoi printf 元の単語を書いてみましょう ヒント : argument counter vector ヒント : ascii to integer 14

記号に慣れよう 一つで意味を持つもの #, * ; < = ++ -- *= += -= など 2 つで意味を持つもの ( いろいろな括弧に意味あり ) < > ( ) [ ] { } 括弧以外にも : " " ' ' 読めるかな?!= 15

10. 英字の省略形に慣れよう printf --- fprintf sprintf print formatted f: file s: string scanf --- fscanf sscanf scan formatted stdio --- stdin standard input output stdout stderr stdlib 16

11. インデント ( 字下げ ) を理解しよう 1) カッコで囲まれた範囲が一目で分かるようにする 2) 制御文の範囲が一目で分かるようにする インデントのルール 1) { が始まると 1 段下げる 2) } で閉じると 1 段戻る 3) for, while, if, else で制御される範囲は { } がなくても1 段下げるその次の行は1 段戻る インデントにはいくつかの流儀があり どれが一番とは言えません 自分にあった流儀を身につけてください ( でも必要!) 17

練習 : このプログラムを読んでみよう 読みにくいところはあるか? 1: #include <stdio.h> 2: #include <stdlib.h> 3: 4: int factorial(int n); 5: 6: int main(int argc, char *argv[]) 7: { 8: int x, n; 9: 10: if (argc < 2) { 11: fprintf(stderr, Usage: %s number n, argv[0]); 12: return 1; 13: } 14: n = atoi(argv[1]); 15: x = factorial(n); 16: printf( %d! = %d n, n, x); 17: return 0; 18: } 19: 20: int factorial(int n) 21: { 22: int i, x = 1; 23: 24: for (i = 2; i <= n; i++) 25: x *= i; 26: return x; 27: } 18

練習 : このプログラムの 意味 をとって読んでみよう 1: #include <stdio.h> 2: #include <stdlib.h> 標準入力と標準ライブラリのヘッダファイルを取り込む 19: 20: int factorial(int n) 整数の引数を取り 値として整数を返す関数 factorialを定義 3: 21: { 4: int factorial(int n); 整数の引数を取り 値として整数型の変数 iとxを宣言 xには整数を返す関数 factorialを宣言 22: int i, x = 1; 初期値として1を代入 5: 23: 6: int main(int argc, char *argv[]) 24: for (i = 2; i <= n; i++) iが2からnまで繰り返し 7: { 整数の引数 argcと文字配列 argv 25: x *= i; xにiを掛け算した結果をを引数とするmain 関数を定義 8: int x, n; xに代入 26: return x; 9: 整数型変数 xとnを宣言 xの値を関数 factorialの 27: } 10: if (argc < 2) { argcの値が2 未満なら戻り値とする 11: fprintf(stderr, Usage: %s number n, argv[0]); 12: return 1; 標準エラー出力 (stderr) に引数の個数が足りないとして使用法を表示し, エラー番号 1を返す 13: } 14: n = atoi(argv[1]); mainの引数を数に変換して変数 nに代入関数 factorialにこの値を与えて計算 その結果をxに代入 15: x = factorial(n); 16: printf( %d! = %d n, n, x); 17: return 0; 18: } n の階乗の値が x という表示を行い 正常終了 19

演習問題 1. プログラミングに使われる以下の単語の 英語訳 ( 本当は 英語の単語が先にあって 日本語に訳されたのですが ) を答えよ 1. 引数 2. 戻り値 ( 返却値 ) 3. 変数 4. 整数 5. 文字 6. 文字列 7. 配列 20

演習問題 2. 以下の単語の読み方とCプログラミングにおける意味を書け 1. text 解答例 : テキスト ( 文字で書かれたデータ ) 2. editor 3. standard 4. input 5. output 6. print 7. format 8. comment 9. function 21

練習問題 3. 次のプログラムを 読んでみよ #include <stdio.h> int main(void) { int i,j; printf("input two numbers :"); scanf("%d %d", &i, &j); printf("%d * %d = %d n", i, j, i*j); return 0; } 22