• 検索結果がありません。

C言語基礎 Professor Nishi's Lectures

N/A
N/A
Protected

Academic year: 2018

シェア "C言語基礎 Professor Nishi's Lectures"

Copied!
21
0
0

読み込み中.... (全文を見る)

全文

(1)

応用Cプログラミング演習 ( 第 3

回 )

西

(2)

結果の画面

1 回目a の値は? 1

b の値は? 2

a^3 - b^3=-7 2 回目a の値は?

2

b の値は? 3

a^3 - b^3=-19 3 回目a の値は?

3b の値は? 4

a^3 - b^3=-37

Report1 0733051 松井秀喜

はプログ ラムが表示

はユーザ が入力

(3)

まず,枠組みを考えよう

#include<stdio.h> void sqrsum(void){

型宣言 (a,b,c を int で )

「 a の値は?」を表示

キーボードから整数値 a を取り込む

「 b の値は?」を表示

キーボードから整数値 b を取り込む a3-b3 を計算する ( 結果を c に代入 ) a3-b3 を表示する (c を表示 )

return; }

void main(){ 型宣言3 回繰り返す {

「 1 回目」 ~「 3 回目」を表示 sqrsum();

}

番号と氏名を表示

scanf(“%d”,&i); // 注意,採点の都合上必要

}

#include<stdio.h> void sqrsum(void){

型宣言 (a,b,c を int で )

「 a の値は?」を表示

キーボードから整数値 a を取り込む

「 b の値は?」を表示

キーボードから整数値 b を取り込む a3-b3 を計算する ( 結果を c に代入 ) a3-b3 を表示する (c を表示 )

return; }

void main(){

型宣言3 回繰り返す {

「 1 回目」 ~「 3 回目」を表示 sqrsum();

}

番号と氏名を表示

scanf(“%d”,&i); // 注意,採点の都合上必要

}

メイン 関数

(4)

キーボードから変数 n に,整数値を読

み込むには?

int n;

scanf(“%d”,&n);

のようにすればよい. 思い出したかな?

int n;

scanf(“%d”,&n);

のようにすればよい. 思い出したかな?

(5)

注意

なお,採点の都合上, main プログラ

ムの最後に,次の 1 文をいれること.

scanf("%d",&i);

(6)

今週のテーマ ~ 構造体

構造体とは?

複数のデータをまとめて一つの変数で取り扱う手法

一見複雑そうだが, すごく 便利

今まで習った変数

今まで習った変数

構造体

構造体

(7)

例えば,

int i;

char c;

double d;

という 3 つのメンバーからなる構造体を作

れる.

構造体には「タグ」と呼ばれる名札をつけて

他の構造体と区別する

タグ名

(8)

構造体を宣言する

int や char などはシステムが予め用意

した型だから型の意味や内容がどういう

ものかは記述する必要は無かった

構造体は自分で定義するので,型の意味

や内容を事前に以下の書式で宣言してお

く必要がある

(9)

構造体宣言の方法

struct タグ名 {

メンバー変数の宣言 ;

メンバー変数の宣言 ;

メンバー変数の宣言 ;

・・・・・

};

( 注意 ) これは構造体の中身の宣言であり,今までの

型宣言にあたるような実際の変数名を割り当てる処

理が別に必要

(10)

構造体宣言の具体例

struct ADRS{

char name[32]; /* 名前 (32 文字以内 )*/ char tel[11]; /* 電話番号 (11 桁以内 )*/ char address[256]; /* 住所 (256 文字以内 )*/ int age; /* 年齢 ( 整数 )*/

};

( 注意 ) ADRS は構造体のタグ名であり,変数名ではな

い.実際にプログラムで使うには,ある変数を

ADRS 型で宣言して使うことになる

(11)

具体的には次のようにします.

struct ADRS{

char name[32]; char tel[11];

char address[256]; int age;

};

void main(){

struct ADRS myaddress; 処理

... }

myaddress を構造体 ADRS として宣言し下の処理を行う

(12)

構造体の宣言と変数の宣言を同時に行えま

struct ADRS{

char name[32];

char tel[11];

char address[256];

int age;

} myaddress;

とすればよい.

(13)

構造体のメンバーにアクセスする方

#include<stdio.h>

#include<string.h> struct ADRS{

char name[32]; char tel[20];

