23
プログラミング入門2 プログラミング入門2 第1回 第1回 イントロダクション イントロダクション 芝浦工業大学情報工学科 芝浦工業大学情報工学科 講師 講師 青木 青木 義満 義満

プログラミング入門2 - SICyaoki/program2/pdf/Pro1.pdf · 2002/09/13 プログラミング入門2. 2. 講義情報 担当教員. z. 青木, 柳沢. z. TA:中山、持吉、野村(大倉研),関、白井(宮口研)

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: プログラミング入門2 - SICyaoki/program2/pdf/Pro1.pdf · 2002/09/13 プログラミング入門2. 2. 講義情報 担当教員. z. 青木, 柳沢. z. TA:中山、持吉、野村(大倉研),関、白井(宮口研)

プログラミング入門2プログラミング入門2

第1回第1回イントロダクションイントロダクション

芝浦工業大学情報工学科芝浦工業大学情報工学科 講師講師

青木青木 義満義満

Page 2: プログラミング入門2 - SICyaoki/program2/pdf/Pro1.pdf · 2002/09/13 プログラミング入門2. 2. 講義情報 担当教員. z. 青木, 柳沢. z. TA:中山、持吉、野村(大倉研),関、白井(宮口研)

2002/09/13 プログラミング入門2 2

講義情報講義情報

担当教員

青木, 柳沢

TA: 中山、持吉、野村(大倉研),関、白井(宮口研)

時間・場所

月曜日 3~4限

大学会館2階 実習室1A

本講義の目的プログラミング言語の主流であるC言語の基礎知識の習得

→ CができればBasicなどの他言語も理解は容易

C言語を通して、プログラミングする際に必要な論理的な物の考え方を身につける

今後の学科の授業、卒業研究、就職において重要

基本情報処理技術者試験でも出題

→ ゆえに必修!

Page 3: プログラミング入門2 - SICyaoki/program2/pdf/Pro1.pdf · 2002/09/13 プログラミング入門2. 2. 講義情報 担当教員. z. 青木, 柳沢. z. TA:中山、持吉、野村(大倉研),関、白井(宮口研)

2002/09/13 プログラミング入門2 3

講義情報講義情報

授業の進め方説明 → 例題 → 演習 → チェック

評価方法

実習が中心の授業であるため、出席重視!2~3回の小テスト期末テスト

テキスト「定本 明解C言語 入門編」、柴田望洋、ソフトバンク → 生協にて購入可能

更にマスターしたい人「プログラミング言語C」、カーニハン&リッチー、共立出版「秘伝ポインター問答」、柴田望洋、ソフトバンク

Page 4: プログラミング入門2 - SICyaoki/program2/pdf/Pro1.pdf · 2002/09/13 プログラミング入門2. 2. 講義情報 担当教員. z. 青木, 柳沢. z. TA:中山、持吉、野村(大倉研),関、白井(宮口研)

2002/09/13 プログラミング入門2 4

講義スケジュール(予定)講義スケジュール(予定)

全13回

1. 導入

2. 演算と型

3. 分岐

4. 繰り返し

5. 配列

6. 関数1

7. 関数2

8. ファイル入出力

9. ポインタ1

10. ポインタ2

11. 構造体

12. まとめの演習

13. 期末テスト

Page 5: プログラミング入門2 - SICyaoki/program2/pdf/Pro1.pdf · 2002/09/13 プログラミング入門2. 2. 講義情報 担当教員. z. 青木, 柳沢. z. TA:中山、持吉、野村(大倉研),関、白井(宮口研)

2002/09/13 プログラミング入門2 5

質問・問い合わせ先質問・問い合わせ先

青木 義満

メールアドレス: [email protected]研究室: 4号館5階 メディア工学(青木)研究室

Page 6: プログラミング入門2 - SICyaoki/program2/pdf/Pro1.pdf · 2002/09/13 プログラミング入門2. 2. 講義情報 担当教員. z. 青木, 柳沢. z. TA:中山、持吉、野村(大倉研),関、白井(宮口研)

2002/09/13 プログラミング入門2 6

まずはプログラムを書いて動かしてみようまずはプログラムを書いて動かしてみよう

