情報基礎及び演習 プログラミング基礎① 電気・佐藤亮一.

Slides:



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

オブジェクト指向言語・ オブジェクト指向言語演習 中間試験回答例. Jan. 12, 2005 情報処理技術基礎演習 II 2 オブジェクト指向言語 中間試験解説 1  (1) 円柱の体積(円柱の体積 = 底面の円の面積 x 高さ) を求めるプログラムを作成しなさい。ただし、出力結果は、入 力した底面の円の半径.
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
7/10 if 文課題 力作が多くて感心! 演習1:キーボードから2つの整数を入力し、小さい方の数字を 表示せよ。
演算、整数型と浮動小数点型 第3回目 [4月27日、H.16(‘04)] 本日のメニュー 1)前回の課題・宿題 2)ファイルサーバの利用
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
1.1 C/C++言語 Hello.ccを作りコンパイルしてa.outを作り出し実行する
計算技術研究会 C言語講座 第3回 Loops (for文 while文).
基礎プログラミングおよび演習 第9回
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
第2回ネットワークプログラミング 中村 修.
OSとコマンド OS:コンピュータを使うための基本プログラム コマンド:OS上で使用できる命令 OS本体であるカーネルの内部コマンド
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
第7回 条件による繰り返し.
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
プログラムの制御構造 選択・繰り返し.
プログラミング2 関数
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
繰り返し計算 while文, for文.
関数の定義.
プログラミング応用 printfと変数.
第10回関数 Ⅱ (ローカル変数とスコープ).
プログラミング演習I 2003年5月7日(第4回) 木村巌.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
第7回 条件による繰り返し.
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
復習 前回の関数のまとめ(1) 関数はmain()関数または他の関数から呼び出されて実行される.
関数への道.
プログラミング基礎B 文字列の扱い.
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
岩村雅一 知能情報工学演習I 第12回(C言語第6回) 岩村雅一
C言語 はじめに 2016年 吉田研究室.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
C言語ファミリー C# 高級言語(抽象的) Java オブジェクト指向 C++ C 機械語(原始的)
プログラミング演習I 2003年4月30日(第3回) 木村巌.
IF文 START もしも宝くじが当たったら 就職活動する 就職活動しない YES END NO.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
第5回 プログラミングⅡ 第5回
ループだよ!難しいよ! 第5章 while(ループ);.
知能情報工学演習I 第8回(後半第2回) 課題の回答
cp-15. 疑似乱数とシミュレーション (C プログラミング演習,Visual Studio 2019 対応)
cp-3. 計算 (C プログラミング演習,Visual Studio 2019 対応)
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
岩村雅一 知能情報工学演習I 第12回(後半第6回) 岩村雅一
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
情報処理Ⅱ 第2回 2004年10月12日(火).
モバイルプログラミング第2回 C言語の基礎 (1).
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
情報処理Ⅱ 2005年11月25日(金).
プログラミング1 プログラミング演習I 第2回.
printf・scanf・変数・四則演算
第2章 数値の入力と変数 scanfと変数をやります.
知能情報工学演習I 第9回(後半第3回) 課題の回答
計算技術研究会 第5回 C言語勉強会 関数(function)を使う
復習 いろいろな変数型(2) char 1バイト → 英数字1文字を入れるのにぴったり アスキーコード → 付録 int
C言語講座 四則演算  if ,  switch 制御文.
分岐(If-Else, Else if, Switch) ループ(While, For, Do-while)
知能情報工学演習I 第10回( C言語第4回) 課題の回答
プログラミング演習I 補講用課題
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
第1章 文字の表示と計算 printfと演算子をやります 第1章 文字の表示と計算.
第1章 文字の表示と計算 printfと演算子をやります.
= 55 課題6-1 #define _CRT_SECURE_NO_WARNINGS
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
Presentation transcript:

情報基礎及び演習 プログラミング基礎① 電気・佐藤亮一