char address[256]; int age;

} myaddress; void main(){

strcpy(myaddress.name,"NISHI");

strcpy(myaddress.tel,"096-×××2733");

strcpy(myaddress.address," 熊本市池田 1-1"); myaddress.age = 30;

printf(" 名前: %s \n 電話番号: %s \n 住所: %s \n 年 齢: %d\n", myaddress.name, myaddress.tel,

myaddress.address, myaddress.age); }

strcpy は文字列を

指定した変数に代入

するライブラリー関

(14)

構造体の変数に,アクセスするに

は...

構造体宣言された変数名.メンバー変数名

ドット「.」を間に入 れる

ドット「.」を間に入 れる

(15)

構造体のメリット

一見複雑そうですが...

個別の管理によるプログラムミスを防げる

大量のデータへのアクセス ( 読み書き ) が直感

的にわかりやすい

住所録などを想像すると,人の管理さえちゃんとや

れば,個別の住所 ,電話番号 ,メールアドレスなど

の管理がしやすい.

構造体はデータベースを扱うソフトには必ず

用いられる

(16)

構造体の練習問題

名前 (アルファベット 32 文字以内 )とメールアドレス (ア ルファベット 256 文字以内 )からなる構造体 MAILAD を宣言し,

キーボードから,名前とメールアドレスを入力すると, それを表示するプログラムを作れ.

表示形式は

名前: matsusimananako

アドレス: [email protected]

のようにせよ

(17)

実行結果の例

名前をどうぞ

matsusimananako

メールアドレスをどうぞ

[email protected]

名前: matsusimananako

アドレス: [email protected]

(18)

フローチャートはこうなります

include

main()

構造体の宣言と構造体変数を割り当て

「名前をどうぞ」の表示と入力

「アドレスをどうぞ」の表示と入力 入力内容の表示

(19)

ヒント:プログラムの構造はこうなり

#include<stdio.h> ます .

#include<string.h>

[◆ここで構造体の内容の宣言と実体の変数の宣言]

void main(){

printf(" 名前をどうぞ \n");

scanf("%s",myaddress.name);

printf(" メールアドレスをどうぞ \n");

scanf("%s",myaddress.adrs);

printf("\n\n 名前: %s\n アドレス: %s\n",

myaddress.name, myaddress.adrs);

}

#include<stdio.h>

#include<string.h>

[◆ここで構造体の内容の宣言と実体の変数の宣言]

void main(){

printf(" 名前をどうぞ \n");

scanf("%s",myaddress.name);

printf(" メールアドレスをどうぞ \n");

scanf("%s",myaddress.adrs);

printf("\n\n 名前: %s\n アドレス: %s\n",

myaddress.name, myaddress.adrs);

}

(20)

解答例

#include<stdio.h> struct ADRS_DATA{

char name[32]; char adrs[256]; };

void main(){

struct ADRS_DATA myaddress; printf(" 名前をどうぞ \n");

scanf("%s",myaddress.name);

printf(" メールアドレスをどうぞ \n"); scanf("%s",myaddress.adrs);

printf("\n\n 名前: %s\n アドレス: %s\n", myaddress.name, myaddress.adrs);

}

(21)

今日の練習問題

名前 ( アルファベット 32 文字以内 ) と,

メールアドレス ( アルファベット 256 文字以内 ) と, 電話番号 ( 数字 12 文字以内 ) と,

年齢 ( 整数 )

からなる構造体 ADBASE を宣言し,

キーボードから,名前,メールアドレス,電話番号,年齢を入力すると, それを表示するプログラムを作れ.

表示形式は

名前: matsusimananako

アドレス: [email protected]   電話番号: 09012349876

  年齢: 45 のようにせよ

参照

関連したドキュメント

「父なき世界」あるいは「父なき社会」という概念を最初に提唱したのはウィーン出身 の精神分析学者ポール・フェダーン( Paul Federn,

噸狂歌の本質に基く視点としては小それが短歌形式をとる韻文であることが第一であるP三十一文字(原則として音節と対応する)を基本としへ内部が五七・五七七という文字(音節)数を持つ定形詩である。そ

C. 

事 業 名 夜間・休日診療情報の多言語化 事業内容 夜間・休日診療の案内リーフレットを多言語化し周知を図る。.

しかし,物質報酬群と言語報酬群に分けてみると,言語報酬群については,言語報酬を与

名      称 図 記 号 文字記号

Hoekstra, Hyams and Becker (1997) はこの現象を Number 素性の未指定の結果と 捉えている。彼らの分析によると (12a) のように時制辞などの T

②上記以外の言語からの翻訳 ⇒ 各言語 200 語当たり 3,500 円上限 (1 字当たり 17.5