コンピュータープログラミング(C言語)(3) 1.関数と分割コンパイル (復習) 2.キーボード入力

Slides:



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

プログラミング演習( 2 組) 第 9 回
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
プログラミング演習(1組) 第7回
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
初年次セミナー 第4回 整数と実数の取り扱い.
第2章 数値の入力と変数 scanfと変数をやります.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
プログラミング演習(2組) 第12回
コンピュータープログラミング (C言語)(6) 1.条件分岐2(switch文、復習) 2.繰り返し処理(for文、while文)
コンピュータープログラミング (C言語)(9) 1.これまでの復習
問題 1 キーボードから入力した数の合計を計算するプログラムを 作成せよ。最初に、何個の数を入力するかその数を入力 するようにする。
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
関数の定義.
プログラミング応用 printfと変数.
第4回簡単な計算・プリプロセッサ.
プログラミング演習(2組) 第8回
第10回関数 Ⅱ (ローカル変数とスコープ).
第10章 これはかなり大変な事項!! ~ポインタ~
プログラミング入門2 第2回 型と演算 条件分岐 篠埜 功.
知能情報工学演習I 第9回( C言語第3回) 課題の回答
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
知能情報工学演習I 第12回(後半第6回) 課題の回答
前回の練習問題.
知能情報工学演習I 第9回(後半第3回) 課題の回答
第9回関数Ⅰ (簡単な関数の定義と利用) 戻り値.
コンピュータープログラミング(C言語)(4) 1.キーボード入力(復習) 2.条件分岐(if文)
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
高度プログラミング演習 (02).
復習 前回の関数のまとめ(1) 関数はmain()関数または他の関数から呼び出されて実行される.
知能情報工学演習I 第8回( C言語第2回) 課題の回答
地域情報学 C言語プログラミング 第5回 ポインタ、関数、ファイル入出力 2017年11月17日
コンピュータープログラミング (C言語)(5) 1.条件分岐1(if文、復習) 2.条件分岐2(switch,case文)
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
整数データと浮動小数データ.
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
C言語 はじめに 2016年 吉田研究室.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
プログラミング演習I 2003年4月30日(第3回) 木村巌.
復習 2次元配列 4列 j = 0 j = 1 j = 2 j = 3 i = 0 i = 1 i = 2 3行
復習 breakとcontinueの違い int i; for (i = 1; i <= 100; i++) { ・・・処理1・・・・
復習 Cにおけるループからの脱出と制御 break ループを強制終了する.if文と組み合わせて利用するのが一般的. continue
11.1 標準ライブラリ関数 11.2 関数呼び出しのオーバーヘッド 11.3 大域変数 11.4 プロトタイプ宣言 11.5 関数引数
C言語講座 制御(選択) 2006年 計算技術研究会.
復習 breakとcontinueの違い int i; for (i = 1; i <= 100; i++) { ・・・処理1・・・・
標準入出力、変数、演算子、エスケープシーケンス
知能情報工学演習I 第8回(後半第2回) 課題の回答
cp-3. 計算 (C プログラミング演習,Visual Studio 2019 対応)
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
プログラミング演習II 2003年11月19日(第6回) 木村巌.
コンピュータープログラミング (C言語)(10) 1.ファイル入出力
プログラミング入門2 第5回 配列 変数宣言、初期化について
第4回 配列.
printf・scanf・変数・四則演算
第2章 数値の入力と変数 scanfと変数をやります.
知能情報工学演習I 第9回(後半第3回) 課題の回答
復習 いろいろな変数型(2) char 1バイト → 英数字1文字を入れるのにぴったり アスキーコード → 付録 int
C言語講座 四則演算  if ,  switch 制御文.
第5回 配列.
知能情報工学演習I 第10回( C言語第4回) 課題の回答
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
Presentation transcript:

コンピュータープログラミング(C言語)(3) 1.関数と分割コンパイル (復習) 2.キーボード入力 コンピュータ基礎実験 第6回 コンピュータープログラミング(C言語)(3) 1.関数と分割コンパイル (復習) 2.キーボード入力

「関数と分割コンパイル」の復習 「関数」:データ処理の「ひとまとまり」 「f(a,b)」は、データa,bに対する、決まった処理(計算や文字出力等)を表す 見通しのよさ、定型処理の繰り返し 「分割コンパイル」:巨大なプログラムを複数のファイルに分けて、個々でコンパイル 編集、変更、分担開発が容易 コンパイル時間の短縮

分割コンパイルの手順 「ex-5-4-1.c」をコンパイル 「ex-5-4-2.c」をコンパイル $ cc -c ex-5-4-1.c ⇒ ex-5-4-1.o (オブジェクトファイル) 「ex-5-4-2.c」をコンパイル $ cc -c ex-5-4-2.c ⇒ ex-5-4-2.o (オブジェクトファイル) 「ex-5-4-1.o, ex-5-4-2.o」をリンク $ cc ex-5-4-1.o ex-5-4-2.o ⇒ a.exe (実行ファイル) ex-5-4-1.c ex-5-4-1.o コンパイル 「cc -c」 リンク 「cc 」 a.exe ex-5-4-2.c ex-5-4-1.o 実行ファイル ソース   ファイル オブジェクト     ファイル

前回課題2:分割コンパイル: ex5-5-1.c, ex-5-5-2.c,ex5-5-3.c (a,b)=(1,2)、(3,4)、(5,6)…(19,20)の10個の実数の組に対し、積a*b、商a/bを計算するプログラムを、「main()」(ex5-5-1.c)と「basiccalc()」(ex5-5-2.c)の2つのソースファイルに分けて、分割コンパイルせよ。 「ex5-5-2.c」をコピーして「ex5-5-3.c」というソースファイルを作り、これを改造して和、差を計算するプログラムを作れ

前回課題2回答例1/2: ex5-5-1.c, ex5-5-2.c ex5-5-1.c: ex5-5-2.c: 「printf()」は、このファイル内で使う ex5-5-1.c: ex5-5-2.c: void basiccalc(float a, float b); int main(void) { float a,b; a=1; b=2; basiccalc(a,b); a=3; b=4; basiccalc(a,b); a=5; b=6; basiccalc(a,b); a=17; b=18; basiccalc(a,b); a=19; b=20; basiccalc(a,b); return 0; } #include <stdio.h> void basiccalc(float a, float b) { float c,d; c=a*b; b=a/b; printf(”a=%f b=%f の時、”,a,b); printf(”積%f 商%f\n”,c,d); } このファイル内では定義されていない「basiccalc」 という関数を使うことを宣言

前回課題2回答例2/2: ex5-5-3.c ex5-5-3.c: #include <stdio.h> void basiccalc(float a, float b) { float c,d; c=a+b; b=a-b; printf(”a=%f b=%f の時、”,a,b); printf(”和%f 差%f\n”,c,d); }

前回分割コンパイルの手順 「ex-5-5-1.c」をコンパイル 「ex-5-5-2.c」をコンパイル 「ex-5-5-3.c」をコンパイル $ cc -c ex-5-5-1.c ⇒ ex-5-5-1.o 「ex-5-5-2.c」をコンパイル $ cc -c ex-5-5-2.c ⇒ ex-5-5-2.o 「ex-5-5-3.c」をコンパイル $ cc -c ex-5-5-3.c ⇒ ex-5-5-3.o 組み合わせを変えてリンク 「積」と「商」: $ cc ex-5-5-1.o ex-5-5-2.o 「和」と「差」: $ cc ex-5-5-1.o ex-5-5-3.o

キーボードからの入力 コンピューターは、「キーボード」や「マウス」、「タブレット」などからデータを入力することができます 例えば、「四則計算プログラム」でもキーボードから好きな数を入力して計算できると便利ですね C言語では、「データの入力」も、「関数」(入出力関数)を利用して実現可能です

キーボード入力関数「scanf()」 変数型宣言 int a; のあとに scanf(“%d”, &a); とすると,キーボードから入力した整数の値が aに入力される.

2つ以上の数の場合も同様に int a, b, c, …, ; printf(“2つの整数? ”); scanf(“%d %d”, &a, &b); ・ 実数型なら float x; printf(“x= ”); scanf(“%f”, &x); ☜ 整数型の   変数の場合  文字型変数   ☟  の場合 文字型なら char name[10]; printf(“%s”); scanf(“%s”, name); ☜ 実数型の   変数の場合 & は不要

アドレス修飾演算子「&」(発展) 「scanf(”%d”,&a)」では、変数「a」に「&」という記号が付いています。これは何でしょう? 「a」に記録するには、「a」が何番目の箱かがわからなければなりません(今「a」に何が記録されているかはどうでもよい) 「&a」は、「a」の番号(アドレス)の値になります アドレス(箱番号) 1 2 3 4 5 値 325 2441 -523 39 812 -3665 ‥‥ 「a」と名付けた a ⇒ 39 &a ⇒ 3

課題6-1: ex1-4で用いたa,bをキーボードから入力するプログラムに 書き替えてみよう. #include <stdio.h> main() { int a,b; a=11,b=3; printf("a=%d",a); printf(", b=%d\n",b); printf(" a+b=%d\n",a+b); printf(" a-b=%d\n",a-b); printf(" a*b=%d\n",a*b); printf(" a/b=%d",a/b); printf(" あまり %d\n",a%b); } printf("2つの整数?"); scanf("%d %d",&a, &b); のように書き替える このファイル名は    ex6-1.c として   下さい.

■ 以下の課題に対するプログラムを作り,実行例を3つ以上示せ. 課題 6-2: 半径を与え,周囲の長さと面積を求めるプログラム ( ex6-2.c )を作成せよ.ただし,円周率π= 3.14159265 とする. 課題 6-3: 三角形の底辺の長さaと高さhを与え,面積を求める   プログラム( ex6-3.c )を作成せよ. 課題 6-4: 質量m1の質点の置かれている座標をx1,質量m2の 質点の置かれている座標をx2とする.x1, m1, x2, m2を与え,    重心の座標xGを求めるプログラム( ex6-4.c )を作成せよ.   ただし,例としてx1= 0, m1=10, x2 = 1, m2=1の場合を含めて   実行例を3つ以上示せ.

■ 発展課題 課題 6-5: 三角形の3辺の長さa, b, cを与え,面積を求めるプロ グラム( ex6-5.c )を示せ.ただし,三角形の面積を与える 公式(Heronの公式)は既知とする.   Heronの公式   ここで,平方根の計算は sqrt(…) とすればよい. [ヒント] プログラムの最初に #include <math.h> を加えること 発展課題 6-6: 課題 6-5において,平方根の計算を正確に 計算するプログラムを示せ.( ex6-6.c ) [ヒント]変数をdouble a,b,c,…  scanf(“%lf,…,&a, …) 、printf(“%1.15f…”,a)として下さい.

算術関数 三角関数や指数関数など、数学で使う関数はワープロやウエブブラウザなどの、よく使われる普通のソフトではめったに使われません 算術関数を使いたい時には、その旨宣言する必要があります 「prinf()」を使いたいときには「#include <stdio.h>」 「sin()」を使いたいときには「#include <math.h>」 リンクのとき、算術関数を含むオブジェクトファイル(既に用意されている)をリンクする必要があります

算術関数のリンク 算術関数の例 算術関数のオブジェクトファイルをリンクする場合には「-lm」のオプションをつける sin(), cos(), asin(), exp(), sqrt(), pow() ⇒ WEB検索 算術関数のオブジェクトファイルをリンクする場合には「-lm」のオプションをつける $ cc -lm hoge.c (単一ソース) 「hoge.c」はsin()」を含む単一ソース  $ cc -lm hoge1.o hoge2.o (分割コンパイル) 分割コンパイルの場合の最後のリンク時 既に準備されている「オブジェクトファイル」を「ライブラリ」と呼びます

実習結果のレポート 3つのソースファイル「ex6-2.c」、「ex6-3.c」、「ex6-4.c」を添付ファイルにしてメールを送ってください。 宛先: muroo@cc.tuat.ac.jp 件名:コンピューター基礎実験6 本文:感想および一言