• 検索結果がありません。

物質工学科 田中晋

N/A
N/A
Protected

Academic year: 2021

シェア "物質工学科 田中晋"

Copied!
24
0
0

読み込み中.... (全文を見る)

全文

(1)

C言語によるプログラミング基礎

物質工学科

電気・機械実習

(2)

評価について

2 評価: 演習1~9 9点×9テーマ=81点 演習10 19点 提出: 1週目に貸し出したUSBメモリに自分の学籍番号のフォルダを作る。 各演習の.cファイルを指定されたファイル名で保存する (演習10については.exeファイルも併せて保存) 最終週の翌週火曜日8:50までにUSBメモリを提出 指定時間までに提出されない場合 -10点 USBメモリの紛失 -10点 + 同じUSBメモリを弁償

(3)

実習計画

第1週 実行ファイルの作成、変数・関数の基礎を確認 練習1:実行ファイルの作成&画面出力 「printf」文 練習2:変数の型 練習3:キーボード入力 「scanf」文&四則演算 演習1~3 第2週 繰り返しとその制御の方法を習得する 練習4:サブルーチン(関数の取扱) 練習5:繰り返し 「for」 練習6:繰り返し 「while」 演習5~6 第3週 条件分岐の方法を習得する 練習7:条件分岐 「if else」 練習8:条件分岐の入れ子 「else if」 論理演算子 「&& , ||」 演習7~9 第4週 演習10 野球のスコアボード

(4)

実習の流れ

4 

エディタのインストール

コンパイラのインストール

PATHの追加

練習

 コーディング(プログラミング)  保存  コンパイル  実行

演習

 コーディング(プログラミング)  保存  コンパイル  実行 初回のみ 実習開始時のみ

(5)

C言語開発環境の準備とファイルの保存

1. エディタのインストール

 USBメモリ内の「1. Emeditor_18.7.2_64bit版」からインストール ※OSが32bit版の場合は1. Emeditor_18.7.2_32bit版 

2. コンパイラのインストール

 USBメモリ内の「 2. Cコンパイラ インストール手順.pdf」 に従ってインストール 

保存について

 ファイル名は原則 半角英数字  拡張子は”.c”とする。 ex) prog01.c

(6)

コンパイル 手順1

6 ① コマンドプロンプトの起動と準備 スタート → Windowsシステムツール → コマンドプロンプト ② PATHの追加 (その日に一度だけ) コマンドプロンプトに入力

set PATH=%PATH%; C:¥MinGW¥bin

③ コンパイル準備 (その日に一度だけ)

USBメモリのドライブレター(ドライブ名)を確認 ex) D、E

USBメモリ内に学籍番号のフォルダを作成 ex) 15410

コマンドプロンプトに入力

d: (USBメモリに移動)

cd 15410 (自分のフォルダに移動)

(7)

コンパイル手順2

④ コンパイル コマンドプロンプトに入力 > gcc ファイル名.c ex) gcc ex01.c  gccとファイル名の間に半角スペースが必要  自分のフォルダ内に「a.exe」が生成される ⑤ 実行 コマンドプロンプトに入力 > a.exe 適宜ファイル名を変更すること。 (コンパイルするごとに上書きされる)

(8)

#include <stdio.h>

