プログラム言語 制御文
三項演算子
例(1)
int count = 25;
int ans = count > 20 ? 20 : count;
⇒ans : 20
↓ と同じ意味
if (count > 20) {
ans = 20;
}else{
ans = count;
}
例(2)
int count = 5;
int ans = count > 20 ? 20 : count;
⇒ans : 5
例(1)
Dim count As Integer = 25
Dim ans As Integer = If(count > 20, 20, count)
⇒ans : 20
↓ と同じ意味
If count > 20 Then
ans = 20
Else
ans = count
End If
例(2)
Dim count As Integer = 5
Dim ans As Integer = If(count > 20, 20, count)
⇒ans : 5
x = ‘BIG’ if ret else ‘SMALL’
BIG
例(1)
var count = 25;
var ans = count > 20 ? 20 : count;
⇒ans : 20
↓ と同じ意味
if (count > 20) {
ans = 20;
}else{
ans = count;
}
例(2)
var count = 5;
var ans = count > 20 ? 20 : count;
⇒ans : 5
If文
if (myStr == null) {
~
} else if ( myStr == “aa” ) {
~
} else {
~
}
※処理が1行のみ場合の省略形
if (a == 5) a = 10;
if (a == 5) {
a = 10;
}
If myStr = vbNull Then
~
ElseIf myStr = “bb” Then
~
Else
~
End If
※処理が1行のみ場合の省略形
if a = 5 Then a = 10
if a = 5 Then
a = 10
End If
System.out.println(~);
}else if (true){
System.out.println(~);
}else{
if (true){
System.out.println(~);
}
}
{ }は省略可能
if (true)
System.out.println(~);
else if (false)
System.out.println(~);
else
if (true)
System.out.println(~);
htmlを出力する場合の書き方
<?php if(条件): ?>
html文
<?php elseif(条件): ?>
html文
<?php endif; ?>
print(f'{num} > 0 and {num} < 10′)
elif num == ” or num == 0:
print(f'{num} == “” or {num} == 0′)
else:
print(f'{num} < 0′)
~
} elseif ($x == 5) {
~
} else {
~
}
then
~
elif [ $val = 1 ]
~
else
~
fi
Switch(Case)文
switch(myStr)
{
case null:
~
break;
case “aaa”:
~
break;
case “bbb”:
case “ccc”:
bbb or ccc の場合
~
break;
default:
~
break;
}
→if文で対応
switch(myStr)
{
case null:
~
break;
case “aaa”:
~
break;
default:
~
break;
}
int i = 1;
switch (i)
{
case 1:
goto caseA; // 独自のCaseへ移動可能
case 2:
goto caseB;
case 3:
return; // returnでプロシージャの処理を終了可能
caseA: // 独自のCaseを作成可能
goto case 2; // 既存のCaseへ移動可能
caseB:
break;
}
Select Case myStr
Case vbNull
~
Case “bb”
~
Case “C”, “D", “E"
~
Case 1 To 5
~
Case myStr > 5
~
Case Else
~
End Select
‘VB.NET限定
Select Case True
Case myStr = vbNull
~
Case 5 = 5
~
Case Else
~
End Select
switch (num)
{
case 1:
num++;
break;
case 2:
num++;
break;
default:
num++;
break;
}
// num : 3
int num = 2;
switch (num)
{
case 1:
num++;
case 2:
num++;
default:
num++;
}
// num : 4
breakが無いと以降の選択肢全てを通る(defaultも)。
For文
for i in range(5):
print(i)
→ 0 1 2 3 4
# range(初期値, 最終値)
for i in range(1, 5):
print(i)
→ 1 2 3 4
# range(初期値, 最終値, 増加値)
for i in range(1, 5, 2):
print(i)
→ 1 2
~
Next cnt
z:
for (int i=1; i<=3; i++){
for (int j=1; j<=3; i++){ if (j==1){ continue;
※loopを続ける(処理Aを通らない)
}else if (j==2){
break;
※内側のforを抜ける
}else if (j==3){
break z;
※外側のforを抜ける
}
処理A
}
}
【複数処理】
for (int i = 0, j = 0; i < 4; i++, j++){
System.out.println(i+j);
}
【省略】
for (int i = 0; i < 4; ; ){
System.out.println(i);
↑ ではなく↓ に書く
i++;
}
【{}の省略】
for (int i = 0, j = 0; i < 4; i++, j++)
System.out.println(i+j);
// ⇒ 0 2 4 6
↓ と同じ
for (int i = 0, j = 0; i < 4; i++, j++){
System.out.println(i+j);
}
for (int i = 0, j = 0; i < 4; i++, j++)
System.out.println(i);
System.out.println("aaa");
⇒ 0 1 2 3 aaa
⇒ {} を省略したfor文は1行目しかloopしない。
(aaa)の行はloop終了後
↓ と同じ
for (int i = 0, j = 0; i < 4; i++, j++){
System.out.println(i);
}
System.out.println(“aaa”);
コンパイルエラー
初期値は異なる型を宣言できない
for (int i = 0, long j = 0; i < 4; i++, j++){
System.out.println(i+j);
}
コンパイルエラー
loop毎の処理は複数指定できない
for (int i = 0, j = 0; i < 4, j < 4; i++, j++){
System.out.println(i+j);
}
【Loop毎の処理】
public static void main(String[] args) {
for (int i = 0, j = 0; i < 3; i++, j++, myFunction1(i), myFunction2(j)){
System.out.println(i);
}
}
public static void myFunction1(int i){
System.out.println("myFunction1:" + i);
}
public static void myFunction2(int j){
System.out.println("myFunction2:" + j);
}
0
myFunction1:1
myFunction2:1
1
myFunction1:2
myFunction2:2
2
myFunction1:3
myFunction2:3
do
~
done
↓ も可
for i in `seq 1 3`
do
~
done
オプション | 機能 |
---|---|
無し | ディレクトリ内を対象 |
/d | ディレクトリ名を対象 |
/r | ディレクトリ名及びそのサブディレクトリを対象 |
/l | 指定した値を代入 |
for /l %%i in (1,1,10) do (
for /l(代入オプション) %%変数 in (初期値,増分,終了値) do (
echo %%i
)
cd ~
for %%i in (*.txt) do (
echo %%i
)
LOOP内で変数を扱う場合
setlocal ENABLEDELAYEDEXPANSION
初期値、増分、終了値
FOR /L %%i IN (1,1,3) DO (
SET LOOP+=1
SETは従来通り
ECHO !LOOP!
!で囲む
IF !LOOP!=2 (
CALL test.bat !LOOP!
)
)
While文
while(cnt < 5){ ~ if (cnt == null) { break; }; if (cnt == null) { continue; }; cnt += 1; } do{ ~ if (cnt == null) { break; }; if (cnt == null) { continue; }; cnt += 1; } while(cnt<5);
Do While i < 10
~
Continue Do
Exit Do
i += 1
Loop
Do
~
Continue Do
Exit Do
i += 1
Loop While i < 10
'VB.NET限定
Do Until i > 5
~
Continue Do
Exit Do
i += 1
Loop
Do
~
Continue Do
Exit Do
i += 1
Loop Until i > 5
int count = 0;
do {
System.out.println(count);
count ++;
} while (count < 5);
// ⇒ 0 1 2 3 4 5
前条件
count = 0;
while (count < 5) {
System.out.println(count);
count ++;
}
// ⇒ 0 1 2 3 4
{}省略
count = 0;
do
count ++;
while (count == 0);
// count : 1
// ↓ と同じ
do {
count ++;
} while (count == 0);
{}省略時の注意点
int i = 0;
int j = 0;
while (i < 5)
i ++;
j ++;
// i : 5
// j : 1
// {}省略時のwhile文は1行しかloopしない。
// ↓ と同じ
while (i < 5) {
i ++;
}
j ++;
while(cnt < 5){ ~ if (cnt == null) { break; }; if (cnt == null) { continue; }; cnt += 1; }
while (true){
print $i++;
if ($i > 100) break;
}
<?php while(条件): ?>
html文
<?php endwhile; ?>
while i<10:
i += 1
print(i)
~
$x++;
}
until ($x > 5) {
~
$x++;
}
例 while [true]
do
~
インクリメント
count=$((++count))
count=$((count++))
done
条件
演算子 | 機能 | 意味 |
---|---|---|
-eq | = | equal |
-ne | != | not equal |
-lt | < | less than |
-le | <= | less than or equal |
-gt | > | greater than |
-ge | >= | greater than or equal |
拡張For文(ForEach文)
foreach (int x in myInt)
{
~
if (x == null) { break; };
if (x == null) { continue; };
}
//foreach (string x in myInt){ ~ } だとエラー。xとmyIntは同じ型でなくてはならない
Enumerable.Range()を使ったfor文の代わり
foreach (int i in Enumerable.Range(start:0 , count:10) )
{
Console.WriteLine(i);
// ⇒ 0 1 2 3 4 5 6 7 8 9
}
For Each x As Integer In myInt
~
Continue For
Exit For
Next x
Enumerable.Range()を使ったfor文の代わり
For Each i As Integer In Enumerable.Range(start:=0, count:=10)
Console.WriteLine(i)
’ ⇒ 0 1 2 3 4 5 6 7 8 9
Next i
MyArray(0) = 1
MyArray(1) = 2
MyArray(2) = 3
For Each x In MyArray
MsgBox(x)
Exit For
Next x
for (int elm : myInt) {
System.out.println(elm);
}
int[][] myArray = new int[][]{{1},{2,2},{3,3,3}};
for (int[] outer : myArray){
for (int inner : outer){
System.out.println(inner);
}
}
1,
’a’,
{
key1: ‘value1’,
},
100,
{
key2: ‘value2’,
key3: ‘value3’,
}
];
for (i in array) {
配列のkeyが取得される
console.log(i);
// 0, 1, 2, 3, 4
}
for (i of array) {
配列のvalueが取得される
console.log(i);
// 1, ‘a’, { key1: ‘value1’ }, 100, { key2: ‘value2’, key3: ‘value3’ }
}
loopを1周回す=continue
return true;
loopを抜ける=break
return false;
});
// 配列・オブジェクトの要素を取得
$e = $elm;
// Loopを抜ける。
break;
}
foreach ($array as $key => $elm) {
// 配列・オブジェクトのキーを取得
$k = $key;
$e = $elm;
}
for item in ary:
print(item)
→ php python Java
# 連想配列初期化
dic = {
‘php’:’CakePHP3′,
‘python’:’Django’,
‘Java’:’Spring-boot’,
}
for key in dic.keys():
print(key)
→ php python Java
for value in dic.values():
print(value)
→ CakePHP3 Djanog Spring-boot
for key, value in dic.items():
print(key, value)
→ php CakePHP3 python Djanog Java Spring-boot
foreach my $i (@x) {
print “$i\n”;
}
⇒1 2 3 4 5