プログラミング演習I 2002年度.

Slides:



Advertisements
Similar presentations
情報基礎A 情報科学研究科 徳山 豪.
Advertisements

UNIX利用法.
UNIX利用法 情報ネットワーク特論資料.
システムプログラミング 第7回、8回 ファイルシステム関連の システムコール
Unix生活 Vol.1
応用理工学情報処理 第1回(2015年10月 5日) 月曜日担当 前島展也 Manaba
Java I 第2回 (4/18)
第3回 ファイルとフォルダ 伊藤 高廣 計算機リテラシーM 第3回 ファイルとフォルダ 伊藤 高廣
コンピュータリテラシー 第3回授業の復習 基本的なUNIXコマンド
初年次セミナー 第4回 整数と実数の取り扱い.
システムプログラミング 第6回、7回 main関数の引数 usageメッセージ システムコールのエラーメッセージ ファイル
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
情報工学基礎(改訂版) 岡崎裕之.
リダイレクト パイプ 標準入出力プログラム コマンド行引数 関数 system()
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
基礎プログラミングおよび演習 第9回
C言語 第2講 生物機能制御学講座 濱田 農学部7号館209室.
第2回ネットワークプログラミング 中村 修.
OSとコマンド OS:コンピュータを使うための基本プログラム コマンド:OS上で使用できる命令 OS本体であるカーネルの内部コマンド
「コンピュータと情報システム」 07章 インターネットとセキュリティ
プログラミング演習I 2004年4月14日(第1回) 木村巌.
xxxxxx . yyy xxxxxx Linuxにおける情報管理 一般的なファイル UNIX における情報管理の単位 ファイルの種類を表す
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
精密工学科プログラミング基礎 第9回資料 (12/11 実施)
初年次セミナー 第2回 文字の出力.
データベース設計 第9回 Webインタフェースの作成(1)
インターネット技術特論 B:コマンドライン, shell 山口 実靖
第2回 Microsoft Visual Studio C++ を使ってみよう
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
HTTPとHTML 技術領域専攻 3回 中川 晃.
計算物理学基礎 第1回 UNIXの基礎 C言語の基本.
ネットワークプログラミング 中村 修.
Cプログラミング演習.
プログラミング応用 printfと変数.
第10回関数 Ⅱ (ローカル変数とスコープ).
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第2回 ファイル処理 情報・知能工学系 山本一公
Cプログラミング演習 第7回 メモリ内でのデータの配置.
リダイレクト パイプ 標準入出力プログラム コマンド行引数 関数 system()
プログラミング演習I 2003年6月25日(第10回) 木村巌.
プログラミング演習I 2003年5月7日(第4回) 木村巌.
実践ロボットプログラミング LEGO Mindstorms EV3 で目指せロボコン!
メールの仕組みとマナー.
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
UNIX演習 情報ネットワーク特論.
コンピュータ プレゼンテーション.
システムプログラミング 第7回、8回 ファイルシステム関連の システムコール
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
精密工学科プログラミング基礎Ⅱ 第4回資料 今回の授業で習得してほしいこと: 文字列の扱い ファイル入出力の方法 コマンドライン引数の使い方
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
システムプログラミング 第7回、8回 ファイルシステム関連の システムコール
C言語 はじめに 2016年 吉田研究室.
UNIX演習 情報ネットワーク特論資料.
C言語ファミリー C# 高級言語(抽象的) Java オブジェクト指向 C++ C 機械語(原始的)
高度プログラミング演習 (01).
UNIX演習 情報ネットワーク特論資料.
UNIX演習 情報ネットワーク特論資料.
プログラミング演習I 2003年4月30日(第3回) 木村巌.
プログラミング演習I 2003年7月2日(第11回) 木村巌.
システムプログラミング 第6回 システムコールのエラーメッセージ ファイルシステム 情報工学科 篠埜 功.
プログラミング演習I 2003年4月15日(第一回) 木村巌.
第4回 プログラム作成,情報検索 伊藤 高廣 計算機リテラシーM 第4回 プログラム作成,情報検索 伊藤 高廣
ネットワーク・プログラミング Cプログラミングの基礎.
ネットワーク・プログラミング Linuxシステムとソフトウェア開発.
モジュール分割.
Cp-1. Microsoft Visual Studio 2019 C++ の使い方 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
第1章 文字の表示と計算 printfと演算子をやります.
Presentation transcript:

プログラミング演習I 2002年度

目標 コンピュータに慣れる UNIXの基礎的な操作 メール、Web C言語によるプログラミングの基礎 蟹は甲羅にあわせて穴をほる

演習の流れ ログイン・ログアウト ファイル・ディレクトリ Unix メール・HTML C言語入門

UNIX 1969年 米国AT&Tベル研 マルチタスク・マルチユーザOS ほとんどC言語により記述   UNIXの開発を目的としてC言語を開発

パスワード 忘れないこと 大文字・小文字・数字を混ぜる 破られないこと  悪意ある者は英単語・名前などの辞書を活用する

ファイル 情報のまとまり 講義ノート メモ 取扱説明書 写真 システムのファイル プログラムファイル テキストファイル データファイル 他ユーザのファイル 自分のファイル 情報のまとまり 講義ノート メモ 取扱説明書 写真

ディレクトリ ファイルの整理整頓 (木) ファイルは葉、ディレクトリは節 ROOT 文書 講義ノート 取扱 説明書 画像 電磁気 ノート ファイルの整理整頓  (木) ファイルは葉、ディレクトリは節 講義ノート 取扱 説明書 画像 電磁気 ノート 憲法 洗濯機 取説 テレビ

ディレクトリの木構造 システム / cd .. home home usr cd /usr/bin bin bin a00500 ホームディレクトリ

UNIXのコマンド 英単語を省略したもの 省略の仕方に規則なし /bin, /usr/bin, /usr/local/bin などに保存  cd: Change Directory /Current Directory ls: LiSt pwd: Print Working Directory mkdir: MaKe DIRectory rmdir: ReMove DIRectory cp: CoPy

ファイル・ディレクトリの操作 cd dir0 : ディレクトリdir0への移動 cp file0 file1 : file0をfile1としてコピー mkdir dir0    :dir0を新しく作成 ls : ファイル・ディレクトリ一覧

特別なディレクトリ 現在地(カレントディレクトリ):   . 親:       .. ホームディレクトリ: 

オンラインマニュアル man 各種マニュアル(MANual) man cd コマンドcdのマニュアルの表示 man man manのマニュアル SPCで次ページ、qで終了

UNIXとデバイス デバイス:機器 UNIXでは全ての機器の操作をファイル経由で行う /dev/

デバイスファイル / home usr dev a00500 a00501 stdout fd0

デバイスファイル stdin キーボードからの入力 stdout ディスプレイへの出力 (何文字かたまってから出力)    (何文字かたまってから出力) stderr  ディスプレイへのエラー出力    (一文字ずつすぐに出力)

テキストファイルの表示 テキストファイルの内容をstdoutに書き込む cat (conCATinate) cat file0 :file0のstdoutへの書き込み cat file0 file1 : file0 file1をつなげて書き込み cat > file1 : stdinの内容をfile1に書き込み cat file0 > file1 : file0をfile1に書き込み

テキストファイルの編集 emacs, muleの利用 テキストファイルの編集 統合環境(メール、コンパイル、シェル。。) マウスを使わない(でも済む)

バッファ モード ミニバッファ バッファ #include main(){ } a000% cd a000% emacs

ABC メモリ ABC キーボード ABC ハードディスク

ABC メモリ ABC キーボード C-x C-s 保存 filename.txt ABC filename.txt ハードディスク

インターネット TCP/IPを使った、唯一最大の国際的「ネットワークのネットワーク」 米国高等研究計画局 ARPA (Advanced Research Project Agency) (1971) TCP/IP (Transmission Control Protocol/ Internet Protocol) OSやメディアやネットワークモデルに依存しない

WWW World Wide Web 欧州核物理学研究所 ドキュメントの埋め込み

