goto文 (あまり使ってほしくない・・けど理解を深めるために・・)

必要最小限のコンピュータにおけるマシン語には、if else や while や forの命令はありません。
実行する位置を変更するジャンプ命令を利用して、条件による実行や繰り返しを実現しています。
C言語において、これに相当するのがgoto文です。
これは別途にラベルを作り、そのラベルがある位置へ実行位置を変更するものです。

ラベルは、文の前で 適当な名前を書いた直後に『コロン』を書くことで作ります。
下の例では、LOOP_S:LOOP_END:がラベルの部分です。

gotoの直後にラベル名書きます。これが実行されるとそのラベルがある文に実行位置を移動します。
gotoで移動できる範囲は同じ関数内と決っています。別の関数へ移動する命令は書けません。
つまりラベルのスコープ(通用する範囲)は、そのラベルがある関数だけなので、別の関数で既に使ったラベル名を使っても構いません。

プログラムの実行例を示します。(赤が入力です)

1回目入金>200
2回目入金>150
3回目入金>80
3回目入金>250
4回目入金>end
100円以上の入金平均額は200です。
4回目入金>400
5回目入金>100
6回目入金>100
7回目入金>200
8回目入金>end
100円以上の入金平均額は200です。

このプログラムは、100以上の入金だけを取り扱って、その入金回数と 合計をグローバル変数に記憶する関数を作っています。
そして、その関数内の繰り返し制御用にgoto文を使っています。以下でプログラムを示します。

しかしgoto文は、構造化プログラミングでない構造を書けるので、
『なるべく使用を避けるべき!』と言われています。
input_sum関数は、 できます。

構造化プログラミングについて、以下に説明します。
プログラムは、main関数から始まり、その中を上から下へ順番に実行します。
その中にifがある場合、ifの中で条件によって実行する所と 実行しない所がありますが、 全体の流れからすれば、『if文というまとまり』が順番に実行されるだけです。
同様に繰り返しがある場合もそうです。 全体の流れからすれば、上から下へ順番に進む過程で、『繰り返しというまとまり』を行っているに過ぎません。
ほとんどのプログラムはこの上から下へ順番に処理するだけで書くことができます。 そして、まとまりを並べるだけの構造でプログラムすることを構造化プログラミングと呼びます。 (まとまりの部分は、必要に応じてサブルーチン化(関数化)するケースが多いようです。)