Microsoft PowerPoint - prog03.ppt

Similar documents
Microsoft PowerPoint ppt

Microsoft PowerPoint - prog04.ppt

Microsoft PowerPoint - prog03.ppt

Microsoft PowerPoint - prog08.ppt

Microsoft PowerPoint - prog07.ppt

Microsoft PowerPoint - prog06.ppt

プログラミング実習I

ファイル入出力

ファイル入出力

ポインタ変数

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

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

Microsoft PowerPoint - prog04.ppt

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

Microsoft PowerPoint - 5Chap15.ppt

Microsoft Word - no103.docx

講習No.1

PowerPoint Presentation

ポインタ変数

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

PowerPoint プレゼンテーション

02: 変数と標準入出力

Microsoft PowerPoint - exp2-02_intro.ppt [互換モード]

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

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

PowerPoint プレゼンテーション

02: 変数と標準入出力

Microsoft Word - 3new.doc

Microsoft Word - no15.docx

JavaプログラミングⅠ

Microsoft PowerPoint - prog09.ppt

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

基礎プログラミング2015

Microsoft PowerPoint - prog08.ppt

Microsoft PowerPoint - prog09.ppt

02: 変数と標準入出力

情報処理演習 B8クラス

Microsoft Word - no202.docx

メソッドのまとめ

4 月 東京都立蔵前工業高等学校平成 30 年度教科 ( 工業 ) 科目 ( プログラミング技術 ) 年間授業計画 教科 :( 工業 ) 科目 :( プログラミング技術 ) 単位数 : 2 単位 対象学年組 :( 第 3 学年電気科 ) 教科担当者 :( 高橋寛 三枝明夫 ) 使用教科書 :( プロ

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

Microsoft PowerPoint - prog13.ppt

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

Microsoft PowerPoint - prog11.ppt

cp-7. 配列

PowerPoint プレゼンテーション

計算機プログラミング

Microsoft PowerPoint - prog08.ppt

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

講習No.9

gengo1-11

解答編 第 9 章文字データの取り扱い 演習問題 9.1 文法事項 1 ) コンピュータにおける 文字データの取り扱いについて説明しなさい コンピュータでは 文字に整数の番号を割り当てて ( コード化して ) 文字コードとして扱います 実際に用いられる文字コードとして ASCII コード EUC コ

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

物質工学科 田中晋

プログラミング基礎

memo

gengo1-2

第2回講義:まとめ

memo

2006年10月5日(木)実施

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

ポインタ変数

C 言語講座 Vol 年 5 月 29 日 CISC

Microsoft PowerPoint - lec10.ppt

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

第1回 プログラミング演習3 センサーアプリケーション

プログラミング実習I

PowerPoint Presentation

PowerPoint プレゼンテーション

< F2D837C E95CF CF68A4A94C5816A2E6A>

Microsoft Word - no11.docx

Microsoft PowerPoint - 11.pptx

初歩のC言語ターミナル_2014_May.pages

1. 入力した正の整数を降順に並べ換えて出力するプログラムを作成せよ プログラムは個別にコンパイルし make コマンドで実行すること 入力データは 50 以下とし 以下の数が混在しているとする 16 進数 : 先頭 1 文字が x または X( エックスの小文字か大文字 ) 8 進数 : 先頭 1

Java講座

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

Microsoft PowerPoint - prog05.ppt

プログラミングI第10回

演算増幅器

PowerPoint プレゼンテーション

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

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

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

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

