ce-1. C プログラミング入門
1
金子邦彦
C プログラミング応用)(全14回)
URL: https://www.kkaneko.jp/pro/c/index.html
C言語の基本構文、関数の作成と呼び出し、条件分岐、
繰り返し処理の習得。
【学習内容の構成】
1. C言語の特徴1970年にUNIX記述用に作成された手
続き型・コンパイラ型言語
2. 関数の構造main関数を起点とした複数関数の定
と呼び出し
3. 変数とデータ型int型(整数)、char型(文字)、
double型(浮動小数)によるデータ管理
4. 制御構造if文による条件分岐、for文・while文によ
る繰り返し処理
前提:特になし
意義:メモリ操作など細かな制御が可能な汎用言語
基礎習得
2
C言語
D. M. Ritchie1970年にUNIXを記述するために作
成した言語
きめ細かな操作ができる
メモリの操作など
ANSI により規格化、汎用性が高い
広く利用されている
手続き型言語のひとつ
コンパイラ型言語のひとつ
3
メッセージ表示プログラム
4
画面に表示されたメッセージ
#include "stdio.h"
int main()
{
printf("Hello, World¥n");
}
#include "stdio.h"
int main()
{
printf("Hello, World¥n");
}
メッセージ表示プログラム
5
1つの関数
(関数名: main
main 関数の中で,
関数 printf を使っている
#include "stdio.h"
int main()
{
printf("Hello, World¥n");
}
メッセージ表示プログラム
6
main 関数
の本体
個々の文の終了を示す
(セミコロン)
関数名
#include "stdio.h"
int main()
{
printf("Hello, World¥n");
}
プログラムの流れ
7
printf 関数
メイン関数
printf("Hello,World¥n");
関数呼び出し
戻り
プログラムの実行開始
プログラムの実行終了
例題1.棒グラフ
整数から,その長さだけの棒を表示する関数 bar
を作る
例) 6 → ******
関数 bar を使って,「整数を読み込んで,読み込
んだ長さの棒を表示するメイン関数を作る
8
棒グラフ
9
メッセージ「len =」が
表示されるので,キー
ボードで「6 Enter」と
すると,長さ6の棒グラ
フが表示される
実行結果の例
プログラム実行順
普通,プログラム中の文は,上から下へ順に実行
される
関数呼び出しでは,関数の先頭に「ジャンプ」す
る.
関数呼び出しの例) bar( len );
呼び出された関数の中で return 文に出会うと,関
数呼び出しの場所に戻る.
10
このことは,C言語が「手続き型言語」と言われる理由の1
棒グラフ
#include "stdio.h"
#include <math.h>
void bar( int len )
{
int i;
for (i=0; i<len; i++) {
printf("*");
}
printf("¥n");
return;
}
int main()
{
int len;
char buf[256];
int ch;
printf( "len =" );
fgets( buf, 256, stdin );
sscanf_s( buf, "%d¥n", &len );
bar( len );
ch = getchar();
ch = getchar();
return 0;
}
11
bar関数
main関数
プログラム実行は
main 関数(メイン
関数)から始まる
複数の関数を含む
プログラム
#include "stdio.h"
#include <math.h>
void bar( int len )
{
int i;
for (i=0; i<len; i++) {
printf("*");
}
printf("¥n");
return;
}
int main()
{
int len;
char buf[256];
int ch;
printf( "len =" );
fgets( buf, 256, stdin );
sscanf_s( buf, "%d¥n", &len );
bar( len );
ch = getchar();
ch = getchar();
return 0;
}
関数呼び出し
プログラム実行順
12
戻り
メイン関数の先頭行
がプログラム実行の始まり
メイン関数内の return
がプログラム実行の終わり
#include "stdio.h"
#include <math.h>
void bar( int len )
{
int i;
for (i=0; i<len; i++) {
printf("*");
}
printf("¥n");
return;
}
int main()
{
int len;
int ch;
printf( "len=" );
scanf_s( "%d", &len );
bar( len );
ch = getchar();
ch = getchar();
return 0;
}
プログラムの流れ
13
bar 関数
メイン関数
bar( len );
関数呼び出し
return;
プログラムの実行開始
プログラムの実行終了
* printf, scanf
呼び出しについては
図では省略
変数
変数
変数名
14
データ(数値や文字)を入れるもの
英数字かアンダーバー(_)で作られる
最初の文字には数字は使えない
大文字と小文字を区別する
変数 i
#include "stdio.h"
#include <math.h>
void bar( int len )
{
int i;
for (i=0; i<len; i++) {
printf("*");
}
printf("¥n");
return;
}
int main()
{
int len;
char buf[256];
int ch;
printf( "len =" );
fgets( buf, 256, stdin );
sscanf_s( buf, "%d¥n", &len );
bar( len );
ch = getchar();
ch = getchar();
return 0;
}
15
変数 i をメモリエリア中に確保
len をメモリエリア中に確保
変数 len, buf, ch
をメモリエリア中に確保
16
データ型は2種類
使っている
整数を扱う int
文字を扱う char
整数は, 5, -3, 0 など
文字は, 1, 0, 3, -, a など
数字(1, 0, 3 など)も文字の一種
#include "stdio.h"
#include <math.h>
void bar( int len )
{
int i;
for (i=0; i<len; i++) {
printf("*");
}
printf("¥n");
return;
}
int main()
{
int len;
char buf[256];
int ch;
printf( "len =" );
fgets( buf, 256, stdin );
sscanf_s( buf, "%d¥n", &len );
bar( len );
ch = getchar();
ch = getchar();
return 0;
}
変数 i をメモリエリア中に確保
len をメモリエリア中に確保
変数 len, buf, ch
をメモリエリア中に確保
例題.平方根の計算
浮動小数データを読み込んで,平方根の計算と表
示を行うプログラムを作る.
但し,負の数の場合には,メッセージを表示すること.
負の数であるかどうかによって条件分岐を行うために if
文を使う.
例) 9のとき:
-1のとき: メッセージを表示
17
条件分岐とは
「ある条件式」が成り立てばAを、成り立たなけ
ればBを実行
18
Yes
No
条件式
平方根の計算
19
実行結果の例
x=9
sqrt(9.000000)=3.000000
x=1
負なので計算できません
#include "stdio.h"
#include <math.h>
int main()
{
double x;
double y;
char buf[256];
int ch;
printf("x=");
fgets( buf, 256, stdin );
sscanf_s( buf, "%lf¥n", &x );
if ( x < 0 ) {
printf("負なので計算できません¥n");
}
else {
y = sqrt(x);
printf("sqrt(%f)=%f¥n", x, y);
}
ch = getchar();
ch = getchar();
return 0;
}
条件が成り立つ場合
に実行される部分
条件式
条件が成り立たない
場合に実行される部分
20
#include "stdio.h"
#include <math.h>
int main()
{
double x;
double y;
char buf[256];
int ch;
printf("x=");
fgets( buf, 256, stdin );
sscanf_s( buf, "%lf¥n", &x );
if ( x < 0 ) {
printf("負なので計算できません¥n");
}
else {
y = sqrt(x);
printf("sqrt(%f)=%f¥n", x, y);
}
ch = getchar();
ch = getchar();
return 0;
}
実行順
(x<0) の場合
21
#include "stdio.h"
#include <math.h>
int main()
{
double x;
double y;
char buf[256];
int ch;
printf("x=");
fgets( buf, 256, stdin );
sscanf_s( buf, "%lf¥n", &x );
if ( x < 0 ) {
printf("負なので計算できません¥n");
}
else {
y = sqrt(x);
printf("sqrt(%f)=%f¥n", x, y);
}
ch = getchar();
ch = getchar();
return 0;
}
実行順
(x0) の場合
22
繰り返しとは
繰り返しとは,ある条件が満たされるまで,同じ
ことを繰り返すこと.
繰り返しを行うための文としてwhile, for など
がある.
23
条件
繰り返し
C言語での繰り返しは次の3通り
while
do-while
for
ループ変数 (ループカウンタ)
繰り返しの回数を数える変数
インクリメント 値を1増やす i++
デクリメント 値を1減らす i--
24
for 文による繰り返し
25
初期式
条件式
再設定式
Yes
No
1.まず,「初期式」を実行
2.次に,「条件式」を実行.条件式が成立すれば,
式と「再設定式」を実行し,「条件式」に戻る
例題.繰り返し計算と
ファイル出力
次のページのプログラムの機能
計算の繰り返し
キーボードからのデータ読み込み
ファイルへの書き出し
26