最終更新日 2020/7/16 ©2020 by T.IZUMI
敢えて for や while を使わずに goto でプログラムをかいてみる
以下の処理を行うプログラムを、 for や while を使わずに goto により作成せよ。 ここで、 if 文で行える動作は goto のみとし、else は使用禁止とする。
以下は、C言語による実装例。
配列 a[] と要素数 n を入力し、合計値を返す。
array_sum() が普通にforループで実装した例。
array_sum_goto() が敢えてgotoで実装した例。
| プログラム例 array_sum() |
|---|
#include <stdio.h>
#include <stdlib.h>
#define ARYSZ 256
int array_sum(int a[],int n){
int i,sum;
sum=0;
for (i=0;i<n;i++) {
sum=sum+a[i];
}
return sum;
}
int array_sum_goto(int a[],int n){
int i,sum;
sum=0;
i=0;
LOOP_BEGIN:
if (i<n) goto IF_TRUE;
goto LOOP_END;
IF_TRUE:
sum=sum+a[i];
i++;
goto LOOP_BEGIN;
LOOP_END:
return sum;
}
int main(void){
int a[ARYSZ],i;
for (i=0;i<ARYSZ;i++) a[i]=(random()%2047)-1023;
printf("x=%d\n",array_sum(a,ARYSZ));
printf("x=%d\n",array_sum_goto(a,ARYSZ));
return 0;
}
|