ディレクトリの作成 mkdirエディタを立ち上げる emacsプログラムの内容を記述

保存(***.c)

コンパイル

gcc source.c -o source

実行

source

コンパイルコマンド

ソースファイル名(***.c)

出力実行ファイル名指定オプション

実行ファイル名

注意: プログラムは半角英数字で記述!

Page 7: プログラミング入門2 - SICyaoki/program2/pdf/Pro1.pdf · 2002/09/13 プログラミング入門2. 2. 講義情報 担当教員. z. 青木, 柳沢. z. TA:中山、持吉、野村(大倉研),関、白井(宮口研)

2002/09/13 プログラミング入門2 7

まずはプログラムを書いて動かしてみようまずはプログラムを書いて動かしてみよう

#include <stdio.h>

int main(void){

printf(“こんにちは。私は青木です。 ¥n”);

return(0);

}

水色部分おまじない(常に記述)

命令を記述Tabかスペース

で字下げ

ソースファイル名: name.c (p.8 List1-4)コンパイル: gcc name.c –o name実行: name

Page 8: プログラミング入門2 - SICyaoki/program2/pdf/Pro1.pdf · 2002/09/13 プログラミング入門2. 2. 講義情報 担当教員. z. 青木, 柳沢. z. TA:中山、持吉、野村(大倉研),関、白井(宮口研)

2002/09/13 プログラミング入門2 8

エラーが出たら・・・・エラーが出たら・・・・

日本語部分以外は全て半角英数字で書かれているか?

スペースも半角

(), ””(ダブルクォーテーション)などに注意!

文の最後に;(セミコロン)を忘れずに!

できた人は,p.8 List1-5、List1-6 をやってみる

Page 9: プログラミング入門2 - SICyaoki/program2/pdf/Pro1.pdf · 2002/09/13 プログラミング入門2. 2. 講義情報 担当教員. z. 青木, 柳沢. z. TA:中山、持吉、野村(大倉研),関、白井(宮口研)

2002/09/13 プログラミング入門2 9

プログラムとコンパイルプログラムとコンパイル

コンパイル方式

ソースプログラムをコンピュータが直接理解・実行できる形式に“翻訳”する方式 (C言語など)

インタプリタ方式

プログラムを1行ずつ解釈しながら実行する方式(Java Scriptなど)

→ 一般に、コンパイル方式の方が実行速度は高速!

Page 10: プログラミング入門2 - SICyaoki/program2/pdf/Pro1.pdf · 2002/09/13 プログラミング入門2. 2. 講義情報 担当教員. z. 青木, 柳沢. z. TA:中山、持吉、野村(大倉研),関、白井(宮口研)

2002/09/13 プログラミング入門2 10

printfprintf 関数関数 ~~ データを表示するコマンドデータを表示するコマンド

文字列の表示

printf( “ ” );青木です。

“”(ダブルコーテーション)の中に表示したい文字列を入力

¥n

改行指定

文の最後にセミコロン

Page 11: プログラミング入門2 - SICyaoki/program2/pdf/Pro1.pdf · 2002/09/13 プログラミング入門2. 2. 講義情報 担当教員. z. 青木, 柳沢. z. TA:中山、持吉、野村(大倉研),関、白井(宮口研)

2002/09/13 プログラミング入門2 11

プログラムをよりわかりやすくプログラムをよりわかりやすく ~~ 注釈(コメント)注釈(コメント)

ソースファイル中の /* と */ に挟まれた部分

→ 実行時に無視される!

プログラムを見やすく、読みやすくするために適切なコメントをつける

#include <stdio.h>

int main(void){

printf(“こんにちは。私は青木です。 ¥n”);

return(0);

}

/* 挨拶して自己紹介する */ コメント

/* 挨拶、名前を表示して、改行 */ コメント

/*挨拶して自己紹介する プログラムname.c */ 複数行も可

Page 12: プログラミング入門2 - SICyaoki/program2/pdf/Pro1.pdf · 2002/09/13 プログラミング入門2. 2. 講義情報 担当教員. z. 青木, 柳沢. z. TA:中山、持吉、野村(大倉研),関、白井(宮口研)