int main(){

printf(“Hello World¥n");

}

練習1.実行ファイルの作成&画面出力

printf文

8 ファイルの 取り込み 標準ライブラリ スタンダードIO(入出力) 画面に文字を表示させる命令 Main関数 一番初めに実行される処理 命令文の最後には セミコロン「;」をつける 日本語以外は半角英数で入力! 第1週 「Hello World」と表示されたら成功! ¥n は改行 “{”から”}”までが Main関数で実行される 半角スペース ファイル名「prog01.c」で保存&コンパイル

(9)

演習1 printf文を5, 6行追加した文章を表示せよ。 改行位置も工夫すること。 printf("こんにちは世界¥n"); printf(“いえ、こんにちは宇宙¥nこんばんは宇宙"); ファイル名「ex01.c」で保存&コンパイル&提出

練習1.実行ファイルの作成&画面出力

printf文

Main関数内にprintfを記述すれば、その分だけ表示される。 Printf ( “xxx”)のxxxの前か後ろに¥nを付けないとprintfが連結される 10進数 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 16進数 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 16進数とは 10進数は 0 から 9 までの 数字を使って数を表し、 数が 0 から 1、2、3… と順に増えていき、7、8、9 までは 1桁、 次は桁上がりして 10となる 。 16進数には 16種類の数字がありますが、 1~9とアルファベットの A ~ F を 「数字」 として使用 16進数は 0 から F までの 16種類の数字を使って数を表し、 数が 0 から 1、2、3… と順に増えていくとき、7、8、9 の次は A、B、C と続き、 D、E、F までは 1桁ですが、 次に桁上がりして 10 になります

(10)

#include <stdio.h> int main(){ int i, j; float k; i = 10; j = 2; k = 30.2515; printf("i = %d¥n j = %d¥n k = %f¥n", i, j, k); j = i; // “=“は代入を意味する k = (float)i ; //実数型へ変換 printf("i = %d¥n j = %d¥n k = %f¥n", i, j, k); }

練習2.

変数の型

演習2 上記の変数 i について 16進数の整数で表示せよ。また、変数 k について小数点以下2桁 までの表示(30.25)にせよ。 %.2f 小数点以下の桁数の指定 ファイル名「ex02.c」で保存&コンパイル&提出 変数の型を宣言 int 整数型 char 文字型 float 単精度浮動小数点型 double 倍精度浮動小数点型 フォーマット指定子 %d 10進数の整数 %x 16進数の整数 %f 実数 %c 1文字 %s 文字列 ファイル名「prog02.c」で保存&コンパイル 「//」 はコメントの意味。実行されない。

(11)

#include <stdio.h> int main(){

int a[2] ; //整数型の変数配列aを2個作りなさい

char c[100]; //文字型の変数配列cを100個作りなさい

printf("整数を2つ入力してください> ");

scanf(“%d %d”,&a[0], &a[1]);

printf("入力された数字の和は%dです。¥n", a[0]+a[1]); printf("文字列を入力してください>"); scanf("%s",&c); printf("入力された文字列は%sです。¥n",c); }

練習3.キーボード入力

scanf文

&四則演算

& はアドレス演算子 配列 a[0], a[1] 1つ目の入力値をa[0]、2つ目の入力値をa[1]に代入する [ ]内は0から始まる

(12)

12 演習3 キーボードから10進数の整数を3つ入力し、その平均値を整数で表示せよ。

練習3.キーボード入力

scanf文

&四則演算

#include <stdio.h> int main(){ int a[_] ; printf(“整数を3つ入力してください> "); scanf(“___”, ____); printf(“平均は%dです。¥n”, ________); } ファイル名「ex03.c」で保存&コンパイル&提出 配列の入れ物を3つ用意する 3つの入力を受付け、配列に代入する 3つの変数から平均を求める

(13)

#include <stdio.h>

int shou(int x, int y){ int z; z = x / y; return z; } int main(){ int a = 10, b = 3, c; c = shou(a, b); printf("商は%d ¥n", c); return 0; //終了時に0を返す。省略可 }

練習4.

サブルーチン(関数の取扱)

サブルーチン 商の計算をする関数を作成。これをサブルーチンとして利用する。 第2週 変数aとbを整数型変数xとyとして受け取る 変数zの値 を返す サブルーチンshouに変数aとbを送る

(14)

#include <stdio.h>

int shou(int x1, int y1){ int z1;

z1 = x1 / y1; return z1; }

int amari(int x2, int y2){ int z2; z2 = x2 ___ y2; return z2; }

練習4.

サブルーチン(関数の取扱)

演習4 練習4に余りを計算するサブルーチンを追加し、余りも表示するプログラムにせよ。 余りの算出 z = x % y; ファイル名「ex04.c」で保存&コンパイル&提出 int main(){ int a = 10, b = 3, c, d; c = shou(a, b); d = amari(___, ___); printf("商は%d ¥n", c); printf(“余は%d ¥n", d); return 0; //終了時に0を返す。省略可 }

(15)

#include <stdio.h> int main(){ int i, j; j = 10; for { printf("現在の値は%dです。¥n", i); } }

練習5.繰り返し

for文

条件式で利用できる不等号 < <= > >= == != (未満) (以下) (超える) (以上) (等しい) (等しくない) 指定回数だけ繰返す 表示を10回繰り返すプログラム (i = 0; i < j; i++) i = 0 … iは0からスタート i < j … iがjより小さい間繰り返す

(16)

16 演習5 任意の数字(学籍番号の下3桁)から1000までの数字を足し合わせた合計を 表示せよ。

練習5.繰り返し

for文

変数(整数型)を2つ用意 jは合計値で初期値0

for (iは(学籍番号下3桁)から始まり、 iが1000になるま で繰り返し、iは1ずつ増加する) { jはjにiを加えたもの; } 合計値jを表示せよ #include <stdio.h> int main(){ int i, j; j = 0;

for (i=_____; i___1000;i++){ j = j + i;

}

printf(“合計値は%d”, j); }

(17)

#include <stdio.h> int main(){ int i, j, k; i = 10; //加算する数値 j = 0; //合計を入れる変数 k = 0; //加算した回数 while (j <= 500){ j = j + i; i++; k++; } printf("合計が500を越えたのは%d回目",k); }

練習6.繰り返し

while文

条件を満たす間、繰返す ( )内の条件を満たしている間、 { }内を繰り返し実行 10から1つずつ数字を加算し、500を越えるのが何回目かを表示する。

(18)

18 演習6 貯金が毎年1.01倍ずつ増えるとする。キーボードから最初の金額と目標金額を 入力し、目標金額まで達する年数を表示せよ。

練習6.繰り返し

while文

ファイル名「ex06.c」で保存&コンパイル&提出 整数型変数を2つ用意; 小数点型変数を2つ用意; kを利率(*1.01)とする; scanfで変数を2つ入力を受ける; 貯金額iが目標金額jより大きくなるまで繰り返す{ 貯金額は、貯金額×利率; 繰り返しを1回実行すると1年; } 計算された年数を表示する; #include <stdio.h> int main(){ int j,l=0; _(型の宣言)_ i,k; k=1.01; printf("現在の金額、目標金額の順で入力¥n"); scanf(“___ ___",&i,&j); while(i __ j){ i=i*k; l++; } printf(“%d年かかります¥n",l); }

(19)

練習7.

if else

:条件分岐

#include <stdio.h> int main(){ int x; printf("整数を入力してください> "); scanf("%d",&x); printf("入力された数字%dは", x); if (x % 2 == 0){ もし、x÷2の余りが0ならば、 printf(“偶数”); 「偶数」を表示 } else { しなさい。 そうでなければ、 printf(“奇数”); 「奇数」を表示 } しなさい。 printf("です。¥n"); } 第3週 偶数か奇数かを判別する

(20)

練習7.

if else

:条件分岐

20 演習7 練習7のプログラムにおいて、負の値や0を入力した場合は、例外としてエラーと するようにif else部分を書き換えよ。 ファイル名「ex07.c」で保存&コンパイル&提出 もし、入力値xが0より大きいなら、 もし、x÷2の余りが0なら、 「偶数です」と表示 そうでなければ、 「奇数です」と表示 する。 そうでなければ、 「0以下の数字です」と表示 する。 if (x _____ ) { if ( ______ ) { printf (___); } else { printf (___); } else { printf (_______); } ヒント: if文を入れ子にする。 (if文のなかにif文を入れる)

(21)

練習

8.

else if

:条件分岐の入れ子

&& , ||

:論理演算子

#include <stdio.h> int main(){ int a[2]; printf("整数を2つ入力してください> "); scanf("%d %d",&a[0], &a[1]);

if (a[0]%2==0 && a[1]%2==0){ もし a[0]が偶数かつa[1]が偶数の場合は、

printf(“両方とも偶数です¥n”); 「両方とも偶数です」と表示

} else if (a[0]%2!=0 && a[1]%2!=0) { もし a[0]が偶数でなく、かつa[1]が偶数でない場合は、

printf(“両方とも奇数です¥n”); 「両方とも奇数です」と表示 } else { そうでなければ、 printf(“一方が奇数です¥n”); 「一方が奇数です」と表示 } する。 } 2つの数字がどちらも偶数か、どちらも奇数か、それ以外かを判別する 論理演算子 && AND (~かつ~) || OR (~もしくは~)

(22)

22 演習8 1~12月のうち1つの数字入力し、春夏秋冬の季節を表示せよ。 演習9 3つの数字を入力し、大きい順に並べ替えよ。 ファイル名「ex09.c」で保存&コンパイル&提出 ファイル名「ex08.c」で保存&コンパイル&提出 春:3~5月 夏:6~8月 秋:9~11月 冬:12・1・2月

3以上かつ5以下 (a>=3 && a<=5) 6以上かつ8以下 (a>=6 && a<=8) 9以上かつ11以下 (a>=9 && a<=11)

それ以外 (a==12 || a==1 || a==2)

a[3]とb[3]を用意する。 もし、a[0] > a[1] ならば、 b[0]にa[0]を代入 b[1]にa[1]を代入 そうでなければ、 b[0]にa[1]を代入 b[1]にa[0]を代入 する。 もし、b[1] > a[2] ならば、 b[2]にa[2]を代入 そうではなく、b[0] > a[2]ならば、 b[2] に b[1] を代入 b[1] に a[2] を代入 そうではなく、b[0] < a[2]ならば、 b[2] に b[1] を代入 b[1] に b[0] を代入 b[0] に a[2] を代入 する。 3つの数字を大きい順に並べるとb[0] > b[1] > b[2]

練習

8.

else if

:条件分岐の入れ子

&& , ||

:論理演算子

(23)

演習

10.総合演習

演習10 野球のスコアボードを作成せよ。 第4週 Level.1 基本機能 9回までの表、裏の得点を順に入力。 各チーム名を入力、もしくはプログラム文中で設定しておき、 入力するたびに得点と合計点を表示する。 (ヒント) for もしくは while で繰り返す scanf で入力を受け付ける printf で表示する Level.2 9回表で後攻チームの得点が多い場合、裏は入力せず終了。 (ヒント) while と 論理演算子? それとも if で対応する?

(24)

演習

10.総合演習

24 ファイル名「ex10.c」で保存&コンパイル&提出 .exeファイルも提出 表示例 1 2 3 4 5 6 7 8 9 合計 Aチーム 0 0 1 0 2 0 1 0 1 5 Bチーム 1 0 0 0 1 1 0 3 x 6 Level.3 9回裏で同点の場合、決着がつくまで延長戦を行う。 Level.4 延長戦の有無を含めてスコアボードを表示する。

参照

関連したドキュメント

社会調査論 調査企画演習 調査統計演習 フィールドワーク演習 統計解析演習A~C 社会統計学Ⅰ 社会統計学Ⅱ 社会統計学Ⅲ.

「AI 活用データサイエンス実践演習」 「AI

卒論の 使用言語 選考要件. 志望者への

国際地域理解入門B 国際学入門 日本経済基礎 Japanese Economy 基礎演習A 基礎演習B 国際移民論 研究演習Ⅰ 研究演習Ⅱ 卒業論文

授業は行っていません。このため、井口担当の 3 年生の研究演習は、2022 年度春学期に 2 コマ行います。また、井口担当の 4 年生の研究演習は、 2023 年秋学期に 2

使用言語 日本語 選考要件. 登録届を提出するまでに個別面談を受けてください。留学中で直接面談 できない場合は Skype か

卒論の 使用言語 選考要件