May 31st, 2021
条件文は true or false によって処理を続けるかどうかなどを決める。 ループでも条件が true or false になるかどうかで処理を続けるか止めるかを決めている。 ループの強制終了やスキップなどもある。🤔💭
#include <stdio.h>
int main() {
int input;
printf("1~3の数値を入力してください...");
scanf("%d", &input);
if (input == 1) {
printf("1が入力されました。\n");
}
else if (input == 2) {
printf("2が入力されました。\n");
}
else if (input == 3) {
printf("3が入力されました。\n");
}
else {
printf("Error!!!\n");
}
}
scanf()は変換指定子とアドレスを指定するやつで、 第二引数の &... は変数のアドレスを求める演算子しているらしい。
変数、メモリ、アドレスの概念がないと理解できないですねこのへんは〜。
if文は 中括弧 を省略する形でも書くことができます。
if (input == 1)
printf("1が入力されました。\n");
else if (input == 2)
printf("2が入力されました。\n");
else if (input == 3)
printf("3が入力されました。\n");
else
printf("Error!!!\n");
ワンラインでもOK。
if (input == 1) printf("1が入力されました。\n");
else if (input == 2) printf("2が入力されました。\n");
else if (input == 3) printf("3が入力されました。\n");
else printf("Error!!!\n");
でも、Ruby、Pythonとかで使える様な後置ifは使えない。
input = gets.to_i
# Rubyの後置ifの例
puts input if input == 2
他の言語と同じ感じですね〜
<, <=, >, >=, ==, !=
条件 ? : ;
の三項演算子も使えるんですね〜
#include <stdio.h>
int main() {
int x;
char *y; // 配列変数に対して = で値を設定することはできない。なのでcharのポインタを指定して宣言。
// * がアドレスの実際の値を指し示しているっと。
printf("1~10の数値を入力してください。\n");
scanf("%d", &x);
if (x > 10 || x < 1) {
printf("Error !!!");
return 1;
}
// 三項演算子
y = (x % 2 == 0) ? "偶数です" : "奇数です";
printf("%s", y);
return 0;
}
switch分もある
#include <stdio.h>
int main() {
int num = 3;
switch (num) {
case 1:
printf("1だよ!\n");
break;
case 2:
printf("2だよ!\n");
break;
case 3:
printf("3だよ!\n");
break;
default:
printf("1~3じゃないです---😬\n");
}
}
&&, ||, !
AND OR NOT にあたるものがあります。
#include <stdio.h>
int main() {
int count = 1;
while (count <= 10) {
printf("カウント数: %d\n", count);
count++;
}
return 0;
}
カウント数: 1
カウント数: 2
カウント数: 3
カウント数: 4
カウント数: 5
カウント数: 6
カウント数: 7
カウント数: 8
カウント数: 9
カウント数: 10
さっきのwhileは条件チェックしてから処理を実行、
do whileは処理を実行してから条件チェックするってやつですね〜
#include <stdio.h>
int main() {
int count = 1;
while (count <= 10) {
printf("カウント数: %d\n", count);
count++;
}
return 0;
}
#include <stdio.h>
int main() {
int count = 1;
do {
printf("カウント数: %d\n", count);
if (count == 3) break;
count++;
} while (count < 10);
return 0;
}
カウント数: 1
カウント数: 2
カウント数: 3
#include <stdio.h>
int main() {
int count = 1;
do {
printf("カウント数: %d\n", count);
count++;
if (count == 3) continue;
} while (count < 10);
return 0;
}
カウント数: 1
カウント数: 2
カウント数: 3
カウント数: 4
カウント数: 5
カウント数: 6
カウント数: 7
カウント数: 8
カウント数: 9
インクリメントしている行と、if文を逆にすると無限ループになるので気をつけましょ。。。
for (初期値; 条件; 初期値に対する処理) {
処理;
}
#include <stdio.h>
int main() {
int num;
int limit = 10;
// 条件チェックでtrueなら -> printf -> インクリメント -> ...
for (num = 0; num <= limit; num++) {
printf("%d\n", num);
}
}
0 1 2 3 4 5 6 7 8 9 10
ということで、条件、ループ共に他の言語でも同じ様な書き方ができるものばかりでした。