Prog-0 2013 Lec02-1 Copyright (C) 1999 - 2013 by Programming-0 Group プログラミング入門 第2回講義 マークのあるサンプルプログラムは /home/course/prog0/public_html/2013/lec/source/ 下に置いてありますから、各自自分のディレクトリに.

Slides:



Advertisements
Similar presentations
プログラミング論 第八回数字の計算,整数の入出力. 本日の内容 前回の課題(続き) 前回の課題(続き) 数字の計算をする 数字の計算をする – 加減乗除を行う – インクリメント演算子とデクリメン ト演算子.
Advertisements

第 2 章 数値の入力と変数 scanf と変数をやります 第 2 章 数値の入力と変数 1. 以下のプログラムを実行してみよう  C 言語では文の最後に「 ; 」(セミコロン)が付きます 第 2 章 数値の入力と変数 2 #include int main() { int x; x = 3; printf("x.
復習 配列変数の要素 5は配列の要素数 これらの変数をそれぞれ配列の要素と呼ぶ この数字を配列の添え字,またはインデックスと呼ぶ
復習 配列変数の要素 5は配列の要素数 これらの変数をそれぞれ配列の要素と呼ぶ この数字を配列の添え字,またはインデックスと呼ぶ
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
演算、整数型と浮動小数点型 第3回目 [4月27日、H.16(‘04)] 本日のメニュー 1)前回の課題・宿題 2)ファイルサーバの利用
応用理工学情報処理 第1回(2015年10月 5日) 月曜日担当 前島展也 Manaba
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
プログラミング入門2 第4回 配列 for文 変数宣言 初期化
初年次セミナー 第4回 整数と実数の取り扱い.
第2章 数値の入力と変数 scanfと変数をやります.
ファーストイヤー・セミナーⅡ 第8回 データの入力.
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
6/19 前回復習 for文による繰り返し計算 演習1:1から10まで足して画面に結果を表示する 提出者: 1人
基礎プログラミングおよび演習 第9回
C言語 第2講 生物機能制御学講座 濱田 農学部7号館209室.
プログラミング入門2 第1回 導入 情報工学科 篠埜 功.
プログラミング入門 第5回講義 第5回講義 制御の流れ(1) ループ(その1) - while - インデント(3) ループとは(7)
C言語講座 第4回 ポインタ.
第6章 2重ループ&配列 2重ループと配列をやります.
構造体.
精密工学科プログラミング基礎 第9回資料 (12/11 実施)
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
C言語講座 第3回 ポインタ、配列.
JAVA入門.
第二回 VB講座 電卓を作ろう.
プログラミング応用 printfと変数.
プログラミング序論 2. n人のインディアン.
プログラミング入門2 第2回 型と演算 条件分岐 篠埜 功.
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
知能情報工学演習I 第8回( C言語第2回) 課題の回答
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
精密工学科プログラミング基礎Ⅱ 第4回資料 今回の授業で習得してほしいこと: 文字列の扱い ファイル入出力の方法 コマンドライン引数の使い方
整数データと浮動小数データ.
情報処理Ⅱ 第2回:2003年10月14日(火).
コンパイラ 2011年10月20日
C言語 はじめに 2016年 吉田研究室.
地域情報学 C言語プログラミング 第1回 導入、標準出力、変数 2017年10月13日
地域情報学 C言語プログラミング 第2回 変数・配列、型変換、入力 2017年10月20日
プログラミング入門 電卓を作ろう・パートI!!.
プログラミング入門2 第5回 配列 for文 変数宣言 初期化
情報処理Ⅱ 2005年10月28日(金).
プログラミング入門2 第2回 型と演算 条件分岐 篠埜 功.
標準入出力、変数、演算子、エスケープシーケンス
プログラミング基礎a 第3回 C言語によるプログラミング入門 データ入力
情報実習I (第1回) 木曜4・5限 担当:北川 晃.
プログラミング 4 文字列.
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
プログラミング演習I 数値計算における計算精度と誤差
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
第7章 そろそろ int 以外も使ってみよう! ~データ型 double , bool~
2005年度 データ構造とアルゴリズム 第2回 「C言語の復習:配列」
情報処理Ⅱ 第2回 2004年10月12日(火).
第3回簡単なデータの入出力.
プログラミング入門2 第5回 配列 変数宣言、初期化について
プログラミング基礎a 第3回 C言語によるプログラミング入門 データ入力
printf・scanf・変数・四則演算
第2章 数値の入力と変数 scanfと変数をやります.
計算技術研究会 第5回 C言語勉強会 関数(function)を使う
復習 いろいろな変数型(2) char 1バイト → 英数字1文字を入れるのにぴったり アスキーコード → 付録 int
プログラミング演習I 補講用課題
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
第1章 文字の表示と計算 printfと演算子をやります 第1章 文字の表示と計算.
第1章 文字の表示と計算 printfと演算子をやります.
Presentation transcript:

Prog Lec02-1 Copyright (C) by Programming-0 Group プログラミング入門 第2回講義 マークのあるサンプルプログラムは /home/course/prog0/public_html/2013/lec/source/ 下に置いてありますから、各自自分のディレクトリに コピーして、コンパイル・実行してみてください マークのあるサンプルプログラムは /home/course/prog0/public_html/2013/lec/source/ 下に置いてありますから、各自自分のディレクトリに コピーして、コンパイル・実行してみてください 変数 (3) 1+2=3 のプログラム (7) printf 復習 (9) scanf(11) 演算とその順序 (17)

Prog Lec02-2 Copyright (C) by Programming-0 Group 1+2 を計算するプログラム(復 習) #include main( ){ printf("1+2=%d \ n",1+2); } #include main( ){ printf("1+2=%d \ n",1+2); } std1dc1{s }1: gcc lec01-3.c std1dc1{s }2:./a.out 1+2=3 std1dc1{s }3: std1dc1{s }1: gcc lec01-3.c std1dc1{s }2:./a.out 1+2=3 std1dc1{s }3: 実行 実行結果 1+2と言う式の 値 (つまり3)が計 算され、%dの部 分に表示される /home/course/prog0/public_html/2013/lec/source/lec01-3.c しかし、これでは 定数の計算しか出 来ず、あまり実用 的ではない 変数の使用

Prog Lec02-3 Copyright (C) by Programming-0 Group 変数とは (p.40) 変数とは、メモリーに値を蓄えておく、名前つ きの箱 変数の内容は、何回でも書き換え可能 変数に書き込む事を 「代入」 と呼ぶ 変数を使用して計算する事で、(定数ではな く)様々な数に対して計算をする事が出来る。 1 2

Prog Lec02-4 Copyright (C) by Programming-0 Group 変数名の規則 (1)(p.62) 変数の最初の文字は、半角英字 ( A ~ Z, a ~ z ) 、 アンダースコア ( 下線: _ ) でなければいけない a123, _abc, _200 ⇒ OK 7abc ⇒ NG 2番目以降の文字は, 半角英字、アンダースコ ア、 半角数字 ( 0 ~ 9 ) でなければいけない 下線以外の記号と空白は使用出来ない in-data, a.123, out data ⇒ NG

Prog Lec02-5 Copyright (C) by Programming-0 Group 変数名の規則 (2) 大文字と小文字 は区別される 変数名は 31 文字まで (32 文字以降は無視される ) 予約語 (特別な意味を持つ単語)は使えな い int, while, for などが予約語 printf, scanf などは予約語ではないが、実質 的には使用できない。 意味の分かりやすい名前を付ける result,sum,total,average など これは「規則」ではないが、習慣にしよう! 3 4

Prog Lec02-6 Copyright (C) by Programming-0 Group 変数宣言 (p.40) 変数は 宣言 しなければ使えない 「 int i,j,result; 」 は、 i と j と result の3つの int 型変数を まとめて用意する宣言(一つづつ宣言する 事も可) 宣言はまとめてプログラムの 最初 に行う プログラムの途中で宣言するとエラーになる! 宣言直後の変数の値は不定(何が入ってい るかわからない) ⇒代入文を用いた 初期化 が必要 5 6 7

Prog Lec02-7 Copyright (C) by Programming-0 Group 1+2=3 を表示するプログラム 言葉によるプログラム 「言葉によるプログラム」を作ってみよう 変数「 i 」, 「 j 」, 「 result 」 を用意する 計算する 2 つの数をそれぞれ変数「 i 」, 「 j 」 に代入する 変数「 i 」と変数「 j 」の和を計算し、結果を 変数 「 result 」 に代入する 変数「 result 」 の値を表示する

Prog Lec02-8 Copyright (C) by Programming-0 Group = 3 を出力するプログラム #include main() { int i,j,result = 0; i = 1; j = 2; result = i + j; printf("%d \ n",result); } #include main() { int i,j,result = 0; i = 1; j = 2; result = i + j; printf("%d \ n",result); } 1 :変数用意 2 :変数に値代入 3 :計算 4 :結果の表示 /home/course/prog0/public_html/2013/lec/source/lec02-1.c プログラムは全て半角 英数字、記号で書く。 表示などに一部日本語 も使用出来る。 代入文 : 右辺の値を左辺の変数に代入 数学の等号( = )とは意味が異 なる いったん値を代入してから使用す る 宣言時に変数を初期化す る事も出来る

