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