第2回ネットワークプログラミング 中村 修.

Slides:



Advertisements
Similar presentations
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
Advertisements

基礎プログラミングおよび演習 第9回
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
第13回 プログラミングⅡ 第13回
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
コンピュータープログラミング (C言語)(6) 1.条件分岐2(switch文、復習) 2.繰り返し処理(for文、while文)
第6章 2重ループ&配列 2重ループと配列をやります.
第7回 条件による繰り返し.
情報基礎及び演習 プログラミング基礎① 電気・佐藤亮一.
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
プログラミング 2 ファイル処理.
プログラミング論 I 2008年5月22日 講義概要 C言語復習
繰り返し計算 while文, for文.
Cプログラミング演習.
第10回関数 Ⅱ (ローカル変数とスコープ).
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング演習I 2003年6月25日(第10回) 木村巌.
プログラミング演習I 2003年5月7日(第4回) 木村巌.
知能情報工学演習I 第9回( C言語第3回) 課題の回答
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
ネットワークプログラミング 第3回「C言語の基礎~コマンドライン引数・構造体・ポインタ」
第7回 条件による繰り返し.
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
知能情報工学演習I 第8回( C言語第2回) 課題の回答
プログラミング基礎a 第7回 C言語によるプログラミング入門 ファイル入出力
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
岩村雅一 知能情報工学演習I 第12回(C言語第6回) 岩村雅一
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
C言語 はじめに 2016年 吉田研究室.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
IF文 START もしも宝くじが当たったら 就職活動する 就職活動しない YES END NO.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
情報処理Ⅱ 第2回 2005年10月14日(金).
C#プログラミング実習 第2回.
地域情報学 C言語プログラミング 第4回 while文、do~while文、switch文、 2次元配列、ポインタ 2017年11月10日
高度プログラミング演習 (11).
C言語講座 制御(選択) 2006年 計算技術研究会.
精密工学科プログラミング基礎 第7回資料 (11/27実施)
標準入出力、変数、演算子、エスケープシーケンス
cp-3. 計算 (C プログラミング演習,Visual Studio 2019 対応)
プログラミング基礎a 第7回 C言語によるプログラミング入門 ファイル入出力
情報工学科 3年生対象 専門科目 システムプログラミング 第3回 makeコマンド 動的リンクライブラリ 情報工学科 篠埜 功.
岩村雅一 知能情報工学演習I 第12回(後半第6回) 岩村雅一
情報工学科 3年生対象 専門科目 システムプログラミング 第3回 makeコマンド 動的リンクライブラリ 情報工学科 篠埜 功.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
モバイルプログラミング第2回 C言語の基礎 (1).
第3回簡単なデータの入出力.
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
情報処理Ⅱ 2005年11月25日(金).
コンピュータープログラミング (C言語)(10) 1.ファイル入出力
プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功.
printf・scanf・変数・四則演算
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
第2章 数値の入力と変数 scanfと変数をやります.
C言語講座 四則演算  if ,  switch 制御文.
分岐(If-Else, Else if, Switch) ループ(While, For, Do-while)
第5回 配列.
知能情報工学演習I 第10回( C言語第4回) 課題の回答
プログラミング演習I 補講用課題
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
第1章 文字の表示と計算 printfと演算子をやります 第1章 文字の表示と計算.
第1章 文字の表示と計算 printfと演算子をやります.
= 55 課題6-1 #define _CRT_SECURE_NO_WARNINGS
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
Presentation transcript:

第2回ネットワークプログラミング 中村 修

今日のお題 代入文 C言語の予約語 データの型 関数と戻り値(返り値) 基本入出力関数 ソースファイルの分割 Makefile if,for,while,switch,break,continue データの型 関数と戻り値(返り値) 基本入出力関数 ソースファイルの分割 Makefile

データ型 整数 浮動小数点 配列 int, char, short, long double, float int a[10]; 次のページに詳細あり

型の大きさを出力してみよう #include <stdio.h> int main() { printf("size of char:\t%d bytes\n", sizeof(char)); printf("size of short:\t%d bytes\n", sizeof(short)); printf("size of int:\t%d bytes\n", sizeof(int)); printf("size of long:\t%d bytes\n", sizeof(long)); printf("size of float:\t%d bytes\n", sizeof(float)); printf("size of double:\t%d bytes\n", sizeof(double)); }

型の大きさ size of char: 1 bytes size of short: 2 bytes size of int: 4 bytes size of long: 4 bytes size of float: 4 bytes size of double: 8 bytes

代入文 変数=式 例: x = y+z-3*a;

