Download presentation
Presentation is loading. Please wait.
1
プログラミング演習I 2002年度
2
目標 コンピュータに慣れる UNIXの基礎的な操作 メール、Web C言語によるプログラミングの基礎 蟹は甲羅にあわせて穴をほる
3
演習の流れ ログイン・ログアウト ファイル・ディレクトリ Unix メール・HTML C言語入門
4
UNIX 1969年 米国AT&Tベル研 マルチタスク・マルチユーザOS ほとんどC言語により記述 UNIXの開発を目的としてC言語を開発
5
パスワード 忘れないこと 大文字・小文字・数字を混ぜる 破られないこと 悪意ある者は英単語・名前などの辞書を活用する
6
ファイル 情報のまとまり 講義ノート メモ 取扱説明書 写真 システムのファイル プログラムファイル テキストファイル データファイル
他ユーザのファイル 自分のファイル 情報のまとまり 講義ノート メモ 取扱説明書 写真
7
ディレクトリ ファイルの整理整頓 (木) ファイルは葉、ディレクトリは節 ROOT 文書 講義ノート 取扱 説明書 画像 電磁気 ノート
ファイルの整理整頓 (木) ファイルは葉、ディレクトリは節 講義ノート 取扱 説明書 画像 電磁気 ノート 憲法 洗濯機 取説 テレビ
8
ディレクトリの木構造 システム / cd .. home home usr cd /usr/bin bin bin a00500
ホームディレクトリ
9
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
10
ファイル・ディレクトリの操作 cd dir0 : ディレクトリdir0への移動
cp file0 file1 : file0をfile1としてコピー mkdir dir0 :dir0を新しく作成 ls : ファイル・ディレクトリ一覧
11
特別なディレクトリ 現在地(カレントディレクトリ): . 親: .. ホームディレクトリ:
12
オンラインマニュアル man 各種マニュアル(MANual) man cd コマンドcdのマニュアルの表示
man man manのマニュアル SPCで次ページ、qで終了
13
UNIXとデバイス デバイス:機器 UNIXでは全ての機器の操作をファイル経由で行う /dev/
14
デバイスファイル / home usr dev a00500 a00501 stdout fd0
15
デバイスファイル stdin キーボードからの入力 stdout ディスプレイへの出力 (何文字かたまってから出力)
(何文字かたまってから出力) stderr ディスプレイへのエラー出力 (一文字ずつすぐに出力)
16
テキストファイルの表示 テキストファイルの内容をstdoutに書き込む cat (conCATinate)
cat file0 :file0のstdoutへの書き込み cat file0 file1 : file0 file1をつなげて書き込み cat > file1 : stdinの内容をfile1に書き込み cat file0 > file1 : file0をfile1に書き込み
17
テキストファイルの編集 emacs, muleの利用 テキストファイルの編集 統合環境(メール、コンパイル、シェル。。)
マウスを使わない(でも済む)
18
バッファ モード ミニバッファ バッファ #include main(){ } a000% cd a000% emacs
19
ABC メモリ ABC キーボード ABC ハードディスク
20
ABC メモリ ABC キーボード C-x C-s 保存 filename.txt ABC filename.txt ハードディスク
21
インターネット TCP/IPを使った、唯一最大の国際的「ネットワークのネットワーク」
米国高等研究計画局 ARPA (Advanced Research Project Agency) (1971) TCP/IP (Transmission Control Protocol/ Internet Protocol) OSやメディアやネットワークモデルに依存しない
22
WWW World Wide Web 欧州核物理学研究所 ドキュメントの埋め込み
23
HTMLとブラウザ Hyper Text Markup Language タグによる修飾 ブラウザ:HTML文書の閲覧
mosaic 米イリノイ大学(1993) →大学当局の有料化反対・独立 → Netscape Communication 社 イリノイ大でも研究継続 →Microsoftへ→ Internet Explorer
24
URL(文書の位置) http://www.yamagata-u.ac.jp/ コンピュータ名 プロトコル(ファイルへのアクセス方法)
他に ftp: https: gopher: mailto:など コンピュータ名
25
HTTP (WWWサービス用プロトコル) 「ファイルの要求」と「転送」だけの単純な プロトコル
26
公開 公の場である 公開内容に対する責任 閲覧内容の「管理者による管理」 閲覧内容の自己管理
27
タグ(どのように見せるか) <HTML> <HEAD>
<TITLE> ページの名前など </TITLE> </HEAD> <BODY> 公表したいことをここに書く。 </BODY> </HTML>
28
電子メール ネットワーク経由の郵便 好きな時間に読み書き 同時に複数の相手へ 第三者から閲覧の可能性
29
チェーンメール 人からのメールを大勢に転送 厳禁 多人数への情報伝達はWWWで
30
ウィルス アプリケーションを利用したシステムの破壊 要注意
31
マナー 半角かなは使わない 極端に長いメールは出さない subjectに日本語は使わない ウィンドウズアプリケーションを前提としない
32
メール 差出人 メールサーバ ホームディレクトリ ホームディレクトリ
33
メールアドレス ユーザID メールサーバ名
34
メールアドレス 学科. 米沢キャンパス. 山形大学. 学術. 日本
35
メールの構造 ヘッダ 本文 To: Subject: my first email! Reply-to: --- こんにちは。 さようなら。
タイトル あて先 ヘッダ To: Subject: my first ! Reply-to: --- こんにちは。 さようなら。 本文
36
メールの送受信 相手 メールサーバ emacs の利用 ホームディレクトリ ホームディレクトリ
37
メールの送信 受取人 メールサーバ ホームディレクトリ ホームディレクトリ
38
C-x m C-c C-w C-c C-c ---Mule: *mail* emacs Sending … done To:
Subject: Reply-to: ---text follows this line--- ---Mule: *mail* progI メールの本文 C-c C-w --- 本谷秀堅 tel C-c C-c
39
メールの受信 差出人 メールサーバ ホームディレクトリ ホームディレクトリ
40
Esc-x rmail Date: Thu, 10 May 2001 From: a00500 To: hontani
Reply-to: Content-type: text Content-Length: 151 メールの本文 --- 本谷秀堅 tel n: 次のメール p: 前のメール SPC: スクロール h: メール一覧 r: メールに返信 f: メールの転送 q: 終了 M-x rmail
41
シェル ユーザとOSとの仲介役 a00500@eiew00% ls abc abe kbe zze a00500@eiew00% ls a*
la *be abe kbe ls *e abe kbe zze ls abc abe kb kyz ls k* kb kyz la k? kb ls k?? kyz
42
アクセス権モード ファイル・ディレクトリの公開の仕方 読み・書き・実行 自分・同一グループ・他人
43
アクセス権モード 自分 他人 同一グループ 読み ○ ○ × 書き ○ × × 実行 × × ×
44
グループ staff b00 a00 a01 hiranaka tamura kohda kobayashi … a00500 a00501
45
rwx rwx rwx アクセス権モード r: 読み w: 書き x: 実行 a00500@eie00% ls -l
-rw-r a a 5月10日 rwx rwx rwx r: 読み w: 書き x: 実行 自分 自グループ 他人
46
アクセス権モードの変更 chmod o+r filename r w x u g o 誰に なにを + -
47
テキストファイルに実行権 シェルが内容をOSに渡す
48
mkdir newdir file.txt file.txt
49
ls -l -rw-r--r-- file.txt file.txt 読み書きのみ可 実行は不可
50
ls -l -rw-r--r-- file.txt chmod u+x file.txt -rwxr--r-- file.txt ./file.txt 実行を許可 file.txtに書かれてることを実行 (mkdir newdir)
51
コマンド コンピュータに動作を命令 機械語 希望する動作をさせる命令を作成
52
プログラミング言語 希望する動作のリスト:プログラム プログラミング言語(C、FORTRAN、、、) 人間が読める
53
C言語 1972年 米ベル研 Dennis M. Ritchie 関数型 UNIX記述用 文字数自由 書式自由
54
コンパイル 翻訳 : プログラミング言語 → 機械語 Cコンパイラ : C言語を機械語へ cc (C Compiler)
翻訳 : プログラミング言語 → 機械語 Cコンパイラ : C言語を機械語へ cc (C Compiler) gcc (GNU C Compiler)
55
処理の流れ 作業ディレクトリの作成 プログラムソースの作成 コンパイル 実行 デバッグ
56
プログラムソース コンピュータに実行させたい命令の記載 emacsなどのエディタを利用 ファイル名は ***.c 関数の寄せ集め
関数の末尾に必ず ; をつける
57
関数 入力と出力 y=f(x)
58
ヘッダファイルの 組み込み #include <stdio.h> main(){ printf( “Hello, world\n” ); } main関数 最初に実行される関数 セミコロン 文章の末尾 printf関数 画面に表示するための関数 あらかじめ用意されている #include <stdio.h> main(){ printf( “Hello, world\n” );}
59
コンパイル 人が読める言語から機械語への翻訳 コンパイラ Cコンパイラには多数ある cc: C Compiler
gcc: Gnu C Compiler 翻訳家によって翻訳結果も異なる 得手不得手
60
% ls hello.c % gcc hello.c a.out hello.c % ./a.out Hello, world %
61
デバッグ 誤りの修正 プログラミング=デバッグ パニックにならないこと エラーメッセージを読むこと
62
変数の宣言 #include <stdio.h> main(){ int i; i = 3 * 2;
printf( “i=%d\n”, i ); } 上から実行
63
変数の宣言 使う変数をあらかじめ宣言 整数用、実数用など使い分け #include <stdio.h> main(){
int i; i = 3 * 2; printf( “i=%d\n”, i ); } 使う変数をあらかじめ宣言 整数用、実数用など使い分け
64
変数の宣言 結果を格納するための「メモリ上の領域」 整数用、実数用などでサイズが異なる int : 整数 double : 実数
65
変数の宣言 メモリ i i=6 i=6 a.out #include <stdio.h> main(){ int i;
printf( “i=%d\n”, i ); } プロセッサ キーボード a.out 表示 a.out calc.c ハードディスク
66
変数の型 同じ値が違う意味 メモリ: 記録できる場所が1byteずつ1列に並んでいる アドレス: 先頭から何番目か
67
unsigned char a=1; unsigned char b=2; unsigned char c=20; unsigned short int d=785; unsigned long int e=999; アドレス 11 12 13 14
68
変数の型 char 1byte 文字など short 4byte 整数 int 4byte 整数 long 4byte 整数
double 8byte 実数 unsigned 0以上の数のみ
69
signed と unsigned char -128 から127まで unsigned char 0から255まで
… char unsigned char char から127まで unsigned char 0から255まで
70
表示 printf( )関数に変数の型を教える C++では解決 %記号で表示の仕方を指定
71
i=12; printf( “%d”, i ); printf( “%02d”, i ); printf( “%03d”, i ); printf( “%04d”, i ); printf( “%x”, i ); c i = 12 / 5; printf( “%d”, i ); i = 12 / 13; printf( “%d”, i ); i = 12 / 13 * 13; 桁数を指定 0で埋める 16進表記 小数点以下切捨て
72
i=3; j=4; 書式 %d の箇所に値。 printf( “値は %d です。次の値は %02d です。”, i, j ); 変数 値は3です。次の値は04です。
73
double x; x = 12.0; printf( “%f”, x ); printf( “%e”, x ); e+1 printf( “%5.2f”, x); printf( “%05.2f”, x ); 見慣れた表示 指数表示 桁数の指定
74
関数 よく使う機能をまとめる f(x): 引数 x と 出力 f
75
宣言 メイン関数 関数 #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 ) 宣言 メイン関数 関数
76
宣言 戻り値の型 引数の型 メイン関数 関数 値を戻す #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 ) 戻り値の型 引数の型 宣言 メイン関数 関数 値を戻す
77
#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 )
78
メモリ 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 ハードディスク
79
くり返し文 変数の値を更新しつつくり返し
80
繰り返す条件 初期値 更新ルール for( i = 0 ; i < ; i++ ){ printf( “%d”, i ); }
81
#include <stdio.h>
main(){ int i; for( i = 0 ; i < ; i++ ){ printf( “%d”, i ); } i = 1 i = 10 i = 0 i = 1 i = 0 i = 0 i = 1 i = 10 次の処理へ。。
82
i=0; while( i<10 ){ printf( “%d”, i ); i++; } i<10 の間ずっと繰り返す
83
条件 初期値 更新 for( i = 0 ; i < ; i++ ){ printf( “%d”, i ); } i=0; while( i<10 ){ printf( “%d”, i ); i++; }
84
繰り返す条件 i=0; while( i<10 ){ printf( “%d”, i ); i++; }
85
条件文 条件に合致したか否かの判断 if (式) 文1; else 文2;
86
成立すると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
87
main(){ int i; i=0; while(1){ printf(“%d\n”, i*i ); if( i*i >= 300 ) break; i++; } printf( “%d\n”, i ); i が1ずつ増える
88
プロセス 実行中のプログラム UNIXはマルチプロセス 複数のプロセスを同時に実行 バックグラウンドとフォアグラウンド
&をつけて実行するとバックグラウンド C-zで一時停止、C-cで中断 bg, fgで停止中のプロセス再開
89
emacs emacsにかかりきり
90
emacs & emacsは動いたまま 他の仕事もできる。
91
既知の対象の内部にある 未知の対象の面積を求める =
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.