2002/09/13 プログラミング入門2 12

数字(計算結果)の表示数字(計算結果)の表示

コンピュータの大きな役割 → 計算の高速実行

2つの整数の和を計算して、その値を表示するプログラム

/* 2つの整数値の和を計算して表示するプログラム */

#include <stdio.h>

int main(void){

return(0);

}

printf( “%d¥n”, 15 + 37 );

/* 15と37の和を計算して表示 */ コメント

早速書いて実行してみよう!

Page 13: プログラミング入門2 - SICyaoki/program2/pdf/Pro1.pdf · 2002/09/13 プログラミング入門2. 2. 講義情報 担当教員. z. 青木, 柳沢. z. TA:中山、持吉、野村(大倉研),関、白井(宮口研)

2002/09/13 プログラミング入門2 13

解説解説 ~~ 整数値を整数値を printfprintf で表示する方法で表示する方法

整数値の表示

printf関数の ” ” の中には文字のデータしか入れられない→ 数値データを文字列に変換する必要!!

printf( “ ” , 15+37 );%d

カンマの後に続く整数値データを10進数で表示 → 変換指定

¥n改行指定 カンマ

52代入!

Page 14: プログラミング入門2 - SICyaoki/program2/pdf/Pro1.pdf · 2002/09/13 プログラミング入門2. 2. 講義情報 担当教員. z. 青木, 柳沢. z. TA:中山、持吉、野村(大倉研),関、白井(宮口研)

2002/09/13 プログラミング入門2 14

数字(計算結果)の表示をもっとわかりやすく数字(計算結果)の表示をもっとわかりやすく

/* 2つの整数値の和を計算して表示するプログラム */

#include <stdio.h>

int main(void){

return(0);

}

printf( “15と37の和は%dです。¥n”, 15 + 37 );

/* 15と37の和を計算して表示 */

実行してみよう!

Page 15: プログラミング入門2 - SICyaoki/program2/pdf/Pro1.pdf · 2002/09/13 プログラミング入門2. 2. 講義情報 担当教員. z. 青木, 柳沢. z. TA:中山、持吉、野村(大倉研),関、白井(宮口研)

2002/09/13 プログラミング入門2 15

もっと複雑な計算へもっと複雑な計算へ ~~ 変数変数 の必要性の必要性

先ほどのプログラム → 15,37,15+37 → 全て定数(Constant)実際の計算では, 計算の途中経過を覚えさせておく必要が生じる

変数とは、数値などのデータを格納するための箱である

重要

変数の宣言方法(整数の場合)

57

整数値

変数xは、整数値を入れることのできるint 型の箱である。

int型名整数の場合、int (イント: integer の略)

x ;変数の名前(わかりやすい名前をつける)

Page 16: プログラミング入門2 - SICyaoki/program2/pdf/Pro1.pdf · 2002/09/13 プログラミング入門2. 2. 講義情報 担当教員. z. 青木, 柳沢. z. TA:中山、持吉、野村(大倉研),関、白井(宮口研)

2002/09/13 プログラミング入門2 16

変数の値を表示するプログラム変数の値を表示するプログラム

ファイル名: hensuu1.c

/* 2つの整数値を変数を使って表示するプログラム */

#include <stdio.h>

int main(void){

return(0);

}

int x;int y;

Int型変数 x, y の宣言注: 変数の宣言はmainの直後に!

x = 80 ;y = 65 ; 変数に整数値データを代入

printf( “変数 x に入っているデータは%dです。¥n”, x );printf( “変数 y に入っているデータは%dです。¥n”, y );

表示

Page 17: プログラミング入門2 - SICyaoki/program2/pdf/Pro1.pdf · 2002/09/13 プログラミング入門2. 2. 講義情報 担当教員. z. 青木, 柳沢. z. TA:中山、持吉、野村(大倉研),関、白井(宮口研)

2002/09/13 プログラミング入門2 17

代入とは?代入とは?

int x ;x = 50 ;

代入演算子: 右辺のデータを左辺に代入する注: 数学でいう、「xと50が等しい」という意味ではない!

50

整数値

変数xに50を代入!

代入 x = 50 ;y = x + 10 ;

yの値は?