ifを使った条件文 if(式){ 処理1; … } else{ 処理2; 例: if( x == 1){ y = 3; z = 2;

forを使った条件文 for( 式1; 式2; 式3 ){ 処理; … } 例: for( x = 0; x < 10; x = x +1 ){ printf(“%d\n”, x);

whileを使った条件文 while(式){ 処理; … } 例: x = 0; while( x < 10 ){ printf(“%d\n”,x); x = x + 1;

switch文 複雑な if 文を簡素化する際に使用 switch(式){ case 定数: 処理;…; break; … default: 処理;…; break; } int monthday( int month ){ switch(month){ case 1: return 31; case 2: return 28; case 12: return 31;

break文とcontinue文 break continue for( i=0; i<100; i++ ){ 処理1; ループを抜ける continue 残りのループをスキップして、次のループを開始 for( i=0; i<100; i++ ){ 処理1; if ( i>=10 ) continue; 処理2; if ( i==90 ) break; 処理3; }

練習問題1 forの練習 1から10までの和を出そう

#include <stdio.h> int main() { int sum = 0; int i; for(i = 1; i <= 10; i++){ sum += i; } printf("sum = %d\n", sum);

入出力関数 printf 標準出力へ変数等を整形して出力 fprintf 出力先が指定できるprintf scanf 標準入力から書式に従い読み込み fscanf 入力先を指定できるscanf gets 標準入力から1行読み込み fgets 入力先を指定して1行読み込み read 入力先とバイト数を指定して読み込み write 出力先とバイト数を指定して書き込み getc 標準入力から1文字読み込み putc

練習問題2 for,fgets(scanf)の練習 1からnまでの和を出力しよう

#include <stdio.h> int main() { char inputstr[8]; int sum = 0; int max; int i; printf("input value at next line\n"); fgets(inputstr, 8, stdin); max = atoi(inputstr); for(i = 1; i <= max; i++){ sum += i; } printf("sum = %d\n", sum);

return文 return 式; #include <stdio.h> int sub(int a) { return a*b; } int main() intb = 10; printf("%d\n", sub(5)); return 0;

プログラムが大きくなった時の問題点 コンパイル時間がかかる 複数人での開発が困難 ⇒ファイルの分割と分割コンパイルが必要(extern宣言が必要)   変数のスコープに注意 <ファイル1> /* source1.c */ extern b; int sub(int a) { return a*b; } <ファイル2> /* source2.c */ #include <stdio.h> int b; int main() { b = 10; printf("%d\n", sub(5)); return 0; }

コンパイルのおさらい 単一ファイルの場合 %gcc -o program source1.c 複数ファイルの場合 %gcc -o program source1.c source2.c もしくは %gcc -c source1.c %gcc -c source2.c %gcc -o program source1.o source2.o

ライブラリ 関数群のこと プログラムの先頭で、#include <stdio.h>のように使用 関数に必要なライブラリはmanを参照 特殊なライブラリを使う場合はコンパイルオプション(-lライブラリ名)で指定 例)%gcc program.c -lpcap

Makefileの活用 再コンパイルの煩雑さを解消 基本文法 ターゲット:依存するファイル <tab>コマンド 例: main : source1.o source2.o gcc -o program source1.o source2.o source1.o : source1.c gcc -c source1.c source2.o : source2.c gcc -c source2.c

Makefileの簡素化 .cから.oファイルの生成ルール all : source1.o source2.o gcc -o program source1.o source2.o コンパイルオプションの変数化 <command> %gcc -Wall -g -c source1.c <Makefile> CFLAGS = -Wall gcc ${CFLAGS} -c source1.c

ヘッダファイルの活用 ファイル分割時に共通部分のくくりだし .hファイルとして作成 各ファイルで、#include “header.h”のように宣言

Makefile main : source1.o source2.o gcc -o program source1.o source2.o source1.o : source1.c gcc -c source1.c source2.o : source2.c gcc -c source2.c

練習問題3 source1.c source2.cを gcc –o でコンパイルしよう。 Makefileを書いてみよう。 /home/kaizaki/osamuNP/2/source1.c source2.c

講義終了 休憩でーす

実習 2つの整数値を入力する 最小公倍数、最大公約数を出力 できたら、TA/SAを呼びつける 2つ以上のファイルに分割する Makefileをもちいる できたら、TA/SAを呼びつける 出力結果、sourceを確認 Makefileのあるディレクトリをsoiで提出 つぎのページにヒント

実習ヒント 最大公約数を先に求める ユークリッドの互除法 最小公倍数 n * m / (最大公倍数)

ユークリッドの互助法とは?(1) 最大公約数を求めるアルゴリズム 原理:2つの整数m,n(m>n)の最大公約数はm-nとnの最大公約数を求める方法に置き換えることができる →mとnの問題をm-nとnの小さな数の問題に置き換える m=nになった時のm(nでも良い)が最大公約数 つぎのページに続く

ユークリッドの互助法とは?(2) 1.mとnが等しくない間以下を繰り返す 3.m(nでもよい)が求める最大公約数である 2.m>n なら m=m-n そうでないなら n=n-m 3.m(nでもよい)が求める最大公約数である 例:24と18の最大公約数を求める問題 1. 24-18=6:18と6の問題に置き換わる 2. 18-6=12:12と6の問題に置き換わる 3. 12-6=6: 6=6なので6が答えになる

実習ヒント:機能及びファイル分割の例 mainの他にeuclid互助法を行う int euclid(int m, int n) というeuclidという名前の関数を作る Main関数とeuclid関数をそれぞれmain.c euclid.cに書く Makefileで両方を一緒にコンパイルするように書く