プログラミング - OSLoptsci.eng.shizuoka.ac.jp/class/programing1/1st_lecture.pdf ·...

21
プログラミング 1 静岡大学 工学部機械工学科 知能・材料コース ロボット・計測情報分野 臼杵 深 光電・精密コース 光ナノバイオ分野 居波 渉

Transcript of プログラミング - OSLoptsci.eng.shizuoka.ac.jp/class/programing1/1st_lecture.pdf ·...

Page 1: プログラミング - OSLoptsci.eng.shizuoka.ac.jp/class/programing1/1st_lecture.pdf · 参考書:「明快入門C ... •低級言語(マシン語,アセンブリ言語)⇔高級言語(C言語,Java

プログラミング第1週

静岡大学工学部機械工学科

知能・材料コースロボット・計測情報分野

臼杵深

光電・精密コース光ナノバイオ分野

居波渉

Page 2: プログラミング - OSLoptsci.eng.shizuoka.ac.jp/class/programing1/1st_lecture.pdf · 参考書:「明快入門C ... •低級言語(マシン語,アセンブリ言語)⇔高級言語(C言語,Java

講義アウトライン

•連絡先

•関連情報

•主題と目標

•C言語を学ぶにあたって

•C言語の基礎

•コンパイルとリンク

•printf()

•変数と代入演算子

p. 4

p. 18, p. 112

p. 31, p. 37

Page 3: プログラミング - OSLoptsci.eng.shizuoka.ac.jp/class/programing1/1st_lecture.pdf · 参考書:「明快入門C ... •低級言語(マシン語,アセンブリ言語)⇔高級言語(C言語,Java

連絡先

•電子メールアドレス(臼杵) [email protected]

•電子メールアドレス(居波) [email protected]

•ホームページ http://optsci.eng.shizuoka.ac.jp/

•電話とFAX(臼杵) 053-478-1372

•電話とFAX(居波) 053-478-1371

•授業用ホームページ

http://optsci.eng.shizuoka.ac.jp/class/class.html

Page 4: プログラミング - OSLoptsci.eng.shizuoka.ac.jp/class/programing1/1st_lecture.pdf · 参考書:「明快入門C ... •低級言語(マシン語,アセンブリ言語)⇔高級言語(C言語,Java

関連情報 (資料)

<参考書、資料>

参考書:「明快入門 C」林晴比古,ソフトバンク

プログラミングでは第1章〜第6章までを学ぶ。

資料: 授業用ホームページ授業で使用するパワーポイント資料をダウンロードできるhttp://optsci.eng.shizuoka.ac.jp/class/class.html

(トップページからもリンクあり)

Page 5: プログラミング - OSLoptsci.eng.shizuoka.ac.jp/class/programing1/1st_lecture.pdf · 参考書:「明快入門C ... •低級言語(マシン語,アセンブリ言語)⇔高級言語(C言語,Java

関連情報 (授業)

<授業進行>金曜日1・2時限(5-24)講義 配布資料なし

ノートをとってください(時間を与えます)授業の最後に時間に余裕があれば小テストを行う

金曜日1・2時限(5号館計算機室)演習 5号館(システム棟)3F計算機室にて演習課題の提出・自分のアカウントにログインできるようにしておくこと。・座席が決まっているので確認しておくこと(コンピュータについている番号)

Page 6: プログラミング - OSLoptsci.eng.shizuoka.ac.jp/class/programing1/1st_lecture.pdf · 参考書:「明快入門C ... •低級言語(マシン語,アセンブリ言語)⇔高級言語(C言語,Java

関連情報 (成績)

<成績評価>期末試験を行う。出席、課題(90%以上の出席率および提出率が必要)

<再試験>期末試験で60点未満の場合,再試験となる.日程未定

Page 7: プログラミング - OSLoptsci.eng.shizuoka.ac.jp/class/programing1/1st_lecture.pdf · 参考書:「明快入門C ... •低級言語(マシン語,アセンブリ言語)⇔高級言語(C言語,Java

主題と目標

•主題と目標:C言語を用いた基礎的なプログラミング

講義:C言語について段階的に学ぶ。C言語を用いて基本的なプログラムが書けるようになる。

プログラミングでは変数とデータ型、演算子、制御文、コンソール入出力を主に学ぶ。

Page 8: プログラミング - OSLoptsci.eng.shizuoka.ac.jp/class/programing1/1st_lecture.pdf · 参考書:「明快入門C ... •低級言語(マシン語,アセンブリ言語)⇔高級言語(C言語,Java

C言語を学ぶにあたって

•コンパイル型のプログラム言語

•プログラマ - プログラム(ソース) - コンパイル - オブジェクト - PC

•低級言語(マシン語,アセンブリ言語) ⇔ 高級言語(C言語,Java,など)

•PCは0と1しかわからない ⇔ 人間は自然言語しかわからない

•2020年から小学校でプログラミングが必修化(情報化社会)

•英語も小学校で必修化(国際化社会)

•ほとんどのプログラミング言語は英語で記述される

•情報化社会(SNS)と国際化社会(英語)についてアンケート

Page 9: プログラミング - OSLoptsci.eng.shizuoka.ac.jp/class/programing1/1st_lecture.pdf · 参考書:「明快入門C ... •低級言語(マシン語,アセンブリ言語)⇔高級言語(C言語,Java

プログラミング言語

1.英語などの自然言語と同様、「慣れ」が必要

2.人工言語なので、簡潔で厳密

3.小さな間違いを許さない

4.プログラマーは5から6個のプログラミング言語を習得

Page 10: プログラミング - OSLoptsci.eng.shizuoka.ac.jp/class/programing1/1st_lecture.pdf · 参考書:「明快入門C ... •低級言語(マシン語,アセンブリ言語)⇔高級言語(C言語,Java

簡単なCプログラム p. 16

#include <stdio.h>

int main(void)

{

printf("shizuoka");

return 0;

}

1. 上記のプログラムを入力し, “test.c”とファイルに名前を付ける。

2. コンパイルする。

3. 実行する。

実行結果

“shizuoka” と出力

Page 11: プログラミング - OSLoptsci.eng.shizuoka.ac.jp/class/programing1/1st_lecture.pdf · 参考書:「明快入門C ... •低級言語(マシン語,アセンブリ言語)⇔高級言語(C言語,Java

簡単なCプログラム p. 16

#include <stdio.h>

int main(void)

{

printf("shizuoka");

return 0;

}

1. 上記のプログラムを入力し, “test.c”とファイルに名前を付ける。

2. コンパイルする。

3. 実行する。

実行結果

“shizuoka” と出力

ヘッダファイルの読み込み

最初に実行される関数

関数に渡すデータが無い

文字を出力

終了時に0の値を OSに返す

字下げ , 空白類文字

・プログラムを見やすくするために必ず入れる・全角の空白はエラー・行末に全角の空白を入れない

Page 12: プログラミング - OSLoptsci.eng.shizuoka.ac.jp/class/programing1/1st_lecture.pdf · 参考書:「明快入門C ... •低級言語(マシン語,アセンブリ言語)⇔高級言語(C言語,Java

簡単なCプログラム p. 16

#include <stdio.h>

int main(void)

{

printf("shizuoka");

return 0;

}

1. 上記のプログラムを入力し, “test.c”とファイルに名前を付ける。

2. コンパイルする。

3. 実行する。

実行結果

“shizuoka” と出力

プログラムの標準形 p. 19

Page 13: プログラミング - OSLoptsci.eng.shizuoka.ac.jp/class/programing1/1st_lecture.pdf · 参考書:「明快入門C ... •低級言語(マシン語,アセンブリ言語)⇔高級言語(C言語,Java

プログラミング初級編:プログラムとは

[プログラムとは]

◇ プログラムとはなにか

コンピュータに対して、どのような手順で仕事をすべきかを、書いたものである。

◇ プログラミング言語

プログラムを記述するのに用いられる人工言語。

◇ プログラミング言語の種類

この授業では「C言語」を勉強する。

C言語はUNIXの開発のためにつくられたプログラミング言語で、

広い範囲で使われている。

Page 14: プログラミング - OSLoptsci.eng.shizuoka.ac.jp/class/programing1/1st_lecture.pdf · 参考書:「明快入門C ... •低級言語(マシン語,アセンブリ言語)⇔高級言語(C言語,Java

プログラミング初級編:どう書く?

[プログラムはどう書くの?]

◇ コンピュータは融通がきかない。

順番にしたがって細かく書かなければならない。

◇ コンピュータは我慢強い。

指示されれば同じことを1万回でも100万回でも繰り返す。

◇ コンピュータも(少しは)考える。 (制御文)

条件にしたがって行うことを変えることができる。

条件はあらかじめ人間が教えなければならない。

Page 15: プログラミング - OSLoptsci.eng.shizuoka.ac.jp/class/programing1/1st_lecture.pdf · 参考書:「明快入門C ... •低級言語(マシン語,アセンブリ言語)⇔高級言語(C言語,Java

プログラミング初級編:コンパイル?

[コンパイルってなに] 教科書P-4

◇ プログラムを実行する(動かす)には、コンパイルという操作が必要

実は、コンピュータはC言語を理解できない。 コンピュータが理解できるのは

機械語である。 C言語を機械語に翻訳(コンパイル)することが必要である。

◇ プログラムを実行する手順

1 プログラムの入ったファイルを メモ帳 などのエディタを使って作成する。

ソースプログラム、ソースコード

2 コンパイル,リンクすると実行可能ファイルができる。

3 実行可能ファイルを実行する。

p. 4

Page 16: プログラミング - OSLoptsci.eng.shizuoka.ac.jp/class/programing1/1st_lecture.pdf · 参考書:「明快入門C ... •低級言語(マシン語,アセンブリ言語)⇔高級言語(C言語,Java

プログラミング初級編:ファイルの作成

1 プログラムの入ったファイルを メモ帳 などを使って作成する。

以下のような、ファイルを作ります。すべて半角英数文字で入力する。

ここでは保存ファイル名を test.c、保存するディレクトリを

Z:¥programing1

にしている。プログラムの書かれたファイルをソースファイルと呼ぶ.

ファイル名 test.c (拡張子は .c をつける p.3)

#include <stdio.h>

int main(void) {

printf("hello¥n");

return 0;

}

Page 17: プログラミング - OSLoptsci.eng.shizuoka.ac.jp/class/programing1/1st_lecture.pdf · 参考書:「明快入門C ... •低級言語(マシン語,アセンブリ言語)⇔高級言語(C言語,Java

printf() p. 18, 112

◇ printf()関数 - その1

【説明】 printf 関数は引数の内容を出力する。

【用例】

printf("hello¥n"); /* helloと出力。 */

/* ¥nは改行を意味する。 */

/* スペースも出力できる。 */

Page 18: プログラミング - OSLoptsci.eng.shizuoka.ac.jp/class/programing1/1st_lecture.pdf · 参考書:「明快入門C ... •低級言語(マシン語,アセンブリ言語)⇔高級言語(C言語,Java

変数と代入演算子 p. 36, 26

◇ 変数と代入演算子

【説明】

変数とは、値を保存しておく箱のようなもので与えられた数値を保持する。変数は

型を宣言してから用いなければならない。型はその変数がどのような種類の値を

持つかを区別する。int は整数の型を意味する。他にはchar(文字)、double

(小数)などがある。変数の宣言の書式は以下のようになる。

変数の型 変数名;

ex) int i; (p.36)

変数に値をセットするには“=”を用いる。“=”を代入演算子という。“=”記号の左側

に値がセットされる変数名、右側に入れる値を指定する。

変数名 = 値; (p.36)

Page 19: プログラミング - OSLoptsci.eng.shizuoka.ac.jp/class/programing1/1st_lecture.pdf · 参考書:「明快入門C ... •低級言語(マシン語,アセンブリ言語)⇔高級言語(C言語,Java

変数名 p. 26

変数名は自由に決めることができるが、名前に用いることのできる文字は決って

いる。それは次の通り。

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

a b c d e f g h i j k l m n o p q r s t u v w x y z

1 2 3 4 5 6 7 8 9 _ (下線)

・ 変数名は英文字または_(下線)で始まらなければならない。

・ 名前の長さは先頭から31文字まで識別される。

・ 予約語を使ってはいけないが、予約語を含む名前はよい。

【用例】

int main(void) {

int i; int j; /* 整数を保持する変数i,jを宣言*/

i = 3; /* 変数iに3をセット */

j = i; /* 変数jにiの値をセット */

return 0;

}

p. 27

Page 20: プログラミング - OSLoptsci.eng.shizuoka.ac.jp/class/programing1/1st_lecture.pdf · 参考書:「明快入門C ... •低級言語(マシン語,アセンブリ言語)⇔高級言語(C言語,Java

まとめ

•連絡先

•主題と目標

•C言語の基礎

•コンパイルとリンク

•printf()

•変数と代入演算子

p. 4

p. 18, p. 112

p. 36, p. 26

Page 21: プログラミング - OSLoptsci.eng.shizuoka.ac.jp/class/programing1/1st_lecture.pdf · 参考書:「明快入門C ... •低級言語(マシン語,アセンブリ言語)⇔高級言語(C言語,Java

課題1の5

#include<stdio.h>

int main(void)

{

printf("abcde¥n");

return 0;

}

課題1の5

自分の名前をプリント(出力)するように変更せよ。