プログラミング入門 II 2010年後期.

Slides:



Advertisements
Similar presentations
2.5 プログラムの構成要素 (1)文字セット ① ASCII ( American Standard Code for Interchange ) JIS コードと同じ ② EBCDIC ( Extended Binary Coded Decimal for Information Code ) 1.
Advertisements

初年次セミナー 第8回 データの入力.
応用理工学情報処理 第1回(2015年10月 5日) 月曜日担当 前島展也 Manaba
コマンドプロンプトの起動と終了 最初に覚えるコマンド ディレクトリ構造とパス 各種コマンドの練習 Cコンパイルとプログラムの実行
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
初年次セミナー 第4回 整数と実数の取り扱い.
リダイレクト パイプ 標準入出力プログラム コマンド行引数 関数 system()
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
基礎プログラミングおよび演習 第9回
プログラミング入門2 第1回 導入 情報工学科 篠埜 功.
第14章 ファイル操作 (コマンドプロンプト版)
第2回ネットワークプログラミング 中村 修.
基礎プログラミング (第五回) 担当者: 伊藤誠 (量子多体物理研究室) 内容: 1. 先週のおさらいと続き (実習)
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
プログラミング入門 II 2009年後期.
情報科学1(G1) 2016年度.
第6章 2重ループ&配列 2重ループと配列をやります.
初年次セミナー 第2回 文字の出力.
情報処理Ⅱ 第4回 2007年10月29日(月).
第7回 条件による繰り返し.
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
プログラムの制御構造 選択・繰り返し.
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
関数の定義.
プログラミング応用 printfと変数.
リダイレクト パイプ 標準入出力プログラム コマンド行引数 関数 system()
プログラミング演習I 2003年5月7日(第4回) 木村巌.
コマンドプロンプトの起動と終了 最初に覚えるコマンド ディレクトリ構造とパス 各種コマンドの練習 Cコンパイルとプログラムの実行
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
04: 式・条件分岐 (if) C プログラミング入門 基幹7 (水5) Linux にログインし、以下の講義ページ を開いておくこと
第7回 条件による繰り返し.
第7回 プログラミングⅡ 第7回
第14章 ファイル操作 (コマンドプロンプト版)
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
第11回 プログラミングⅡ 第11回
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
2013年度 プログラミングⅡ ~ はじめてのプログラミング ~.
プログラミング言語論 第四回 理工学部 情報システム工学科 新田直也.
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
2017年度 プログラミングⅡ ~ はじめてのプログラミング ~.
情報処理Ⅱ 第2回:2003年10月14日(火).
2014年度 プログラミングⅡ ~ はじめてのプログラミング ~.
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
C言語 はじめに 2016年 吉田研究室.
C言語ファミリー C# 高級言語(抽象的) Java オブジェクト指向 C++ C 機械語(原始的)
高度プログラミング演習 (01).
地域情報学 C言語プログラミング 第1回 導入、標準出力、変数 2017年10月13日
地域情報学 C言語プログラミング 第2回 変数・配列、型変換、入力 2017年10月20日
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
プログラミングⅡ 第2回.
復習 Cにおけるループからの脱出と制御 break ループを強制終了する.if文と組み合わせて利用するのが一般的. continue
C#プログラミング実習 第2回.
情報処理Ⅱ 2005年10月28日(金).
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
Cp-1. Microsoft Visual Studio 2019 C++ の使い方 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
情報処理Ⅱ 2005年11月25日(金).
プログラミング入門2 第5回 配列 変数宣言、初期化について
情報処理Ⅱ 小テスト 2005年2月1日(火).
printf・scanf・変数・四則演算
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
C言語講座 四則演算  if ,  switch 制御文.
情報処理Ⅱ 2006年10月27日(金).
プログラミング演習I 補講用課題
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
第1章 文字の表示と計算 printfと演算子をやります 第1章 文字の表示と計算.
第1章 文字の表示と計算 printfと演算子をやります.
Presentation transcript:

プログラミング入門 II 2010年後期

プログラミング入門 II 担 当 教 員 : 上村 技術スタッフ: 月川、北本、細島 ティーチング・アシスタント(TA):        阿部、遠藤、川上、川田、染谷        高橋、宮崎、宮地、和田 レポート:必須2回、任意2回の計4回 コースナビ: C言語入門編 達成度60%以上 出席: 2/3以上 20分以内の遅刻は0.5回 20分以上の遅刻は入室は認めるが、出席は0回 100%なら任意レポート満点 10回分以上