Page 18: プログラミング入門2 - SICyaoki/program2/pdf/Pro1.pdf · 2002/09/13 プログラミング入門2. 2. 講義情報 担当教員. z. 青木, 柳沢. z. TA:中山、持吉、野村(大倉研),関、白井(宮口研)

2002/09/13 プログラミング入門2 18

点数の合計を計算して表示するプログラム点数の合計を計算して表示するプログラム

ファイル名: tensuu.c/* 2科目の点数の合計を表示するプログラム */

#include <stdio.h>

int main(void){

int sugaku;int english;int goukei;

sugaku = 90;english = 75;

return(0);

}

変数goukeiにsugakuとenglishの合計点を計算して代入

printf でsugaku, english, goukeiの点数をそれぞれ表示

Page 19: プログラミング入門2 - SICyaoki/program2/pdf/Pro1.pdf · 2002/09/13 プログラミング入門2. 2. 講義情報 担当教員. z. 青木, 柳沢. z. TA:中山、持吉、野村(大倉研),関、白井(宮口研)

2002/09/13 プログラミング入門2 19

キーボードからのデータ入力キーボードからのデータ入力

前のプログラム : 点数のデータをプログラム中で記述。

→ 点数の値を変更するたびにコンパイルして実行する必要がある

→ 面倒!!

実行時にキーボードから点数を入力できないか?

scanf 関数

Page 20: プログラミング入門2 - SICyaoki/program2/pdf/Pro1.pdf · 2002/09/13 プログラミング入門2. 2. 講義情報 担当教員. z. 青木, 柳沢. z. TA:中山、持吉、野村(大倉研),関、白井(宮口研)

2002/09/13 プログラミング入門2 20

キーボードからのデータ入力と表示キーボードからのデータ入力と表示 ~ ~ scanfscanf 関数関数

ファイル名: keyinput.c/* キーボードから点数を入力して値を表示するプログラム */

#include <stdio.h>

int main(void){

int sugaku;

printf( “数学の点数を入力して下さい:”);

return(0);

}

scanf( “%d”, sugaku );&

アンド,アンバサンド

(変数の前に必ず付ける!)注:printfには不要!

printf(“数学の点数は%d点です。¥n”, sugaku);

Page 21: プログラミング入門2 - SICyaoki/program2/pdf/Pro1.pdf · 2002/09/13 プログラミング入門2. 2. 講義情報 担当教員. z. 青木, 柳沢. z. TA:中山、持吉、野村(大倉研),関、白井(宮口研)

2002/09/13 プログラミング入門2 21

putsputs関数関数((プットエスプットエス) List1) List1--11(p.14)11(p.14)で初登場で初登場

printf とほぼ同じ役割

文字の並びを出力し、最後に改行を行う%d などとの併用はできない → 書式化は不可

printf ( “ABC¥n” );

puts ( “ABC” );

改行不要!

puts(“値は%dです”, x ); printfを使用

Page 22: プログラミング入門2 - SICyaoki/program2/pdf/Pro1.pdf · 2002/09/13 プログラミング入門2. 2. 講義情報 担当教員. z. 青木, 柳沢. z. TA:中山、持吉、野村(大倉研),関、白井(宮口研)

2002/09/13 プログラミング入門2 22

今日の課題今日の課題

1. printf関数を用いて、

・自分の名前

・出身地

・趣味

を表示するプログラムを作成せよ。

2. 数学、英語、国語の3科目の点数をキーボードから入力し、その合計

点を表示するプログラムを作成しなさい。

終わったらTAもしくは先生に声をかけて下さい。

チェックが終了したら、授業終了です。

Page 23: プログラミング入門2 - SICyaoki/program2/pdf/Pro1.pdf · 2002/09/13 プログラミング入門2. 2. 講義情報 担当教員. z. 青木, 柳沢. z. TA:中山、持吉、野村(大倉研),関、白井(宮口研)

2002/09/13 プログラミング入門2 23

次回の講義予定次回の講義予定

来週16日, 23日はお休み

次回は30日(月),教室はここ(大学会館2F 1A)

次回講義内容

足し算以外の計算(四則演算)

変数の型(整数以外)