Prog Lec02-9 Copyright (C) by Programming-0 Group printf(p.43) (第1回の復習) printf( "%d \ n",result ); 値を出力する変数名。 18 のような定数や、 a+b のよ うな式でも良い 書式並び %d :整数型変数の値を 10 進数で出力す る \ n :改行 このハンドアウトの逆スラッシュ(\)記号は良く見ると他の記号と 異 なり、全角になっている。これは日本語のシステムでは半角のバック スラッシュ記号が通貨記号 (\) になってしまうためである。見やすく表 示するためにこのハンドアウトではこのようにしている。実際にプロ グラムを作成する時には半角の逆スラッシュを使用する。

Prog Lec02-10 Copyright (C) by Programming-0 Group もう少し複雑な書式付出力 (p.44) printf("%d+%d=%d \ n",i,j,result); ⇒ %d の部分が整数型変数の値に置き換わり、 「 1+2=3 」と出力される (「+」や「=」など %d 以外の部分はそのまま出 力される) 前から順に 値を表示

Prog Lec02-11 Copyright (C) by Programming-0 Group scanf(p.48) scanf を使うとキーボードから入力するこ とができる 大雑把に言うと、 scanf は丁度 printf の反対 のような動作をする。 scanf printf

Prog Lec02-12 Copyright (C) by Programming-0 Group scanf の使用方法 scanf の基本形は以下の通りである。 この scanf 文は「10進整数を一つ読み込ん で、 int 型変数 i に代入する 」事を示している。 scanf("%d",&i); 変数 i にデータが入力さ れる 「&」は今はおまじな い 10進数の入力 8

Prog Lec02-13 Copyright (C) by Programming-0 Group scanf の使用例 例えば、年齢を入力するプログラム(の一 部)は以下のようになる これによって変数 age にはキーボードから 入力された数値(この場合年齢)が代入さ れる。 int age; printf("How old are you ? \ n"); scanf("%d",&age); int age; printf("How old are you ? \ n"); scanf("%d",&age); /home/course/prog0/public_html/2013/lec/source/lec02-2.c

Prog Lec02-14 Copyright (C) by Programming-0 Group 複数データの入力 (p.105) 一度に複数データを入力する場合は以下のようにする 。 printf と同様に、3つ並んだ「 %d 」は順に変数 i,j,k に対 応 「 %d %d %d 」のように空白をあけても構わない。 データは のように1つ以上の空白をあけて 入力する。あるいは以下のように改行で区切っても良 い。 scanf("%d%d%d",&i,&j,&k);

Prog Lec02-15 Copyright (C) by Programming-0 Group scanf の間違いやすい点 「 "" 」内には %d 等の書式指定および空白以外は書かない。 特に改行 ( \ n ) を書くと、 トラブル(バグ) の元になる。 入力する変数には必ず「 & 」をつける。この意味は後期 Programming C で習う。それまでは「おまじない」だと 思っていて差し支えない。(興味のある人は自習してみる と良い) scanf("%d \ n", & i); scanf("%d", i); 9

Copyright (C) 1999 – 2013 by Programming-0 Group Prog Lec02-16 コラム:ムーアの法則 コンピュータのトランジスタ数は18~2 4ヶ月で倍になると言う経験則をムーアの 法則と言う。 CPU の性能やメモリ容量はだいたいトラン ジスタ数に比例していると言って良い。 ムーア氏はインテルの設立者の一人で、現 在は同社の名誉会長である。 トランジスタサイズには物理的限界があり、 早晩この法則は成り立たなくなると見られ ているが、頻繁な技術革新(パラダイムシ フト)により当分は成り立つのではないか と考える人も多い。 同時にコンピュータ自体のデザインも、よ り少ないコスト(トランジスタ数)で高い 性能が出るよう工夫され始めた。 CPU 自体 ではインテルのハイパースレッディング、 システムとしては PC クラスタなどが挙げ られる。 ( Wikipedia より転載)

Prog Lec02-17 Copyright (C) by Programming-0 Group 数や変数を演算子で結びつける 演算と演算子 1+2 演算子 被演算子 「 = 」も演算子(代入演算子)である 右辺の値を左辺の変数に代入し、式の値自体を代入 する値にする ( a = 5 の式の値は5) a = b = 1 ① ② ①変数 b に 1 を代入し、式「 b=1 」の値を1 とする ②変数 a に①で決まった式の値1を代入する 演算とは: 被演算子に対して演算子で定められた 操作を行い、式の値とすることである。 左は、 1+2 を計算した3が式の値となる。 演算とは: 被演算子に対して演算子で定められた 操作を行い、式の値とすることである。 左は、 1+2 を計算した3が式の値となる。 代入演算子