単位修得の要件: 出席:2/3以上 レポート:必須2回(10点) コースナビ:C言語入門編 達成度60%以上 「期末試験(80点) + レポート(20点)」で60点以上 10回分以上 注意! レポートのファイルは保存しておくこと 成績評価法: 上記要件を満足した者について 期末試験80点+レポート合計20点=100点満点 のうち 90点以上:秀、80点以上:優、70点以上:良、60点以上:可

講義予定(前半): 回 月 日 内 容 (予定) レポート 1 10月1日 講義の概要・コースナビの説明 前期の復習(演算子、制御文) 2 月 日 内   容 (予定) レポート 1 10月1日 講義の概要・コースナビの説明 前期の復習(演算子、制御文) 2 10月8日 第6章 配 列 ~配列の応用~ 3 10月15日 第9章 ポインタ ~ポインタの理解~ 4 10月22日 第1回レポート(必須) ~配列とポインタ~ (10/29提出) 5 10月29日 第10章 関 数 第11章 関数について 6 11月5日 第10章 関 数 ~関数とポインタ~ 第11章 関数について ~関数引数~ 7 11月12日 第10章 関 数 ~関数と配列、関数と2次元配列~ 第12章 関数と配列 8 11月19日 第2回レポート(任意) ~関数の再帰呼び出し~ (11/26提出)

講義予定(後半): 各自のコースナビ「C言語入門編」の進度を毎週、発表予定。 積極的に自習を進めて下さい。 12月10日 は休講 2月4日 回 月 日 内   容 (予定) レポート 9 11月26日 第13章 文字の取り扱い方 10 12月3日 第15章 文字列処理 11 12月17日 第14章 ファイル操作 第3回レポート(必須) (1/21提出) 12 12月24日 第16章 構造体 ~構造体とその配列~ 13 1月21日 第4回レポート(任意) ~関数と構造体~ (2/4提出) 14 1月28日 第17章 その他の制御文 第18章 マクロ 15 2月4日 ゲームの作成 16 2月11日 期末テスト 12月10日 は休講 2月4日 は補講 各自のコースナビ「C言語入門編」の進度を毎週、発表予定。  積極的に自習を進めて下さい。

コマンドプロンプトを用いた プログラミング コマンドプロンプトの起動と終了 最初に覚えるコマンド プログラムの編集 プログラムのコンパイルと実行 今日のポイント コマンドプロンプトでプログラミング

この授業では、基本的にこのフォルダ内にプログラムを作ることを前提とする。 プログラミング入門Ⅱの準備 マイ ドキュメント(Z:\ または 'fs\home\students'のt1029XX)に新しいフォルダを作る。 nyumon2 と名前をつける。 プログラム例のソースファイルは ex で始める。ピリオドは _ に直す。 プログラム例 5.5.1 → ex5_5_1.c この授業では、基本的にこのフォルダ内にプログラムを作ることを前提とする。

コマンドプロンプトの起動と終了 起動(マウス) 終了(キーボード) 終了(マウス) 練習:実際にコマンドプロンプトを起動して終了せよ。 [スタート] を<クリック> [すべてのプログラム(P)] [Microsoft Visual Studio 2005] [Visual C++コマンドプロンプト] を<クリック> コマンドプロンプトはCUI(Character-based User Interface)でコマンドを実行 終了(キーボード) 「exit」 と入力して <Enter> 終了(マウス) 右上の [x] ボタンを<クリック> x 練習:実際にコマンドプロンプトを起動して終了せよ。

コマンドプロンプトのショートカットを デスクトップに作成 [スタート]を<クリック> [すべてのプログラム(P)] [Microsoft Visual Studio 2005] [Visual C++コマンドプロンプト] を [送る(N)] [デスクトップ (ショートカットを作成)] を<クリック> <右クリック>

「作業フォルダ」の設定 デスクトップの「Visual C++コマンドプロンプト」の ショートカットを [ショートカット] タブを選択 [プロパティ(R)] を<クリック> 「Visual C++コマンドプロンプトのプロパティ」 ウィンドウ [ショートカット] タブを選択 [作業フォルダ(S):] 欄に起動時のデフォルトパス名として「Z:\nyumon2」を記入 [  OK  ] ボタンを<クリック> <右クリック> 一番下

最初に覚えるコマンド notepad devenv (development environment) dir (directory) メモ帳によるテキストファイル編集 devenv (development environment) Visual Studioのエディタによるソースファイル編集 dir (directory) ディレクトリ(フォルダ)内のファイル一覧表示 cl (compile & link) コンパイルとリンクによる .exe ファイル作成