2 ASCII コードと文字型変数 2-1 ASCII コード 文字 コードコードコードコードコードコードコードコード文字文字文字文字文字文字文字 10 進 10 進 10 進 10 進 10 進 10 進 10 進 10 進 0 16 SP P 80 ` 96 p 112

gengo1-8

PowerPoint プレゼンテーション

Prog1_12th

情報処理Ⅰ

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

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

Microsoft Word - report#8.docx

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

講習No.12

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

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

ポインタ変数

Report#2.docx

情報処理Ⅰ演習

Transcription:

プログラミング言語 2 第 03 回 (2007 年 05 月 07 日 ) 今日の配布物 片面の用紙 1 枚 今日の課題が書かれています 本日の出欠を兼ねています 1

今日やること hp://www.nlab.ice.uec.ac.jp/~s-okubo/class/language/ にアクセスすると 教材があります 2007 年 05 月 07 日分と書いてある部分が 本日の教材です 本日の内容 先週の課題の簡単な解凍 アドレスとポインタ C 言語におけるにおける文字列 標準入力からのからの書式付書式付き入力 第 2 回の課題の簡単な解説 sring[0] sring[1] sring[2] sring[3] sring[4] sring[5] sring[6] sring[7] sring[8] sring[9] sring[10] 21:main(){ 22: 22: char char sring[11]; 23: 23: in ini; i; 24: 24: 25: 25: scanf("%10s",sring); 26: 26: prinf("%s n",sring); 22 行目 : サイズ 11 の整数型の配列 sring を宣言 23 行目 : 整数 i を宣言 2

第 2 回の課題の簡単な解説 sring[0] sring[1] sring[2] sring[3] sring[4] sring[5] sring[6] sring[7] sring[8] sring[9] sring[10] E S 21:main(){ 22: 22: char char sring[11]; 23: 23: in ini; i; 24: 24: 25: 25: scanf("%10s",sring); 26: 26: prinf("%s n",sring); 25 行目 : 標準入力から sring に文字列を代入 26 行目 : 試しに 出力してみる 第 2 回の課題の簡単な解説 sring[0] sring[1] sring[2] sring[3] sring[4] sring[5] sring[6] sring[7] sring[8] sring[9] sring[10] E S 28: 28: while while (sring[i]!=!=''){ 29: 29: if if (sring[i] >= >= 'A' 'A'&& sring[i] <= <= 'Z') 'Z'){ 30: 30: sring[i] = Aoa(sring[i]); 31: 31: }else }else if if (sring[i] >= >= 'a' 'a'&& sring[i] <= <= 'z') 'z'){ 32: 32: sring[i] = aoa(sring[i]); 33: 33: } 34: 34: i++; i++; 35: 35: } 27 行目 :i に 0 代入 sring[i] は suring[0] を意味するように 3

第 2 回の課題の簡単な解説 sring[0] sring[1] sring[2] sring[3] sring[4] sring[5] sring[6] sring[7] sring[8] sring[9] sring[10] E S 28: 28: while while (sring[i]!=!=''){ 29: 29: if if (sring[i] >= >= 'A' 'A'&& sring[i] <= <= 'Z') 'Z'){ 30: 30: sring[i] = Aoa(sring[i]); 31: 31: }else }else if if (sring[i] >= >= 'a' 'a'&& sring[i] <= <= 'z') 'z'){ 32: 32: sring[i] = aoa(sring[i]); 33: 33: } 34: 34: i++; i++; 35: 35: } 28 行目 :sring[i] が でない限り繰り返す i=0 であり sring[0] は なので続ける 第 2 回の課題の簡単な解説 sring[0] sring[1] sring[2] sring[3] sring[4] sring[5] sring[6] sring[7] sring[8] sring[9] sring[10] E S 28: 28: while while (sring[i]!=!=''){ 29: 29: if if (sring[i] >= >= 'A' 'A'&& sring[i] <= <= 'Z') 'Z'){ 30: 30: sring[i] = Aoa(sring[i]); 31: 31: }else }else if if (sring[i] >= >= 'a' 'a'&& sring[i] <= <= 'z') 'z'){ 32: 32: sring[i] = aoa(sring[i]); 33: 33: } 34: 34: i++; i++; 35: 35: } 29 行目 :sring[i] が A 以上 Z 以下であるか判定 つまり 大文字かどうかを判定 今回は小文字なので 次の文は通過する 4

第 2 回の課題の簡単な解説 sring[0] sring[1] sring[2] sring[3] sring[4] sring[5] sring[6] sring[7] sring[8] sring[9] sring[10] E S 28: 28: while while (sring[i]!=!=''){ 29: 29: if if (sring[i] >= >= 'A' 'A'&& sring[i] <= <= 'Z') 'Z'){ 30: 30: sring[i] = Aoa(sring[i]); 31: 31: }else }else if if (sring[i] >= >= 'a' 'a'&& sring[i] <= <= 'z') 'z'){ 32: 32: sring[i] = aoa(sring[i]); 33: 33: } 34: 34: i++; i++; 35: 35: } 31 行目 :sring[i] が a 以上 z 以下であるか判定 つまり 小文字かどうかを判定 今回は小文字なので 次の文を実行する 第 2 回の課題の簡単な解説 sring[0] sring[1] sring[2] sring[3] sring[4] sring[5] sring[6] sring[7] sring[8] sring[9] sring[10] T E S 28: 28: while while (sring[i]!=!=''){ 29: 29: if if (sring[i] >= >= 'A' 'A'&& sring[i] <= <= 'Z') 'Z'){ 30: 30: sring[i] = Aoa(sring[i]); 31: 31: }else }else if if (sring[i] >= >= 'a' 'a'&& sring[i] <= <= 'z') 'z'){ 32: 32: sring[i] = aoa(sring[i]); 33: 33: } 34: 34: i++; i++; 35: 35: } 32 行目 :aoa を実行する aoa は小文字を大文字にして返す 戻り値を sring[i] に代入する 5

第 2 回の課題の簡単な解説 sring[0] sring[1] sring[2] sring[3] sring[4] sring[5] sring[6] sring[7] sring[8] sring[9] sring[10] T E S 28: 28: while while (sring[i]!=!=''){ 29: 29: if if (sring[i] >= >= 'A' 'A'&& sring[i] <= <= 'Z') 'Z'){ 30: 30: sring[i] = Aoa(sring[i]); 31: 31: }else }else if if (sring[i] >= >= 'a' 'a'&& sring[i] <= <= 'z') 'z'){ 32: 32: sring[i] = aoa(sring[i]); 33: 33: } 34: 34: i++; i++; 35: 35: } 34 行目 :i++ する sring[i] は 今までの次の文字になる 第 2 回の課題の簡単な解説 sring[0] sring[1] sring[2] sring[3] sring[4] sring[5] sring[6] sring[7] sring[8] sring[9] sring[10] T E S 28: 28: while while (sring[i]!=!=''){ 29: 29: if if (sring[i] >= >= 'A' 'A'&& sring[i] <= <= 'Z') 'Z'){ 30: 30: sring[i] = Aoa(sring[i]); 31: 31: }else }else if if (sring[i] >= >= 'a' 'a'&& sring[i] <= <= 'z') 'z'){ 32: 32: sring[i] = aoa(sring[i]); 33: 33: } 34: 34: i++; i++; 35: 35: } 28~35 行目 :sring[i] が の間 繰り返す i が 4 になったとき while が終了する 6

sring[3] sring[4] sring[5] sring[6] sring[7] sring[8] sring[9] sring[10] 第 2 回の課題の簡単な解説 sring[0] T 34: 34: i++; i++; sring[1] E 35: 35: } sring[2] S 36: 36: prinf("%s n",sring); 37:} 37:} 36 行目 :sring の内容を出力する 37 行目 : 終了 第 2 回の課題の簡単な解説 03:char Aoa(char symbol){ 04: 04: char char ou; ou; 05: 05: in incoun; 06: 06: 07: 07: coun coun = symbol symbol --'A'; 'A'; 08: 08: ou ou = 'a' 'a' + coun; coun; 09: 09: reurn reurn ou; ou; 10:} 10:} 04 行目 : 文字型変数 ou を宣言 05 行目 : 整数型変数 in を宣言 07 行目 :symbol から 'A' を引き算することで symbol が 'A' から何文字先か計算 その結果を coun に保存 08 行目 :coun を 'a' に足し算することで 'a' から coun 先の文字を計算 その結果を ou に保存 09 行目 :ou を戻り値として返す 7

第 2 回の課題の簡単な解説 aoa は Aoa と ほぼ同様です 今日やること hp://www.nlab.ice.uec.ac.jp/~s-okubo/class/language/ にアクセスすると 教材があります 2007 年 05 月 07 日分と書いてある部分が 本日の教材です 本日の内容 先週の課題の簡単な解凍 アドレスとポインタ C 言語におけるにおける文字列 標準入力からのからの書式付書式付き入力 8

4.1 メモリとアドレス 計算機内部では データは2 進数で保存している 計算機は メモリにデータを蓄えている bi 1bi 0 もしくは 1 のどちらかを保存 bye 1bye 1biが8つ集まっている bye が メモリの基本単位として使用される 4.1 メモリとアドレス メモリは 1bye を保存できる場所が大量にある それぞれの場所には アドレスがふられている メモリの概念図 0000 0001 0002 0003 0004 0005 0006 アドレスがふられている 9

0000 0001 0002 0003 0004 4.2 アドレスの参照 C 言語で用いる変数等も 実際の値はメモリ上にある メモリ上のどこに置くかとかは OSやコンパイラが適時やってくれる C 言語では 実際にどこにデータが保存されいるのか プログラム中で参照できる 変数 T 計算機 これは此処に入れるか 変数 T を使用と 人 0000 0001 0002 0003 0004 4.2 アドレスの参照 C 言語で用いる変数等も 実際の値はメモリ上にある メモリ上のどこに置くかとかは OSやコンパイラが適時やってくれる C 言語では 実際にどこにデータが保存されいるのか プログラム中で参照できる 変数 T 計算機 0002 です 変数 T のアドレスは? 人 10

4.2 アドレスの参照 例 : 変数の前に & をつけると その値をどこに保存しているか ( アドレス ) を参照できる #include <sdio.h> main(){ in i; i; } pirnf("%u n",&i); &i とすることで i が保存されているアドレスを参照できる 4.2 アドレスの参照 どこに保存されているか はわかる 次にやりたいことは? その場所に入っている値が何か アドレスの前に * をつけると そのアドレスに保存している値を参照できる 更に C 言語では アドレスを保存する型も存在する ポインタ 11

4.2 ポインタとアドレス ポインタ アドレスを保存している変数です このポインタを型として宣言することができます 整数型や文字型と合わせて宣言されます 変数 poi はアドレスである と宣言するのではない! 変数 poi は整数型の変数を保存しているアドレス 変数 poi は文字型の変数を保存しているアドレス のように どの型を保存しているアドレスなのかを区別 例 : 4.2 ポインタとアドレス #include <sdio.h> main(){ in i; i; in *poi_01; in arr[10]; } ポインタの宣言の仕方 *poi_01 は整数型である poi_01 の部分が整数型のデータを保存するアドレスとなる 宣言するときに * をつけると * の次の文字は アドレスになる 12

4.2 ポインタとアドレス #include <sdio.h> main(){ in i; i; in *poi_01; in arr[10]; } in i; in *poi_01; in arr[10]; アドレスを参照するには 整数型の変数 i を宣言 &i poi_01( または &*poi_01) arr 整数型の変数 *poi_01 を宣言 poi_01 はアドレス サイズ 10 の整数型の配列 arr は配列の最初の要素のアドレス 値を参照するには i *po_01 arr[0] 5.2 C 言語における文字列 C 言語では 文字列は配列として扱うことができる 例えば 文字列 "es" が サイズ 10 の文字型の配列 s に保存されているなら s[0] s[1] s[2] s[3] s[4] s[5] s[6] s[7] s[8] s[9] e s 文字列の最後には NULL がつきます ( つきます というか つけます ) 13

5.2 C 言語における文字列 NULL がないと どうなるのか? s[0] s[1] s[2] s[3] s[4] s[5] s[6] s[7] s[8] s[9] e s e s 計算機 文字列は es と この が違う文字だと s[0] s[1] s[2] s[3] s[4] s[5] s[6] s[7] s[8] s[9] 計算機 e s - e s 文字列は es-es と 文字列を扱うときには 文字列の末尾に NULL がついているかどうかが重要になる 4.2 ポインタとアドレス #include <sdio.h> 人 文字列の比較... main(){ char s[11]; s=="es-es"; } 駄目 文字列を扱うときには 文字列を扱う命令を用いることになります 文字列を便利に扱う関数は 今日はやりません 駄目 駄目です sはアドレスアドレスです 14

7.2 書式付きの入力 (scanf) scanf(forma [,poiner]) 標準入力からの入力を forma に従って変換し 結果を各ポインタ (poiner) に値を代入します 例 : #include<sdio.h> main(){ in i; i; 標準入力から読み込んだ入力を 符合付き整数として i に代入 } scanf("%d",&i); prinf("inpued value is is %d n",i); 7.2 書式付きの入力 (scanf) scanf(forma [,poiner]) 標準入力からの入力を forma に従って変換し 結果を各ポインタ (poiner) に値を代入します 例 : #include<sdio.h> main(){ in i; i; char c; c; } 標準入力から読み込んだ 2 つの入力を 1 つ目は符合付き整数として i に 2 つ目は文字として k に代入 scanf("%d%c",&i,&c); prinf("inpued value is is %d n",i); 改行やスペースを区切りとして認識 15

7.2 書式付きの入力 (scanf) scanf(forma [,poiner]) 標準入力からの入力を forma に従って変換し 結果を各ポインタ (poiner) に値を代入します 例 : #include<sdio.h> main(){ char sr[11]; 標準入力から読み込んだ文字列を 文字列として sr に代入 最後に NULL が挿入される } scanf("%10s",sr); prinf("inpued value is is %d n",i); 16