Prog Lec02-18 Copyright (C) by Programming-0 Group (整数型の)四則演算 (p.43,89) + :加算 - :減算 * :乗算(「x」ではないので注 意!) / :除算(小数点以下切り捨て) % :剰余算 a%b ⇒ a を b で割った余り 10

Prog Lec02-19 Copyright (C) by Programming-0 Group 剰余算の注意 (p.90) 整数型同士 の演算でなければならない 3.5 % 2 ⇒ エラーになる 剰余演算子を用いなくても余りは計算でき る(整数型の場合) a % b ⇒ a - ((a / b) * b) 上の式の意味を考えてみよう 11

Prog Lec02-20 Copyright (C) by Programming-0 Group a = a + 1 という演算を考えてみよう 数学の表現では a = a + 1 はおかしい → 移項すると0と1が等しくなる?? Cでは「 = 」の記号は「代入」を表す。 つまり、 a = a + 1 の演算の意味は、 「変数 a の値に1を加え、それを a に代入する」 12 代入の時に注意する点 代入とは 左辺 の値を 右辺 の値に書き換えること つまり以下の二つの式は意味が異なる a = 10 ( 変数 a に数 10 を代入する: OK!) 10 = a ( 数 10 に変数 a の値を代入する:エラー ) a+b = 20 もエラー! ( 代入すべき変数が分らない ) 1314

Prog Lec02-21 Copyright (C) by Programming-0 Group 演算の順序 (p.94) 括弧つきの場合、演算子の優先度よりも優先され る 2*(3+4) ⇒ 3+4が先に実行される 優先度の高い演算から実行される(巻末に一覧) 優先度(上から優先度の高い順) (、)括弧 乗算 * 、 除算 / 、 剰余算 % 加算 + 、 減算 - 代入 = 例 1*2+3*4 ⇒ (1*2)+(3*4) 同じ優先度なら、 計算は 左 から順に実行される 1+2+3 ⇒ (1+2) +3 代入は 右 から順に実行される a = b = 1 ⇒ a = (b = 1) 15 16

Prog Lec02-22 Copyright (C) by Programming-0 Group 演算の順序の例 (p.94) a = b = 2*3 + 4*5/ 演算の順序

Prog Lec02-23 Copyright (C) by Programming-0 Group #include main() { int i,j,k,average; printf(" 3人分の体重 ( 整数 kg) を空白で分けて入力してください : "); scanf( "%d%d%d", & i, & j, & k); average = (i + j + k)/3; printf(" 3人の体重はそれぞれ %dkg %dkg %dkg で、\ n",i,j,k); printf(" その平均は %dkg となりました\ n",average); } #include main() { int i,j,k,average; printf(" 3人分の体重 ( 整数 kg) を空白で分けて入力してください : "); scanf( "%d%d%d", & i, & j, & k); average = (i + j + k)/3; printf(" 3人の体重はそれぞれ %dkg %dkg %dkg で、\ n",i,j,k); printf(" その平均は %dkg となりました\ n",average); } std1dc1{s }1:./a.out 3人分の体重 ( 整数 kg) を空白で分けて入力してください : 3人の体重はそれぞれ 57kg 72kg 49kg で、 その平均は 59kg となりました std1dc1{s }2: std1dc1{s }1:./a.out 3人分の体重 ( 整数 kg) を空白で分けて入力してください : 3人の体重はそれぞれ 57kg 72kg 49kg で、 その平均は 59kg となりました std1dc1{s }2: 演算順序 /home/course/prog0/public_html/2013/lec/source/lec02-3.c プログラム例 (平均を求める) 17 整数演算のため切捨て

Copyright (C) 1999 – 2013 by Programming-0 Group Prog Lec02-24 コラム:自宅で C プログラミング 大部分の人は家にも PC を持っているのではないかと思う。その PC を 使用してプログラミングしたい(休日とか深夜など)場合が出てく るかもしれない。 そこで自宅からのプログラミングに関してまとめておく 大学環境をそのまま使う場合 SSH を使用し、大学のコンピュータに接続し自分のアカウントにログインして利用する。 SSH の利用方法は以下の ISTC のページに説明されている。 この場合は自分のアカウントにあるプログラムを直接編集・実行出来る。 自分の PC でコンパイル・実行する場合 Windows の場合は検索すると色々出てくる。例えば などにリストアップされているので試してみると よいだろう。 では Visual C Express を利用して C プロ グラムを作成する方法を説明している。インストール、設定ともに非常に簡単である。 この場合は何らかの方法 (ftp など ) で自分の大学アカウントとファイルのやりとりをする必要 がある。またこの際、漢字コードの違いなどで文字化けする事もあるので、コメントを日本 語で書く事はやめたほうが無難である。