ファイル名だけで devenv が立ち上がる プログラムの作成・編集 コマンドプロンプトでメモ帳を起動 Z:\nyumon2>notepad hello.c /* hello world program */ #include <stdio.h> int main() { printf("Hello world!\n"); return 0; } すでにソースファイルがある場合は、 ファイル名だけで devenv が立ち上がる Z:\nyumon2>hello.c

プログラムのコンパイルと実行 CLコマンド(compile and link) 実行ファイル確認 実行 Z:\nyumon2>cl hello.c 実行ファイル確認 Z:\nyumon2>dir 実行 Z:\nyumon2>hello Z:\nyumon2 のディレクトリ 2010/10/01 13:30 <DIR> . 2010/10/01 13:30 <DIR> .. 2010/10/01 13:40 109 hello.c 2010/10/01 13:45 610 hello.obj 2010/10/01 13:45 53,248 hello.exe さらに詳しく知りたい人は以下を参照のこと http://www.ced.is.utsunomiya-u.ac.jp/lecture/2010/common/vs2005/ command_prompt.php

PADと構造化プログラミング PADとは 処理の方向:上から下へ 判断・選択、繰返し:右へネスト(入れ子) 3種の繰返し 定義、引用 Problem Analysis Diagram 構造化フローチャートの一種 処理の方向:上から下へ 箱を縦線で連接→ブロック 判断・選択、繰返し:右へネスト(入れ子) 3種の繰返し 前判定(while)、後判定(do-while)、問題向き(for) 定義、引用 goto 文のないプログラミング

PADの例 処理1 処理2-1 定義 = 繰返し(for)2 処理2-2-1 判断2-2 処理2-2-2 処理3 ネストレベル1 ネストレベル2 処理2-1 定義 = 繰返し(for)2 処理2-2-1 判断2-2 処理2-2-2 処理3

PADの制御構造(1) 連接(複合文, ブロック) 文 判断(if 文) 文1 条件 文2 { 文; } if (条件) 文1;  文; } 文 条件 文1 文2 if (条件) 文1; else 文2;

PADの制御構造(2) 選択(if 文,switch 文) 文1 条件1 文2 条件2 文3 文1 文2 文3 if (条件1) 文1; else if (条件2) 文2; else 文3; switch(式) { case 定数1: 文1; break; case 定数2: 文2; break; default: 文3; } 式=定数1 式=定数2 文1 文2 文3

PADの制御構造(3) 繰返し(while 文) while (条件) {  文;  : } 文 条件 : 文

PADの制御構造(4) 繰返し(for 文) for (変数=初期値;変数<=終値;変数++) { 文; } 変数=初期値,…,終値  文; } 変数=初期値,…,終値 文

2項演算子(付録A.3) 優先順位 代入(=, +=, -=, *=, /=, %=,…) 論理(||, &&) ビット(|, ^, &) 関係、等値(==, !=, >=, >, <=, <) ビットシフト(>>, <<) 算術(+, -, *, /, %) 剰余 優先順位

単項演算子(付録A.3) 優先順位 キャスト((int), (float), (double), …) 論理(!) ビット(~) 符号(+, -) ポインタ(&, *) sizeof 前置インクリメント(++)、デクリメント(--) 後置インクリメント(++)、デクリメント(--) 優先順位

よくやるミス (bug1.c) #include <stdio.h> int main() { int a=2010, b=1992; printf("%d は %d と比べて", a, b); if (a = b) printf("等しい.\n"); else if (a > b) printf("大きい.\n"); else printf("小さい.\n"); return 0; } 何がおかしい?

自動型変換 定数 代入演算 算術演算 10 10L 10U 10. 0.5L .5F 小数点なし: 整数定数 小数点あり: 実数定数 接尾語で型指定可 定数 小数点なし: 整数定数 小数点あり: 実数定数 代入演算 実数型←整数: 精度が落ちる可能性 整数型←実数: 小数の切捨て、オーバーフロー 算術演算 両方とも整数: 整数演算 一方が実数: 実数演算 10 10L 10U 10. 0.5L .5F 5 / 3 = 1, 5 % 3 = 2 5. / 3 = 1.6666666...

本日のパズル 次のプログラムは何を出力するか? main() { int x; x = - 3 + 4 * 5 - 6; printf("%d\n",x); x = 3 + 4 % 5 - 6; printf("%d\n",x); x = - 3 * 4 % - 6 / 5; printf("%d\n",x); x = ( 7 + 6 ) % 5 / 2; printf("%d\n",x); }