本日の内容 4時限 プログラミングの手順(復習) Cの基本構造(復習) 型と変数(復習) if文,for文(復習) 演習 5時限 main関数とユーザ定義関数 ユーザ定義関数の型

本日の内容 4時限 プログラミングの手順(復習) Cの基本構造(復習) 型と変数(復習) if文,for文(復習) 演習 5時限 main関数とユーザ定義関数 ユーザ定義関数の型

プログラミングの手順 1.テキストエディタ(メモ帳等)でプログラムを作成 3.コマンドプロンプト上で「実行」 (a.exe) 2.コマンドプロンプト上で「コンパイル」 (gcc ファイル名 or mygcc ファイル名) ファイル名は,最後に「.c」をつける.

C言語:コンパイルの流れ ソースファイル(.c) プリプロセッサ コンパイル アセンブルファイ(.s) アセンブラ 1.プログラムを作成 ソースファイル(.c) プリプロセッサ 2.コンパイル コンパイル アセンブルファイ(.s) アセンブラ オブジェクトファイル(.o) 実行ファイル(.exe) 3.プログラムの実行

本日の内容 4時限 プログラミングの手順(復習) Cの基本構造(復習) 型と変数(復習) if文,for文(復習) 演習(復習) 5時限 main関数とユーザ定義関数 ユーザ定義関数の型 演習

Cの基本構造 #include <stdio.h> int main(void) { printf(“This is a short program in C. ”); return (0); } 「独習C」より #include <stdio.h> ヘッダファイルstdio.hをプログラムに組み込むための命令. stdio.hにはprintf()に関する情報が含まれている. このように,行の先頭に「#」がつく命令は,プリプロセッサへの命令となる(1行で書くこと). プリプロセッサへの読み込みは,ヘッダファイル以外も可能で,自分で作成したファイルも 読み込める.その際は「#include “***.c”」と「” ”」でファイル名を囲む形となる.

Cの基本構造 #include <stdio.h> int main(void) { printf(“This is a short program in C. ”); return (0); } 「独習C」より int main(void) この行からmain()関数がはじまる. int はmain()関数の返し値が整数であることを宣言することを意味する. カッコ内のvoidはmain()関数が引数を取らないことをコンパイラに知らせることを意味する. 最後の行のreturn 0; はmain()関数から値0を,プログラムを呼び出したプロセス(この場合 はOS: Windows)に返すという意味. main()関数から値0を返すことで,プログラムが正常に終了したことを表す,取り決められて いる.

Cの基本構造 #include <stdio.h> int main(void) { printf(“This is a short program in C. ”); return (0); } 「独習C」より printf(“This is a short program in C. ”); “ ”で囲まれた文字を出力します. 「;」を忘れずに! あと,改行したいときは“\n”を入れてください. printf(“This is a short program in C. \n ”);

本日の内容 4時限 プログラミングの手順(復習) Cの基本構造(復習) 型と変数(復習) if文,for文(復習) 演習(復習) 5時限 main関数とユーザ定義関数 ユーザ定義関数の型 演習

型と変数 情報の単位について の前に ビット 0か1を表わす. 2進数で表現され,例えば3bitだと, 000, 001, 010, 011, 100,101, 110, 111 のように,23=8通りの組み合わせとなる. バイト 一般に,8bitを一つとした単位.1byte=8bit コンピュータの情報を表わす単位. 8bitなので,28=256通りの組み合わせが表現できる. 例えば,整数だと 符号なしの場合, 0から255 符号ありの場合, -128から127 を,文字だと256文字を割り当てることができる.

型と変数 情報の単位について の前に 問題1 2バイトだと何通りの整数を表現できますか? また,符号なし(unsigned)と符号あり(singed)の場合の値の範囲を示してください. 問題2 4バイトだと何通りの整数を表現できますか? また,符号なし(unsigned)と符号あり(singed)の場合の値の範囲を示してください.

型と変数 #include <stdio.h> int main(void) { int i,j; double x,y; printf(“integer i= %d”, i); printf(“double x= %f”, x); return (0); }

