地域情報学 C言語プログラミング 第4回 while文、do~while文、switch文、 2次元配列、ポインタ 2017年11月10日

Slides:



Advertisements
Similar presentations
復習 配列変数の要素 5は配列の要素数 これらの変数をそれぞれ配列の要素と呼ぶ この数字を配列の添え字,またはインデックスと呼ぶ
Advertisements

復習 配列変数の要素 5は配列の要素数 これらの変数をそれぞれ配列の要素と呼ぶ この数字を配列の添え字,またはインデックスと呼ぶ
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
7/10 if 文課題 力作が多くて感心! 演習1:キーボードから2つの整数を入力し、小さい方の数字を 表示せよ。
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
基礎プログラミングおよび演習 第9回
問題提起その 1 一文字ずつ文字(数字)を読み込み、それぞれの文字が何回入力されたかを数えて出力するプログラム。
第2回ネットワークプログラミング 中村 修.
文字配列の課題1 解説 /* a */ #include <stdio.h> main( ) { int i;
C言語 配列 2016年 吉田研究室.
コンピュータープログラミング (C言語)(6) 1.条件分岐2(switch文、復習) 2.繰り返し処理(for文、while文)
C言語講座 第4回 ポインタ.
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
第6章 2重ループ&配列 2重ループと配列をやります.
精密工学科プログラミング基礎 第9回資料 (12/11 実施)
プログラミング入門2 第3回 繰り返し文 芝浦工業大学情報工学科 青木 義満
構造体 構造体, 構造体とポインタの組み合わせ,.
第7回 条件による繰り返し.
プログラミング演習 バージョン1 担当教員:綴木 馴.
プログラミング論 関数ポインタ と 応用(qsort)
プログラムの制御構造 選択・繰り返し.
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
電気・機械・情報概論 VBAプログラミング 第2回 2018年7月2日
プログラミング論 II 2008年10月30日 文字列
地域情報学演習 VBAプログラミング 第2回 2017年10月17日
地域情報学演習 VBAプログラミング 第3回 2017年10月24日
アルゴリズムとプログラミング (Algorithms and Programming)
第10章 これはかなり大変な事項!! ~ポインタ~
地域情報学演習 集中講義 C++プログラミング 集中講義 2017年11月18日
前回の練習問題.
第7回 条件による繰り返し.
第7回 プログラミングⅡ 第7回
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
地域情報学 C言語プログラミング 第5回 ポインタ、関数、ファイル入出力 2017年11月17日
P n ポインタの基礎 5 q m 5 7 int* p; int 型の変数を指すポインタ int* q; int 型の変数を指すポインタ int n=5, m=7; int 型の変数 int array[3]; int* pArray[3]; p = &n; ポインタにアドレスを代入しているのでOK.
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
プログラミング基礎B 文字列の扱い.
プログラミング言語論 第四回 理工学部 情報システム工学科 新田直也.
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
精密工学科プログラミング基礎Ⅱ 第4回資料 今回の授業で習得してほしいこと: 文字列の扱い ファイル入出力の方法 コマンドライン引数の使い方
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
C言語 はじめに 2016年 吉田研究室.
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
プログラミング 3 2 次元配列.
地域情報学 C言語プログラミング 第2回 変数・配列、型変換、入力 2017年10月20日
IF文 START もしも宝くじが当たったら 就職活動する 就職活動しない YES END NO.
高度プログラミング演習 (09).
情報処理Ⅱ 第3回 2007年10月22日(月).
プログラミングⅡ 第2回.
第13回 ポインタ 1 1.
C言語,ソースファイルの作成,コンパイル,実行
C#プログラミング実習 第2回.
ネットワーク・プログラミング Cプログラミングの基礎.
高度プログラミング演習 (11).
C言語講座 制御(選択) 2006年 計算技術研究会.
情報処理Ⅱ 2006年11月24日(金).
地域情報学 C言語プログラミング 第3回 入力、if文、for文 2016年11月25日
プログラミング基礎演習 第4回.
プログラミング 4 文字列.
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
情報処理Ⅱ 第2回 2004年10月12日(火).
地域情報学 C言語プログラミング 第3回 入力、if文、for文 2017年11月1日
情報処理Ⅱ 2005年11月25日(金).
プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功.
情報処理Ⅱ 第3回 2004年10月19日(火).
情報処理Ⅱ 2006年10月20日(金).
分岐(If-Else, Else if, Switch) ループ(While, For, Do-while)
知能情報工学演習I 第10回( C言語第4回) 課題の回答
プログラミング演習I 補講用課題
Presentation transcript:

地域情報学 C言語プログラミング 第4回 while文、do~while文、switch文、 2次元配列、ポインタ 2017年11月10日 三井真吾 メール:smitsui@staff.kanazawa-u.ac.jp 居室:工作実習棟 HP:佐々木敏彦研究室HP    http://next.w3.kanazawa-u.ac.jp/

while文 int a=0; while(a<10){ printf(“%d\n”, a); a++; } 一般に for文は「○回処理を繰り返す」ときに使用し、 while文は「~の条件の間処理を繰り返す」ときに使用する。 break;でループを1つ抜ける事ができる。 while(1){・・・・・・}で無限ループ。if(・・・){break;}で抜ける。 例題 2つの数字を入力し、足し算を続けるプログラムを作れ。Ctrl+Cで終了出来る。 0+0のときに終了するように改良せよ。

do~while文 int a=0; do{ printf(“%d\n”, a); a++; } while(a<10); 処理を行った後に継続条件を判定する。 必ず1回は処理するときなどに使われる。 例題 while文を、do~while文に変更しても問題ないことを 確認せよ。

switch文 int a, x, y; printf(“1:和 2:差\n”); scanf(“%d”, &a); //分岐条件を入力 printf(“数値を2つ入力\n”); scanf(“%d%d”, &x, &y); switch (a) { //aの値によって分岐 case 1: //aの値が1のとき printf(“和は%d”, x+y); break; //必ずbreakを入れる case 2: //aの値が2のとき printf(“差は%d”, x-y); break; default: //aの値がその他のとき printf(“1又は2を入力して下さい。”); }

2次元配列 int no[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; // 縦3行、横4列の配列を定義 int no[3][4] = {{ 0 }}; //全て0で初期化。 char month[13][20] = {“January”, “February”, ・・・・・・, “December”} 3次元以上の配列も可能。 例題 数字の2次元配列を作り表示せよ。 表示例 one two three four five

ポインタ int x = 123; x //変数xの値123を表す(家) &x //変数xのアドレスを表す(住所) pt //アドレスを記録する変数(住所録) int a, b; int *pt; //ポインタptの宣言 pt = &a; //ポインタptにaのアドレスを記録 *pt = 100; //ptの指す中身に100を代入 b = *pt + 100; //bにptのさす中身+100を代入 メモリ(中身) 123 100 &a 200 変数 x a pt b アドレス(住所) &x &pt &b *ptはここを表す。

ポインタ 配列 char a[3] = “AB”; このときa = &a[0]となる。 変数とは異なることに注意。 ポインタ 配列 char a[3] = “AB”; このときa = &a[0]となる。 変数とは異なることに注意。 char st[]=“AB”; char *pt1, *pt2; pt1 = st; printf(“%c”, *pt1); printf(“%c”, *pt1+1); printf(“%c”, *pt1+2); pt2 = st; printf(“%c”, *pt2); pt2++; メモリ ‘A’ ‘B’ ‘\0’ 配列 a[0] a[1] a[2] アドレス &a[0] &a[1] &a[2] ポインタにこのアドレスを詰める。 配列名aだけだとこれを表す。 *pi1+1;とpt2++;とは次のアドレスに移動するという意味。 型によって移動量が異なる。

ポインタ 文字列 char *p = “ABC”; //”ABC”の先頭アドレスがポインタに詰められる。 char moji[4] = “ABC”; //文字列を定義 char *p; //ポインタを定義 p = moji; //ポインタに文字列の先頭アドレスを代入 //文字列は配列名だけで先頭アドレスを表す。 配列 moji[0] moji[1] moji[2] moji[3] char week[8][20] = {“Sunday”, ・・・・・・, “Saturday”} //それぞれの先頭アドレスがweek[0]、・・・・・・、 week[6]に詰められる。 例題 数字をポインタを用いて出力せよ。 moji[4] = ‘A’ ‘B’ ‘C’ ‘\0’ 先頭アドレスをポインタpに代入。