プログラミング入門2 第1回 イントロダクション 芝浦工業大学情報工学科 青木 義満 I’ll get started with Introduction and Conventional works around our study, then mention our motivation and goal. Next, I’ll explain our 3D Face Modeling Method and its medical application. Finally, I’ll conclude this presentation with some future works. 芝浦工業大学情報工学科 青木 義満
講義情報 担当教員 時間・場所 本講義の目的 青木義満 TA: 授業中紹介 月曜日 3~4限 大学会館2階 実習室 → ゆえに必修! 月曜日 3~4限 大学会館2階 実習室 本講義の目的 プログラミング言語の主流であるC言語の基礎知識の習得 → CができればBasicなどの他言語も理解は容易 C言語を通して、プログラミングする際に必要な論理的な物の考え方を身につける 今後の学科の授業、卒業研究、就職において重要 基本情報処理技術者試験でも出題 → ゆえに必修! 1回目 プログラミング入門2
講義情報 授業の進め方 評価方法 テキスト 内容説明(3限) 例題 → 演習 → チェック(4限) 授業内演習、レポート 中間テスト 内容説明(3限) 例題 → 演習 → チェック(4限) 評価方法 授業内演習、レポート 中間テスト 学期末テスト テキスト 「新版 明解C言語 入門編」、柴田望洋、ソフトバンク → 生協にて購入可能 更にマスターしたい人 「プログラミング言語C」、カーニハン&リッチー、共立出版 「秘伝ポインター問答」、柴田望洋、ソフトバンク ANSI C言語大辞典、マーク・ウィリアムズ社 編/坂本 文、今泉 貴史 監訳 1回目 プログラミング入門2
講義スケジュール(予定) 導入 演算と型 分岐 繰り返し 配列 関数1 関数2,文字列 ファイル入出力 ポインタ1 ポインタ2 構造体 まとめの演習 期末テスト 中間テスト 1回目 プログラミング入門2
質問・問い合わせ先 青木 義満 メールアドレス: yaoki@sic.shibaura-it.ac.jp 青木 義満 メールアドレス: yaoki@sic.shibaura-it.ac.jp 研究室: 豊洲校舎研究棟14階14-K-32 メディア工学(青木)研究室 1回目 プログラミング入門2
注意: プログラムは半角英数字で記述! まずはプログラムを書いて動かしてみよう ディレクトリの作成 mkdir エディタを立ち上げる emacs プログラムの内容を記述 保存(***.c) コンパイル gcc source.c -o source 実行 ./source コンパイルコマンド ソースファイル名 (***.c) 出力実行ファイル名 指定オプション 実行ファイル名 ※ ./ → 現在いるディレクトリのこと (カレントディレクトリ) 注意: プログラムは半角英数字で記述! 1回目 プログラミング入門2
まずはプログラムを書いて動かしてみよう #include <stdio.h> int main(void) { ソースファイル名: name.c (p.8 List1-4) コンパイル: gcc name.c –o name 実行: name 水色部分 おまじない (常に記述) #include <stdio.h> int main(void) { printf(“Hello, My name is AOKI \n”); return(0); } Tabかスペース で字下げ 命令を記述 1回目 プログラミング入門2
エラーが出たら・・・・ 全て半角英数字で書かれているか? スペースも半角 (), ””(ダブルクォーテーション)などに注意! (), ””(ダブルクォーテーション)などに注意! 文の最後に;(セミコロン)を忘れずに! 2つのターミナルを使用して効率的な作業を 1つはEditor用 として 1つはDebug用として 1回目 プログラミング入門2
プログラムとコンパイル コンパイル方式 インタプリタ方式 → 一般に、コンパイル方式の方が実行速度は高速! ソースプログラムをコンピュータが直接理解・実行できる形式に“翻訳”する方式 (C言語など) インタプリタ方式 プログラムを1行ずつ解釈しながら実行する方式(Java Scriptなど) → 一般に、コンパイル方式の方が実行速度は高速! 1回目 プログラミング入門2
printf 関数 ~ データを表示するコマンド 文字列の表示 文の最後にセミコロン printf( “ ” ); Hello Hello “”(ダブルコーテーション)の中に 表示したい文字列を入力 \n 改行指定 1回目 プログラミング入門2
プログラムをよりわかりやすく ~ 注釈(コメント) プログラムをよりわかりやすく ~ 注釈(コメント) ソースファイル中の /* と */ に挟まれた部分 → 実行時に無視される! プログラムを見やすく、読みやすくするために適切なコメントをつける /*挨拶して自己紹介する プログラム name.c */ 複数行も可 /* 挨拶して自己紹介する */ コメント #include <stdio.h> int main(void) { printf( “Hello, My name is Yoshimitsu AOKI \n” ); return(0); } /* 挨拶、名前を表示して、改行 */ コメント 1回目 プログラミング入門2
数字(計算結果)の表示 コメント 早速書いて実行してみよう! コンピュータの大きな役割 → 計算の高速実行 コンピュータの大きな役割 → 計算の高速実行 2つの整数の和を計算して、その値を表示するプログラム /* 2つの整数値の和を計算して表示するプログラム */ #include <stdio.h> int main(void) { return(0); } /* Calculate sum of 15 and 37 */ コメント printf( “%d\n”, 15 + 37 ); 早速書いて実行してみよう! 1回目 プログラミング入門2
解説 ~ 整数値を printf で表示する方法 整数値の表示 printf関数の ” ” の中には文字のデータしか入れられない → 数値データを文字列に変換する必要!! 代入! 52 printf( “ ” , 15+37 ); %d カンマの後に続く整数値データを 10進数で表示 → 変換指定 \n 改行指定 カンマ 1回目 プログラミング入門2
数字(計算結果)の表示をもっとわかりやすく 数字(計算結果)の表示をもっとわかりやすく /* 2つの整数値の和を計算して表示するプログラム */ #include <stdio.h> int main(void) { return(0); } /* Calculate sum of 15 and 37 */ printf( “15 + 37 = %d \n”, 15 + 37 ); 実行してみよう! 1回目 プログラミング入門2
int x ; 変数とは、数値などのデータを 格納するための箱である もっと複雑な計算へ ~ 変数 の必要性 重要 もっと複雑な計算へ ~ 変数 の必要性 先ほどのプログラム → 15,37,15+37 → 全て定数(Constant) 実際の計算では, 計算の途中経過を覚えさせておく必要が生じる 変数とは、数値などのデータを 格納するための箱である 重要 変数の宣言方法(整数の場合) 57 整数値 変数xは、整数値を入れることのできる int 型の箱である。 int x ; X 型名 整数の場合、int (イント: integer の略) 変数の名前 (わかりやすい名前をつける) 1回目 プログラミング入門2
変数の値を表示するプログラム ファイル名: hensuu1.c int x; int y; Int型変数 x, y の宣言 /* 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 ); 表示 1回目 プログラミング入門2
int x ; x = 50 ; x = 50 ; y = x + 10 ; yの値は? 代入とは? 代入 50 X 代入演算子: 右辺のデータを左辺に代入する 注: 数学でいう、「xと50が等しい」という意味ではない! 変数xに50を代入! 代入 x = 50 ; y = x + 10 ; yの値は? 50 整数値 X 1回目 プログラミング入門2
点数の合計を計算して表示するプログラム ファイル名: tensuu.c 変数goukeiにsugakuとenglishの合計点を計算して代入 /* 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の点数をそれぞれ表示 1回目 プログラミング入門2
scanf 関数 キーボードからのデータ入力 実行時にキーボードから点数を入力できないか? 前のプログラム : 点数のデータをプログラム中で記述。 → 点数の値を変更するたびにコンパイルして実行する必要がある → 面倒!! 実行時にキーボードから点数を入力できないか? scanf 関数 1回目 プログラミング入門2
キーボードからのデータ入力と表示 ~ scanf 関数 ファイル名: keyinput.c /* キーボードから点数を入力して値を表示するプログラム */ #include <stdio.h> int main(void) { int sugaku; printf( “Input score of math :”); return(0); } アンド,アンバサンド (変数の前に必ず付ける!) 注:printfには不要! scanf( “%d”, sugaku ); & printf(“Score of Math = %d \n”, sugaku); 1回目 プログラミング入門2
= printf ( “ABC\n” ); puts ( “ABC” ); puts関数(プットエス) 文字の並びを出力し、最後に改行を行う %d などとの併用はできない → 書式化は不可 printf ( “ABC\n” ); = puts ( “ABC” ); 改行不要! puts(“値は%dです”, x ); printfを使用 1回目 プログラミング入門2
今日の課題(第1回目、まずはウォーミングアップ) printf関数を用いて、 ・自分の名前 ・出身地 ・趣味 を表示するプログラムを作成せよ。(kadai1-1.c) 2. 数学、英語、国語の3科目の点数をキーボードから入力し、その合計点を表示するプログラムを作成しなさい。(kadai1-2.c) 終わったらTAもしくは先生に声をかけて下さい。 チェックが終了したら、授業終了です。 1回目 プログラミング入門2