型と変数 型 オブジェクト int型 i j double型 x y 箱の大きさ等をあらかじめ決めて おく必要がある (オブジェクトのための設計図) 数値等を格納する箱

型と変数 型 大きさ等 int 2バイト~4バイト(システムに依存) 整数 1バイト. - 256種類の文字,あるいは - signed char(-127~127)か - unsigned char(0~255)の範囲の数値. char (8bit整数) 4バイト. float 実数 double 8バイト.

型と変数 #include <stdio.h> int main(void) { int i,j; double x,y; printf(“integer i= %d”, i); printf(“double x= %lf”, x); return (0); } 型 %d int型 %f float型 %lf double型 %c char型 *double型の場合,%lfが基本なのですが,%fを実数型の標準として使うようになってきたので,「%f」でもOKです.

型と変数 問題1 前ページのプログラムを作成し,実行してみてください.ディスプレイに表示された内容を メモしてください. 問題2 問題1の回答が1行毎に出力されるように,プログラムを改良してください. 問題3 問題2のプログラムを,i+jが出力されるように改良してください. 問題4 問題3のプログラムを,jの値をラジアンに変換して表示できるように改良してください. おまけ yの数値は何?(有名?)

本日の内容 4時限 プログラミングの手順(復習) Cの基本構造(復習) 型と変数(復習) if文,for文(復習) 演習(復習) 5時限 main関数とユーザ定義関数 ユーザ定義関数の型 演習