HTMLとブラウザ Hyper Text Markup Language タグによる修飾 ブラウザ:HTML文書の閲覧 mosaic 米イリノイ大学(1993) →大学当局の有料化反対・独立 → Netscape Communication 社 イリノイ大でも研究継続 →Microsoftへ→ Internet Explorer

URL(文書の位置) http://www.yamagata-u.ac.jp/ コンピュータ名 プロトコル(ファイルへのアクセス方法) 他に ftp: https: gopher: mailto:など コンピュータ名 http://www.yamagata-u.ac.jp/

HTTP (WWWサービス用プロトコル) 「ファイルの要求」と「転送」だけの単純な プロトコル

公開 公の場である 公開内容に対する責任 閲覧内容の「管理者による管理」 閲覧内容の自己管理

タグ(どのように見せるか) <HTML> <HEAD> <TITLE> ページの名前など </TITLE> </HEAD> <BODY> 公表したいことをここに書く。 </BODY> </HTML>

電子メール ネットワーク経由の郵便 好きな時間に読み書き 同時に複数の相手へ 第三者から閲覧の可能性

チェーンメール 人からのメールを大勢に転送 厳禁 多人数への情報伝達はWWWで

ウィルス アプリケーションを利用したシステムの破壊 要注意

マナー 半角かなは使わない 極端に長いメールは出さない subjectに日本語は使わない ウィンドウズアプリケーションを前提としない

メール 差出人 メールサーバ ホームディレクトリ ホームディレクトリ

メールアドレス ユーザID hontani@eie.yz.yamagata-u.ac.jp メールサーバ名

メールアドレス hontani@eie.yz.yamagata-u.ac.jp 学科. 米沢キャンパス. 山形大学. 学術. 日本

メールの構造 ヘッダ 本文 To: Subject: my first email! Reply-to: --- こんにちは。 さようなら。 タイトル あて先 ヘッダ To: Subject: my first email! Reply-to: --- こんにちは。 さようなら。 hontani@eie.yz.yamagata-u.ac.jp 本文

メールの送受信 相手 メールサーバ emacs の利用 ホームディレクトリ ホームディレクトリ

メールの送信 受取人 メールサーバ ホームディレクトリ ホームディレクトリ

C-x m C-c C-w C-c C-c ---Mule: *mail* emacs Sending … done To: Subject: Reply-to: a000@eiefs.yz.yamagata-u.ac.jp ---text follows this line--- ---Mule: *mail* hontani@eie.yz.yamagata-u.ac.jp progI メールの本文 C-c C-w --- 本谷秀堅 tel. 0238-26-3332 C-c C-c

メールの受信 差出人 メールサーバ ホームディレクトリ ホームディレクトリ

Esc-x rmail Date: Thu, 10 May 2001 From: a00500 To: hontani Reply-to: a00500@eie.yz.yamagata-u.ac.jp Content-type: text Content-Length: 151 メールの本文 --- 本谷秀堅 tel. 0238-26-3332 n: 次のメール p: 前のメール SPC: スクロール h: メール一覧 r: メールに返信 f: メールの転送 q: 終了 M-x rmail

シェル ユーザとOSとの仲介役 a00500@eiew00% ls abc abe kbe zze a00500@eiew00% ls a* a00500@eiew00% la *be abe kbe a00500@eiew00% ls *e abe kbe zze a00500@eiew00% ls abc abe kb kyz a00500@eiew00% ls k* kb kyz a00500@eiew00% la k? kb a00500@eiew00% ls k?? kyz

アクセス権モード ファイル・ディレクトリの公開の仕方 読み・書き・実行 自分・同一グループ・他人

アクセス権モード 自分 他人 同一グループ 読み ○ ○ × 書き ○ × × 実行 × × ×

グループ staff b00 a00 a01 hiranaka tamura kohda kobayashi … a00500 a00501

rwx rwx rwx アクセス権モード r: 読み w: 書き x: 実行 a00500@eie00% ls -l -rw-r----- 1 a00500 a00 316 5月10日 rwx rwx rwx r: 読み w: 書き x: 実行 自分    自グループ  他人

