プログラミング1 プログラミング演習I プログラミング言語を なぜ勉強する

プログラミング言語を
なぜ勉強するのか?
プログラミング1
プログラミング演習I
プログラミングの重要性
#-1
#-2
プログラミングはどこで使えるのか?
世界的に有名な日本のあるIT企業の
社長が求める人材に”必要なスキル”
1.プログラミング関連の講義だけでなく、
情報学実験等の他の科目のレポート
課題等でデータを処理し、結果を出したり、
グラフを書いたりするときに使える
1. プログラミング (C 言語)
2. 数学
2.卒業論文でプログラミングの能力が
あれば、速く研究を進めることができる
3. 英語
3.プログラミングが得意な学生は就職活動、
大学院進学、その後も有利になる点が多い
#-3
実はプログラミングは面白い!
#-4
まずはやってみよう!
-プログラミングは難しそうだと思っていませんか?
• 間違っても良いから、使ってみる
-日本語の会話で友人とコミュニケーション
をとっているように、情報学部の皆さんが
コンピュータと会話をするときに使えるのは
プログラミング言語
• 他人の真似をする
– 「習うより慣れろ」
– 授業やインターネット上のサンプルプログラムをたくさん
真似る
– 他人のレポート課題をコピーするのはダメ
• 様々な課題に挑戦し、自分で新しい課題の設定や課
題解決能力を伸ばす
• 継続すること:一生使えるスキルなので、プログラミン
グの講義がなくても1年生から4年生まで、それからも
使ってみることC言語の講義でプログラミングの考え方
がわかる。
-プログラミングが得意になれば、コンピュータと
円滑なコミュニケーションがとれ、様々な場面で
皆さんのためにコンピュータが働いてくれる
#-5
#-6
科目の構成
• 講義科目(全てクオータ科目)
– プログラミング1
– プログラミング2
– プログラミング3
– プログラミング4
プログラミング1
プログラミング演習I
講義の進め方,成績の決め方
• 演習科目(全て半期科目)
– プログラミング演習I
– プログラミング演習II
全て必修科目です。落とさないように頑張りましょう
#-7
#-8
ステップアップ制
講義科目と演習科目
• 順序に従って履修する科目
• その科目に合格しないと次の科目が履修
できない
• 講義科目と演習科目が連動する
プログラミング1
情報学部1年
1Q
2Q
3Q
4Q
プログラミング1
プログラミング2
プログラミング3
プログラミング4
プログラミング2
プログラミング3
プログラミング演習I
プログラミング4
プログラミング演習II
理想的な履修
不合格がある場合の例
プログラミング1
プログラミング1
プログラミング2
プログラミング3
2年
プログラミング1
プログラミング2
プログラミング2
プログラミング2
2年
• 「プログラミング1」→「プログラミング2」に合格したとき「プログラミ
ング演習I」に合格する
• 「プログラミング3」→「プログラミング4」に合格したとき「プログラミ
ング演習II」に合格する
#-9
履修例
不合格が続いた場合は2年2Q以降も合格するまで履修
2年
情報学部1年
2Q
3Q
4Q
プログラミング2
プログラミング3
プログラミング4
1Q
プログラミング1
• 講義科目・演習科目ともに全て自動登録科目
1Q
– クラス編成後に履修登録は自動的にされる
• 講義と演習のクラス編成は同じ
理想的な履修
– 同じ演習室で実施
不合格がある場合の例
プログラミング1
プログラミング2
プログラミング2
プログラミング4
プログラミング3
• 2Qのクラス編成は試験の翌週に発表
プログラミング演習II
プログラミング演習I
プログラミング1
クラス編成・履修登録について
プログラミング演習II
プログラミング演習I
プログラミング1
#-10
プログラミング3
プログラミング3
プログラミング4
プログラミング演習II
プログラミング演習I
#-11
#-12
試験・評価について
欠席について
• 試験期間に試験を実施
• 全クラス共通の試験を行う
• 演習が重要な科目なので原則として欠席は認
めない
• 欠席の取り扱いは以下
• 演習科目のレポート課題提出状況と試験の
点数を総合してGrade評価を行う
– 欠席1回は−10点
– 欠席2回は−20点
– 欠席3回は不合格
– レポート提出が完璧でも試験60点以下で不合格
– 試験60点以上でもレポート提出してなければ不
合格
健康管理には十分注意しましょう
• ただし、公欠は欠席に含めない
レポート課題で不正(コピーなど)が見つかった場合は、不合格
コピーの場合は、写した方も写させた方も不合格
#-13
– 忌引き
– 感染症(診断書が必須)
– その他(個別に対応)
遅刻について
証明するものが必要になります
#-14
TAとSA制度と友達
• 遅刻は認めない
• TA (Teaching Assistant)
• 交通機関の乱れにより遅刻する場合は、遅
延証明証を得ること
• 遅刻した場合、欠席として扱うことがある
• SA(Student Assistant)
– 演習の授業をサポートする大学院生
– 積極的に活用しましょう
– 授業外で授業をサポートしてくれる学部学生
– 積極的に活用しましょう
• 友達(friend)
– プログラミングが簡単だと思う学生は周りの学生に積極的に教えてあ
げましょう
– プログラミングが苦手だと感じる学生は、得意な友人から積極的に教
わりましょう
– レポート課題のコピーは厳禁。発見次第、不合格になります
午後の科目です。時間に余裕をもって出席しましょう
。
お昼が混雑することも予想されます。注意しましょう。
#-15
#-16
成績評価
• 「プログラミング」と「プログラミング演習」は同じ評価を
行う
プログラミング1
プログラミング演習I
– プログラミング1,2とプログラミング演習I は同じ成績がつく
– プログラミング3,4とプログラミング演習IIは同じ成績がつく
• 評価方法
– 演習課題の提出
– 期末試験
課題の提出
40%
60%
• 出席と課題の提出
– 原則として欠席は認めない
• 欠席する場合は、理由を連絡すること
– 課題は全て提出
#-17
#-18
課題について
課題について
• 以下のURLで公開
• 提出課題まで授業中に終わった場合
http://www.ns.kogakuin.ac.jp/~ct13140/ProgC/
または
http://goo.gl/r2wMCG
– TAに報告
– TAによる動作確認を受ける
– 課題をメールで提出
• 練習課題
– 演習授業中に実行し結果を確かめる
• 提出課題
– 次週までに提出する課題
#-19
#-20
課題提出方法
課題の期日/採点
• 電子メールで提出する
• 提出先
[email protected]
• メールの題名
• 期日
– 課題が出された日の6日後まで
• 木曜授業の場合 : 次の水曜日の23:59までに提出
• 遅れたものは採点されない
• 採点基準
– コンパイル可能で、課題通りに動作すればOK
講義が2020年4月1日で,提出課題〆切が4月7日の場合
練習課題のメールの件名
ProgC1:20200401
提出課題のメールの件名
ProgC1:20200407
• 本文
• 採点者
– TA
提出課題は早めに提出する
ことも歓迎.
4月3日に提出したとしても,
メールの件名は(締め切り日
に併せて),
ProgC1:20200407とする.
– 課題のプログラム と 実行結果 を添付
• 不正について
– 提出物のコピーなどの不正が発覚した場合は、単位認定しない
#-21
#-22
自宅学習について
自宅でプログラミング(Windows)
• Microsoft Dream Sparkに登録して無料でVisualStudioをダウンロード
• https://www.dreamspark.com/Student/Default.aspx
• Dream Sparkについては情報センターへ
プログラミング基礎
Macの人は
• Xcode をダウンロード
• コマンドラインで gcc でコンパイル可能
第1回
Linux
• gccをインストール
#-23
#-24
練習課題0
C言語プログラムの基本
プログラム または ソース
#include < stdio.h >
void main()
{
printf("Hello World!¥n");
Hello World!
何かキーを押してください
#include < stdio.h >
void main()
{
}
#include < stdio.h >
void main()
{
printf("Hello World!");
Hello World!何かキーを押してください
とりあえず書く
main関数 この中が実行される
printf("Hello World!¥n");
ここに実行したい命令を書く
}
#include < stdio.h >
void main()
{
printf("Hello ¥n World! ¥n");
Hello
World!
何かキーを押してください
}
}
#-25
#-26
printf()
Microsoft Visual C++の基本
プログラム または ソース
#include "stdafx.h"
• 文字列を表示する関数
消してはダメです
int _tmain(int argc, _TCHAR* argv[])
{
void main()に
修正してはダメです
• 使い方
printf(“ここに表示したい文字列”);
printf("Hello World!¥n");
関数の最後には「;(セミコロン)」を書く
return 0;
}
文字列の中に「¥n」を書くと改行
#-27
#-28
それぞれの意味
• include
• コンパイル
– 用意されたライブラリやヘッダを読み込むための命令
– ライブラリ・ヘッダについては各自調べること
– プログラムをコンピュータが実行できる形に変換すること
• コンパイルエラー
• stdio.h
– プログラムの文法が間違っているというエラー
– エラー表示を見れば直せる.波線が付く部分を確認
– printfなどの命令(関数)が入っているヘッダ
– これを読み込まないとprintfは実行できない
– 他の命令は各自調べること
• デバッグ実行
– 変数などの読み書きを確認しながら実行すること
– やりたい人は各自調べること
– 通常はデバッグなし実行で良い
• main
– コンピュータはこの中に書いたプログラムを順に実行する
#-29
#-30
練習課題1
練習課題2
#include < stdio.h >
void main()
{
printf(“本日は晴天です。¥n");
printf(“昨日は雨です。¥n");
printf(“明日の天気はわかりません。¥n");
#include < stdio.h >
void main()
{
printf("Hello World! ¥n");
/* と */ で囲まれた部分は無視される
/* printf("Good bye! ¥n");
printf("Yeah! ¥n"); */
}
#include < stdio.h >
void main()
{
printf(“本日は晴天です。¥n昨日は雨です。¥n明日の天気はわかりません。¥n");
// printf("See you again ¥n");
// 以降の1行は全て無視される
}
コメント プログラムを見やすくするためにコメントを付ける
}
#-31
#-32
コメントの例
コメント外への書き込み
• 余計な書き込みはエラーが出る
#include < stdio.h >
– 余計な文字は,消すかコメントとすること
– 全角スペースをプログラム中に書かない
/* ここからメインのプログラム */
void main()
{
printf(“Hello World! ¥n”); /* コメントの練習 */
• コメント・printf内は可
printf("Good bye! ¥n");
printf(“Yeah! ”); // ←わざと改行してない
printf("See you again ¥n");
}
#-33
#-34
練習課題3
変数
• 値を入れておくもの
• プログラムの最初で宣言する必要がある
#include
stdio.h
#include <<stdio.h
>>
void main()
void
main()
{
{
int mon; /* 変数の名前は自由につけられる */
int day; int mon; /* ←変数という。値を保存してくれる入れ物 */
宣言
int hensu;
int day; /* 変数の名前は自由につけられる */
mon = 4;
mon = 4; // 変数mon に4を代入
day = 13;
day = 13; // 変数day に13を代入
printf("今日は%d月%d日です。",mon,day);
}
printf("今日は%d月%d日です。¥n",mon,day); // 変数の内容を表示する
型
変数名 自由につけてよい(ただし予約語を除く)
int型:整数を扱う変数であることを宣言
}
代入
hensu = 5;
×間違い → 5 = hensu;
「=」 は方程式ではない
#-35
#-36
printf() -その2-
printf() -その3-
• 変数の内容も表示できる
• 使い方
int hensu;
hensu = 5;
printf(“hensuの値は %d です。”, hensu);
int a;
int b;
a = 1;
b = 2;
printf(“aは %d , bは %d です。”, a, b);
順番に表示される
%d は整数(int型)の変数のみに使える
%d の部分に、後に書いた変数の内容が表示される
#-37
#-38
練習課題4
四則演算
それぞれprintfを追加して結果を確かめてみる
#include < stdio.h >
void main()
{
int a;
int b;
int c;
a = 2; //a に 2 を代入
b = 5; //b に 5 を代入
c = b+a; //c に b+a を代入
printf("c=%d¥n",c);
変数には計算結果も代入できる
c = c-a;
a = 2*a+b-c;
printf("a=%d¥n",a);
}
#-39
#include < stdio.h >
void main()
{
int a;
int b;
int c;
a=10;
b=2;
c=a+b;
}
#include < stdio.h >
void main()
{
int a;
int b;
int c;
a=10;
b=2;
c=a*b;
}
#include < stdio.h >
void main()
{
int a;
int b;
int c;
a=10;
b=2;
c=a-b;
}
#include < stdio.h >
void main()
{
int a;
int b;
int c;
a=10;
b=2;
c=a/b;
}
#-40
練習課題5
scanf()
• 文字列のキーボードからの入力を待つ関数
• 使い方
int a;
入力値が変数aに代入される
scanf("%d", &a);
#include < stdio.h >
void main()
{
int a;
• Microsoft Visual C++の場合
int a;
scanf_s("%d", &a);
printf("整数を入力してください:");
scanf("%d",&a);
printf("入力した整数は%dです¥n",a);
}
#-41
#-42
練習課題5−2
変数と型
• 変数
#include < stdio.h >
main()
{
int a;
int b;
printf("整数を入力してください:");
scanf("%d",&a);
printf("整数を入力してください:");
scanf("%d",&b);
– 値を入れておくもの
– 変数名は何でもOK
– 宣言をする必要がある
– 例)
int a,b,c;
int kogakuin;
int year=100;
整数型のaに整数以外を代
入するとどうなる?
printf(“入力した整数は、%dと%dです。¥n",a,b);
}
ただし、予約語はダメ
予約語の例
int
main
include
int main; ←エラー
#-43
#-44
変数名
変数の型
• 変数には型がある
• 型によって宣言が異なる
• 分かりやすい変数名をつけよう
– わかりにくい変数名: a, b, c, …
– わかりやすい変数名: day, mon, year …
• 整数型: 整数を扱う場合
• 変数名のこつ
int a;
– 自作の変数名は大文字から始める
– 目的が分かるようにする
• 浮動小数点型: 小数を扱う場合
float a;
← 2進数32桁分(32bit)
double a;
← 2進数64桁分(64bit)
int Birthday_Day;
int Birthday_Mon;
int Birthday_Year;
#-45
#-46
型のいろいろ
printf()と変数の型
• 文字列を表示する関数
• 数字の型
– int float double unsigned
• 使い方
printf(“ここに表示したい文字列”);
printf(“変数の値は %d です”, hensu);
printf(“変数の値は %f です”, hensu);
• 文字
– char string
• 真偽
– bool
• 言語によって使えるもの・使えないものがある
#-47
%d
%f
%lf
変数が整数型のとき
変数が float 型のとき
変数が double 型のとき
#-48
プログラムの例
scanf()と変数の型
• 文字列のキーボードからの入力を待つ関数
• 使い方
int a;
scanf(“%d”, &a);
%d
%f
%lf
入力値が変数aに代入される
#include < stdio.h >
void main()
{
int seisu;
float shosu1;
double shosu2;
seisu = 10;
shosu1 = 3.141592;
shosu2 = 10.4312;
変数が整数型のとき
変数が float 型のとき
変数が double 型のとき
printf("%d,%f,%f¥n", seisu, shosu1, shosu2);
}
#-49
#-50
プログラムの例
なぜ変数の宣言が必要なのか?
#include < stdio.h >
main()
{
double a;
• コンパイラに変数であることを教える
• 型を宣言することで、必要なメモリを確保する
a=1.138683896838698002;
printf("入力した整数は%fです¥n",a);
printf("入力した整数は%lfです¥n",a);
}
#-51
#-52
キャスト
キャスト
• 結果はどうなるか?
• 結果はどうなるか?
#include < stdio.h >
void main()
{
int a=2;
float b=5,c;
#include < stdio.h >
void main()
{
int a=2,b=5;
float c;
c=b/a;
c=b/a;
printf("%f¥n",c);
printf("%f¥n",c);
}
}
#-53
#-54
キャスト
キャスト
• 結果はどうなるか?
• 結果はどうなるか?
#include < stdio.h >
void main()
{
int a=2,b=5;
float c;
#include < stdio.h >
void main()
{
int b=5;
float c;
c=(float)b/a;
c=b/2;
printf("%f¥n",c);
printf("%f¥n",c);
}
}
#-55
#-56
キャスト
キャスト
• 結果はどうなるか?
• 結果はどうなるか?
#include < stdio.h >
void main()
{
int b=5;
float c;
#include < stdio.h >
void main()
{
int b=5;
float c;
c=(float)b/2;
c=b/2.0;
printf("%f¥n",c);
printf("%f¥n",c);
}
}
#-57
#-58