PowerPoint プレゼンテーション

湘南工科大学
2013年12月10日
情報理論2
湘南工科大学情報工学科
准教授 小林 学
関数
引数(ひきすう):
戻り値(もどりち):
P.2
関数が受け取る値
関数が出力する値
関数を使うときの書き方
受け取る値を入れ
る変数
戻り値の型 関数名(引数の型 引数,..,引数の型 引数){
関数の本体
return(戻り値);
}
関数が出力する値
関数の使用例
戻り値ansの型
int
ans の値が
a に入る
}
小林ルール:
関数名の単語の先頭を大
文字にする
Func(int x, int y){
int ans;
x に 3が入り,
ans = x + y;
y に 5 が入る
return(ans);
void main(void){
int a;
a = Func(3, 5);
printf("%d\n",a);
}
実行結果
[例題1] 二つの整数 x, y の大きい方の値を計
算する関数
#include<stdio.h>
int Max2(int x, int y){
int ans;
if(x>y) ans = x;
else ans = y;
return(ans);
}
void main(void){
int a;
a = Max2(3, 5);
printf("最大値:%d\n", a);
}
実行結果
P.4
[例題2] 実数 x が0以上ならば1を,xが負ならば-1
を返す関数 Sign
#include<stdio.h>
int Sign(double x){
if(x>=0) return(1);
return(-1);
}
void main(void){
int a;
a = Sign(-3.7);
printf("符号:%d\n", a);
}
実行結果
P.5
[紙に書く課題1] 以下のプログラムの画面出力を用紙に書きなさい
Page 6
グローバル変数
#include<stdio.h>
int Dat[5]={0,1,0,0}; //グローバル変数
int ACount(void){
グローバル変数は
int i, count=0; //ローカル変数 どの関数でも使え
for(i=0;i<4;i++){
て中身は一つ
if(Dat[i]==0) count++;
小林ルール:
}
グローバル変数の
return(count);
名前の先頭を大文
}
字にする
void main(void){
int ans;
//ローカル変数
ローカル変数はそ
ans = ACount();
の関数でしか使え
printf(“0の数:%d\n", ans);
ない。別の関数で
}
は別の中身
[紙に書く課題2] 以下のプログラムの画面出力を用紙に書きなさい
Page 8
[プログラミング課題1] 1から n までの和を計算する
関数SumN を作成しなさい
#include<stdio.h>
??? SumN(???){
???
}
void main(void){
int a;
a = SumN(10);
printf("1から10までの和:%d\n", a);
}
実行結果
P.9
[プログラミング課題2] xのy乗を計算して返す関数
Bekiを作成しなさい
#include<stdio.h>
実行結果
??? Beki(???){
???
}
void main(void){
int a;
a = Beki(2 , 3);
printf("2の3乗は:%d\n", a);
}
P.10
Page 11
[プログラミング課題3]配列Dat1とDat2の先頭からの連
続一致文字数を計算する関数Icchichoのプログラムを作
成しなさい
#include<stdio.h>
int Dat1[5]={0,1,1,0}, Dat2[5]={0,1,0,1};
??? Icchicho(???){
???
}
void main(void){
int ans;
ans = Icchicho();
printf("先頭から連続一致した文字の数:%d\n", ans);
}
Page 12
[プログラミング課題4] 配列Datを左に n シフトする関数
Shiftのプログラムを作成しなさい
#include<stdio.h>
char Dat[10]={0,1,1,0,1,0,1,0,1,-1};
void Shift(???){
//戻り値が無い場合にはvoid
???
}
void main(void){
int i;
printf("もとのDat:");
for(i=0;i<10;i++) printf("%d,", Dat[i]);
Shift(3);
printf("\nShift後のDat:");
for(i=0;i<10;i++) printf("%d,", Dat[i]);
}
Page 13
[プログラミング課題5] 10進数の数字を2進数に変換する
関数を作成しなさい.
(配列 Dat [i]に2進数の下から i ビット目を入れる)
#include<stdio.h>
int Dat[32];
void Binary(???){
???
}
void main(void){
int i;
Binary(100);
for(i=31;i>=0;i--) printf("%d", Dat[i]);
}