アクセス権モードの変更 chmod o+r filename r w x u g o 誰に なにを + -

テキストファイルに実行権 シェルが内容をOSに渡す

mkdir newdir file.txt file.txt

a00500@eiew% ls -l -rw-r--r-- file.txt file.txt 読み書きのみ可 実行は不可

a00500@eiew% ls -l -rw-r--r-- file.txt a00500@eiew% chmod u+x file.txt -rwxr--r-- file.txt a00500@eiew% ./file.txt 実行を許可 file.txtに書かれてることを実行 (mkdir newdir)

コマンド コンピュータに動作を命令 機械語 希望する動作をさせる命令を作成

プログラミング言語 希望する動作のリスト:プログラム プログラミング言語(C、FORTRAN、、、) 人間が読める

C言語 1972年 米ベル研 Dennis M. Ritchie 関数型 UNIX記述用 文字数自由 書式自由

コンパイル 翻訳 : プログラミング言語 → 機械語 Cコンパイラ : C言語を機械語へ cc (C Compiler) 翻訳 : プログラミング言語 → 機械語 Cコンパイラ :  C言語を機械語へ   cc (C Compiler) gcc (GNU C Compiler)

処理の流れ 作業ディレクトリの作成 プログラムソースの作成 コンパイル 実行 デバッグ

プログラムソース コンピュータに実行させたい命令の記載 emacsなどのエディタを利用 ファイル名は ***.c 関数の寄せ集め 関数の末尾に必ず ; をつける

関数 入力と出力 y=f(x)

ヘッダファイルの 組み込み #include <stdio.h> main(){ printf( “Hello, world\n” ); } main関数 最初に実行される関数 セミコロン 文章の末尾 printf関数 画面に表示するための関数 あらかじめ用意されている #include <stdio.h> main(){ printf( “Hello, world\n” );}

コンパイル 人が読める言語から機械語への翻訳 コンパイラ Cコンパイラには多数ある cc: C Compiler gcc: Gnu C Compiler 翻訳家によって翻訳結果も異なる 得手不得手

% ls hello.c % gcc hello.c a.out hello.c % ./a.out Hello, world %

デバッグ 誤りの修正 プログラミング=デバッグ パニックにならないこと エラーメッセージを読むこと

変数の宣言 #include <stdio.h> main(){ int i; i = 3 * 2; printf( “i=%d\n”, i ); } 上から実行

変数の宣言 使う変数をあらかじめ宣言 整数用、実数用など使い分け #include <stdio.h> main(){ int i; i = 3 * 2; printf( “i=%d\n”, i ); } 使う変数をあらかじめ宣言 整数用、実数用など使い分け

変数の宣言 結果を格納するための「メモリ上の領域」 整数用、実数用などでサイズが異なる  int : 整数  double : 実数

変数の宣言 メモリ i i=6 i=6 a.out #include <stdio.h> main(){ int i; printf( “i=%d\n”, i ); } プロセッサ キーボード a.out 表示 a.out calc.c ハードディスク

変数の型 同じ値が違う意味 メモリ: 記録できる場所が1byteずつ1列に並んでいる アドレス: 先頭から何番目か

unsigned char a=1; unsigned char b=2; unsigned char c=20; unsigned short int d=785; unsigned long int e=999; 0000 0001 1 0000 0010 2 0001 0100 3 0000 0011 4 0001 0001 5 アドレス 0000 0000 6 0000 0000 7 0000 0000 8 1110 0111 9 0000 0111 10 11 12 13 14

変数の型 char 1byte 文字など short 4byte 整数 int 4byte 整数 long 4byte 整数 double 8byte 実数 unsigned 0以上の数のみ

signed と unsigned char -128 から127まで unsigned char 0から255まで 0000 0000 0 0 0000 0001 1 1 0000 0010 2 2 0000 0011 3 3 … 0111 1111 127 127 1000 0000 -128 128 1000 0001 -127 129 1000 0010 -126 130 1111 1111 -1 255 char unsigned char char   -128 から127まで unsigned char  0から255まで

表示 printf( )関数に変数の型を教える C++では解決 %記号で表示の仕方を指定