if文,for文(if文) コードブロックを用いた表現. if(条件) 真の時; if(条件) 真の時; else 偽の時; if(条件){ 真の時1; 真の時2;   : 真の時N; } if(条件){ 真の時1; 真の時2;   : 真の時N; } else{ 偽の時1; 偽の時2; 偽の時N;

if文,for文(if文) 例1 #include <stdio.h> No a>b int main(void) { int a,b; a=1; b=10; if(a>b){ printf(“aはbより大きい.”); } return (0); Yes “aはbより大きい.” と表示.

if文,for文(if文) 例1 #include <stdio.h> int main(void) { int a,b; 演算子 意味 > ~より大きい >= ~より大きいか、等しい(~以上) < ~より小さい(~未満) <= ~より小さいか、等しい(~以内) == ~と同じ(等しい) != ~以外(等しくない) int main(void) { int a,b; a=1; b=10; if(a>b){ printf(“aはbより大きい.”); } return (0);

if文,for文(if文) 例2 #include <stdio.h> a>b No int main(void) { int a,b; a=1; b=10; if(a>b){ printf(“aはbより大きい.”); } else{ printf(“aはbより小さい.”); return (0); Yes “aはbより大きい.” と表示. “aはbより小さい.” と表示.

if文,for文(if文) 練習1 int型の変数aを用い,その値が80以上のときは「優(Yuu)」,60点以上80点未満の ときは「可(Ka)」,60未満の場合は「不可(Fuka)」と表示するプログラムを作成せよ. 書き方の例1 if(条件1){  条件1が真の時の処理; } else{ if(条件2){    条件2が真の時の処理;    条件2が偽の時の処理; 書き方の例2 if(条件1){  条件1が真の時の処理; } else if(条件2){  条件1が偽で,条件2が真の時の処理; else{  条件1が偽で,条件2も偽の時の処理;

if文,for文(if文) 練習1 int型の変数aを用い,その値が80以上のときは「優(Yuu)」,60点以上80点未満の ときは「可(Ka)」,60未満の場合は「不可(Fuka)」と表示するプログラムを作成せよ. 条件1 フローチャートの例 No Yes 条件1が真のときの処理 条件2 No Yes 条件2が真のときの処理 条件2が偽のときの処理

if文,for文(if文) 練習2 2つのdouble型の変数a,bを用意し,a/bを計算した結果をdouble型の変数cに代入し,cを表示するプログラムを作成してください.ただし,b=0のときは「ゼロで除算することはできません」と表示するようにしてください. 練習3 変数aを用意し,aの値が偶数ならば「(aの値)は偶数です」,奇数ならば「 (aの値)は奇数です」と表示するプログラムを作成してください. (ヒント) 偶数か奇数かは「余り」を考えると すぐに判定できます. 「余り」を計算するには amari=a%4;  とします(aを4で割った時の余り) (念のため)  a=7; とした場合は,  「7は奇数です」 と表示するようにします.

if文,for文(for文) コードブロックを用いた表現. for(初期設定部; 条件判定部; インクリメント部) 文; 文1; 文2;  : 文N; }

if文,for文(for文) 実行結果は 1 2 3 4 5 6 7 8 9 10 終わり となる. 例1a #include <stdio.h> int main(void) { int num; for(num=1; num<11; num=num+1){ printf(“%d”, num); } printf(“終わり”); return (0); 実行結果は 1 2 3 4 5 6 7 8 9 10 終わり となる.

if文,for文(for文) 実行結果は 終わり となる. 例1b #include <stdio.h> int main(void) { int num; for(num=11; num<11; num=num+1){ printf(“%d”, num); } printf(“終わり”); return (0); 実行結果は 終わり となる.

if文,for文(for文) 実行結果は 1 2 3 4 5 6 7 8 9 10 終わり となる. 例1c #include <stdio.h> int main(void) { int num; for(num=1; num<11; num++){ printf(“%d”, num); } printf(“終わり”); return (0); インクリメント演算子 num++ num=num+1 デクリメント演算子 num-- num=num-1 実行結果は 1 2 3 4 5 6 7 8 9 10 終わり となる.

if文,for文(for文) 練習 int型の変数i, sumを用意し,iを繰り返し文の変数とし1から10まで変化させて表示してください.さらに,1から10の足し算を計算し,その結果を変数sumに代入して「1回だけ」表示させてください. sum 0回目のループ(ループ前) 中身は「空」 (考え方) sum 1回目のループ i 「i」には「1」が入っている. 2回目のループ i 「i」には「2」が入っている. sum 「sum」には一つ前のループまでの和が入っている. + sum

本日の内容 4時限 プログラミングの手順(復習) Cの基本構造(復習) 型と変数(復習) if文,for文(復習) 演習(復習) 5時限 main関数とユーザ定義関数 ユーザ定義関数の型 演習

演習(復習) for文では時間tを変数として計算します. また,for文のループから抜けるにはbreak文を使います.例えば 演習1 (前回の問題) 斜め上方に初速度v0,入射角thetaで小球を投射した.小球の軌道(x,y)を計算してください.ただし,y<=0になったとき,計算を停止してください. (ヒント) for文では時間tを変数として計算します. また,for文のループから抜けるにはbreak文を使います.例えば if(y<0) break; といった感じで使います.break文は,特別な条件が発生したときにループを ただちに終了する命令です. #include <math.h> も忘れずに!

演習(復習) (x,y)の集合は楕円です.a=b=1, alpha=0のとき円になります. 演習2 角度thetaを媒介変数として,(x,y)を計算してください.thetaは0度から360度まで変化させた場合の(x,y)を出力し,エクセルで形を確認してください. (ヒント1) (x,y)の集合は楕円です.a=b=1, alpha=0のとき円になります. a,bを[0,1]で,alphaを[0,pi/2]で変化させてみてください. (ヒント2) 出力先を変更するのはプログラムを変更しても良いのですが,以下のように コマンドラインで簡単に「ディスプレイ」から「ファイル」に変更できます. ただし,printfでは数値だけを出力するようにしてください. p10a777z>  a.exe >test.dat (test.datに(x,y)の値が保存されます)

本日の内容 4時限 プログラミングの手順(復習) Cの基本構造(復習) 型と変数(復習) if文,for文(復習) 演習(復習) 5時限 main関数とユーザ定義関数 ユーザ定義関数の型 演習

main関数とユーザ定義関数 #include <stdio.h> int main(void) { int a; double b; a=123; b=3.14; printf(“integer a= %d”, a); printf(“double b= %lf”, b); return (0); }

main関数とユーザ定義関数 #include <stdio.h> void hyouji(int a, double b) {      printf("integer a=%d\n", a);      printf("double b=%lf",b); } void hyouji(int a, double b); int main(void) { int a; double b; a=123; b=3.14; hyouji(a,b); return (0); }  プロトタイプ hyouji関数で処理 処理が終わるとmainへ戻る void型の関数

本日の内容 4時限 プログラミングの手順(復習) Cの基本構造(復習) 型と変数(復習) if文,for文(復習) 演習(復習) 5時限 main関数とユーザ定義関数 ユーザ定義関数の型 演習

ユーザ定義関数の型 #include <stdio.h> 型 kansuu(型 a, 型 b, 型 c) { 型 d return d; } 型 kansuu(型 a, 型 b, 型c); int main(void) { 型 a,b,c; 型 d; d=kansuu(a,b,c); printf(“enzan no kekka = %d”, d); return (0); } ここで「戻り値」の関数の「型」を宣言する. main関数で戻り値を利用している. 「戻り値」を利用する場合,int でもdoubleでも自由に宣言できる

ユーザ定義関数の型 #include <stdio.h> 型 kansuu(型 a, 型 b, 型 c) { 型 d return d; } 型 kansuu(型 a, 型 b, 型c); int main(void) { 型 a,b,c; 型 d; d=kansuu(a,b,c); printf(“enzan no kekka = %d”, d); return (0); } ここで「引数」の「型」を宣言する.

ユーザ定義関数の型 例1a #include <stdio.h> int main(void) { int a,b,c,d; d=(a+b)*2+c; printf(“enzan no kekka = %d”, d); return (0); }

ユーザ定義関数の型 例1b #include <stdio.h> int enzan(int a, int b, int c) { return (a+b)*2+c; } int enzan(int a, int b, int c); int main(void) { int a,b,c,d; a=123; b=456; c=789; d=enzan(a,b,c); printf(“enzan no kekka = %d”, d); return (0); }  プロトタイプ int型の関数 int enzan(int a, int b, int c) { int z; z=(a+b)*2+c; return z ; } int型の関数 ローカル変数

本日の内容 4時限 プログラミングの手順(復習) Cの基本構造(復習) 型と変数(復習) if文,for文(復習) 演習(復習) 5時限 main関数とユーザ定義関数 ユーザ定義関数の型 演習

演習 for文では時間tを変数として計算します. また,for文のループから抜けるにはbreak文を使います.例えば 演習1 (前回の問題) 斜め上方に初速度v0,入射角thetaで小球を投射した.小球の軌道(x,y)を計算してください.ただし,y<=0になったとき,計算を停止してください. この計算をkansuu1に. この計算をkansuu2に. (ヒント) for文では時間tを変数として計算します. また,for文のループから抜けるにはbreak文を使います.例えば if(y<0) break; といった感じで使います.break文は,特別な条件が発生したときにループを ただちに終了する命令です. #include <math.h> も忘れずに!

演習 X軸上をm回,y軸上をn回振動する信号の合成です. 演習2 (リサジュー図形) 角度thetaを媒介変数として,(x,y)を計算してください.thetaは0度から360度まで変化させた場合の(x,y)を出力し,エクセルで形を確認してください. この計算をkansuu1に. この計算をkansuu2に. (ヒント) X軸上をm回,y軸上をn回振動する信号の合成です. a,bを[0,1],alphaを[0,pi/2]の範囲で,m,nは適当に変化させてみてください.

演習 演習3 (下保先生リクエスト) 「整数では,前期の栽培Iで,最大公約数と最小公倍数を求めよう,と いうのをやりましたが,ちっともできてませんでした。また,やってみ てもいいかもしれません.」 演習4 (下保先生リクエスト) 「個体群動態で N(t+dt) - N(t) = (r - hN(t)) N(t) として,rを増 殖率,hをこみあいの効果とする。適当な,N(0) r, h を与えて, N(t) の変化を示しなさい。 」