i=12; printf( “%d”, i ); 12 printf( “%02d”, i ); 12 printf( “%03d”, i ); 012 printf( “%04d”, i ); 0012 printf( “%x”, i ); c i = 12 / 5; printf( “%d”, i ); 2 i = 12 / 13; printf( “%d”, i ); 0 i = 12 / 13 * 13; 桁数を指定 0で埋める 16進表記 小数点以下切捨て

i=3; j=4; 書式 %d の箇所に値。 printf( “値は %d です。次の値は %02d です。”, i, j ); 変数 値は3です。次の値は04です。

double x; x = 12.0; printf( “%f”, x ); 12.000000 printf( “%e”, x ); 1.200000e+1 printf( “%5.2f”, x); 12.00 printf( “%05.2f”, x ); 012.00 見慣れた表示 指数表示 桁数の指定

関数 よく使う機能をまとめる f(x): 引数 x   と  出力 f

宣言 メイン関数 関数 #include <stdio.h> double MyFunc( double r ); main(){ double S; S = MyFunc( r ); printf( “%f\n”, S ); } double MyFunc( double r ){ S = 3.14 * r * r; return( S ) 宣言 メイン関数 関数

宣言 戻り値の型 引数の型 メイン関数 関数 値を戻す #include <stdio.h> double MyFunc( double r ); main(){ double S; S = MyFunc( r ); printf( “%f\n”, S ); } double MyFunc( double r ){ S = 3.14 * r * r; return( S ) 戻り値の型 引数の型 宣言 メイン関数 関数 値を戻す

#include <stdio.h> double MyFunc( double r ); main(){ double S, r; r = 1; S = MyFunc( r ); printf( “%f\n”, S ); } double MyFunc( double r ){ double S; S = 3.14 * r * r; return( S )

メモリ r コピー S r S a.out プロセッサ キーボード a.out 表示 a.out area.c ハードディスク 1.0 #include <stdio.h> double MyFunc( double r ); main(){ double S, r; r = 1.0; S = MyFunc( r ); printf( “%f\n”, S ); } double MyFunc( double r ){ double S; S = 3.14 * r * r; return( S ) S 3.14 S r 1.0 3.14 a.out プロセッサ キーボード a.out 3.14 表示 a.out area.c ハードディスク

くり返し文 変数の値を更新しつつくり返し

繰り返す条件 初期値 更新ルール for( i = 0 ; i < 10 ; i++ ){ printf( “%d”, i ); }

#include <stdio.h> main(){ int i; for( i = 0 ; i < 10 ; i++ ){ printf( “%d”, i ); } i = 1 i = 10 i = 0 i = 1 i = 0 i = 0 i = 1 i = 10 次の処理へ。。

i=0; while( i<10 ){ printf( “%d”, i ); i++; } i<10  の間ずっと繰り返す

条件 初期値 更新 for( i = 0 ; i < 10 ; i++ ){ printf( “%d”, i ); } i=0; while( i<10 ){ printf( “%d”, i ); i++; }

繰り返す条件 i=0; while( i<10 ){ printf( “%d”, i ); i++; }

条件文 条件に合致したか否かの判断 if (式) 文1; else 文2;

成立すると1になる 1 if( ){ printf(“…”); 文2;   文3; } else { 文4;   文5; x > y x >= y x < y x <= y x == y x != y 式1 && 式2 式1 || 式2

main(){ int i; i=0; while(1){ printf(“%d\n”, i*i ); if( i*i >= 300 ) break; i++; } printf( “%d\n”, i ); i が1ずつ増える

プロセス 実行中のプログラム UNIXはマルチプロセス 複数のプロセスを同時に実行 バックグラウンドとフォアグラウンド &をつけて実行するとバックグラウンド C-zで一時停止、C-cで中断 bg, fgで停止中のプロセス再開

usrid@eiew0% emacs emacsにかかりきり

usrid@eiew0% usrid@eiew0% emacs & emacsは動いたまま 他の仕事もできる。

既知の対象の内部にある 未知の対象の面積を求める =