• 検索結果がありません。

Microsoft PowerPoint - bp01.ppt

N/A
N/A
Protected

Academic year: 2021

シェア "Microsoft PowerPoint - bp01.ppt"

Copied!
50
0
0

読み込み中.... (全文を見る)

全文

(1)

University of Electro-Communications Human Interface section

基礎プログラミングおよび演習

1回

(2)

University of Electro-Communications Human Interface section

(3)

自己紹介

&研究室紹介

長谷川晶一

 高校1年のときに初めてプログラミング MS-DOSのバッチファイル ⇒ C言語、C++言語  大学サークルでバーチャルリアリティ作品を作る  会社(SONY)でデジタルテレビのソフトを作る (100人で開発)  大学に戻り、バーチャルリアリティ研究者になる バーチャルリアリティコンテスト 1996の様子 最近の状況は http://ivrc.net/ 研究室URL http://haselab.hi.mce.uec.ac.jp/

(4)
(5)

University of Electro-Communications Human Interface section

(6)

プログラミングの重要性

自律ロボットの研究はプログラム作成時間が半分以上

 ラジコンならばソフトウェアがなくても動く

 自分で判断して動くロボットでは、ソフトが主役

(7)

コンピュータ(=計算機)とは

計算=ややこしい処理をする機械

プログラムに従って動作する

階差機関(Charles Babbage 1791~1871) の復元 数表の計算と印刷 解析機関(Charles Babbage 1791~1871) を作ったもの プログラム可能なコンピュータ コンピュータの歴史

(8)

プログラムとは

コンピュータの動作を決める手順書

(9)

ロボット

PCとロボットとプログラム

PCの構成

制御マイコンの構成

CPU メモリ ビデオメモリ GPU ディスプレイ キーボード マウス USB CPU メモリ A/Dコンバータ カウンタ D/Aコンバータ パラレルI/O ポテンショメータ エンコーダ PWMモータドライバ アナログモータドライバ スイッチ/ソレノイド

(10)

CPUとメモリ

CPUの動作 1. 命令カウンタを1増やす 2. メモリの命令カウンタのアド レスから命令を読み出す 3. 命令に従って計算する メモリから読みして、計算して、 メモリに書き戻す。命令によっ ては、命令カウンタを書き換え ることもある(ジャンプ)。

メモリ

0 1 2 3 4 5 6 1 0 0 1 1 0 1 0 3FFFFFFE 3FFFFFFF 1 1 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 1 1 1 0 0 0 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1 0 0 0 1 1 1 0 1 1 0 1 1 0 0 1 1 プログラム

CPU

命令カウンタ アドレス 命令 命令レジスタ 計算ユニット

(11)

プログラムの表現

1011 0000 0110 0001 0101 0100 1111 0110 1101 0111 0001 0010 メモリ プログラム(マシン語) 命令レジスタに読みだす 値を並べたもの add r0 61 sub r1 r2 @r3 sub r1 r2 @r4 jmp r2 プログラム(アセンブリ言語) 人に分かりやすいように 命令を意味のある単語に 置き換えたもの アセンブラ

(12)

プログラムの表現

高級言語(

C言語,BASIC,Perl,Ruby…)

コンピュータが実行できる言語で、かつ、

人が読み書きしやすい,わかりやすい言語

int main(){ printf(“Hello, world!”); return 0; } 0101 0100 1111 0110 1101 0111 0001 0010 1101 1110 1001 1000 0101 0100 1111 0110 1101 1110 1001 1000 mov r0 61 sub r1 r2 @r3 sub r1 r2 @r4 jmp r2 コンパイラ アセンブラ C言語(ソースコードファイル) 実行形式 アセンブ リ言語 マシン語

(13)

なぜ

C言語

人にわかりやすいプログラムのための言語は

たくさんある

(暇な人はHello_world.htmを参照)

C言語はなんにでも使える

 実行形式を小さくできる。 → 家電製品などの組込マイコンなどでも使える。  実行速度が高速な実行形式を作ることができる。 → OS(オペレーティングシステム)の中核部に使える。  わりと、人にもわかりやすい。 → 大規模なプログラムの開発にも使える。

みんなが使っている

入門用としてはちょっとむずかしめの言語です。

(14)

その他の言語

C++

C言語を拡張、オブジェクト指向

Java

Sunが作ったC++に似た言語

どこでも動くのが特徴

FORTRAN

スパコン用 最適化が効きやすい

Ruby, PHP

Webサーバで動くサービスに多い

シェルスクリプト(

Unix),バッチファイル(Windows)

使えると

OSがちょっと便利になる

C#

Microsoftが作ったC++に似た言語

SunのJavaに対抗して作った

(15)

University of Electro-Communications Human Interface section

(16)

プログラミングの手順

ビルド:ソースコードから実行形式を作ること

int main(){ printf(“Hello, world!”); return 0; } C言語(ソースコードファイル) コンパイラ +アセンブラ (gcc) ビルド 実行形式ファイル 0101 0100 1111 0110 1101 0111 0001 0010 1101 1110 1001 1000 OS (Mac OS Xの FinderやTerminal) 1011 0000 0110 0001 0101 0100 1111 0110 1101 0111 0001 0010 メモリ プロセス 実行形式ファイルを メモリにロードして 実行 プログラム開発の手順 1.ソースコードを書く 2.ビルドする 3.実行してみる 問題があったら 問題があったら

(17)

プログラム開発の実際

Xcode

ビルドと実行とデバッグをするための開発環境

テキストエディタ コンパイラ (gcc) デバッガ(gdb)

デバッグ・デバッガとは?

デバッグ:プログラムが正しく動作するように修正すること デバッガ:修正を助けるプログラム – プログラムを1行ずつ実行して動作の様子を見ることなどができる。

(18)

開発環境の起動

画面下のメニュー

(Dock)のファインダーをクリック

(19)

開発環境の起動

Xcodeを起動する

(20)

Dockに登録

DockメニューのXcodeを右クリックして

(21)

Xcodeの設定

初めて

Xcodeを起動したときにだけ出てきます

(22)

新規プロジェクトの作成

プログラムを作る「プロジェクト」の作成

(23)

新規プロジェクト(コマンドライン)

授業では、「

Command Line Tool-Standard Tool」

(24)

新規プロジェクトに名前をつける

 英字で始まり、英数字で名前をつけます。

名前は何でもかまいませんが、ここでは課題1ということで、ex1に

します。

(25)

プロジェクトの構成

プロジェクトの構成が示されます

(26)

 

main.c の中身

main.cの中身

です。

“Hello

world!”と表示

するだけのプ

ログラムを作

C言語のソー

スコードになっ

ています。

(27)

プログラムのビルドと実行

「ビルド」で

Xcodeがgccを使ってビルドしてくれる。

「ビルドして実行」でそのまま実行できる

プログラムの出力

(28)

ターミナルからプログラムを実行

Finder」で、「ユーティリティ」フォルダの

「ターミナル」を起動

ターミナルで、

cd ex1/build/Debug

と入力

ls

と入力

./ex1

と入力

この

ex1がXcodeで作ったプログラム

実行すると

Hello, World!

と表示が出る。

(29)

C言語の基本

#include <stdio.h>

int main(int argc, const char* argv[]){

// insert code here

printf (“Hello, World!¥n”);

return 0; } 標準入出力機能 (standard I/O)を使うことを宣言 メインのプログラムの始まり メインのプログラムの終わり コメント 「Hello, World!」と表示 メインから戻る 灰色 :なくてもいいところ 青 :ないとだめだけれど、後で説明する部分 黒 :今回説明する部分

(30)

C言語の基本

#include <stdio.h>

int main(int argc, const char* argv[]){

// insert code here

printf (“Hello, World!¥n”);

return 0;

}

C言語では、この部分に書いた プログラムが

上から順に実行されます。 // insert code here

printf (“Hello, World!¥n”);

return 0; //から行末までを、コメントといいま す。 コンパイラはコメントを読みません。 他の人がプログラムを読むときに助 けなるようなことや、自分のためのメ モを書くために使います。 このコメントは、Xcodeが書いたコメ ントで、「ここにコードを挿入してくだ さい」ということです。

(31)

C言語の書き方

// insert code here

printf (”Hello, World! ¥n”);

return 0; printf という関数 (function: 機能)を 呼び出しています。 printf( ”出力したい文字列” ) ; 関数の名前 関数の引数 文の終わりをあらわす セミコロン 関数 printf は文字列を出力します。 ¥n は表示すると、改行になる文字です。 MacとPCでフォントが違うので、¥の代わりに、  =バックスラッシュ になります。

(32)

とりあえずいろいろ表示してみよう

printf(” と ”);の間にいろいろな文字列を入れて

いろいろな文字列を表示するプログラムを作って

みてください。

#include <stdio.h>

int main(int argc, const char* argv[]){

// insert code here

printf (”Hello, World!¥n”); printf (”2 Hello, World!”); printf (”3 Hello, World!”); printf (”3 Hello, World!”);

printf (” ¥n ¥n ¥n4 Hello, World!”);

return 0;

}

上から順に 実行されます

(33)

ビルドがうまくいかない?

いろいろ書いていると、ビルドがうまくいかないこ

とが起こりえます。たとえば、次の例では、

なぞの

machigai という文字列があります。

コンパイラ(

gcc)がその旨を伝えるためにエラー

メッセージを出します。(

xCodeが表示します)

#include <stdio.h>

int main(int argc, const char* argv[]){

// insert code here machigai

printf (”Hello, World!¥n”);

return 0;

(34)

ビルド時のエラー

「プロジェクト」のエラーと警告を見るか、

main.c の 赤丸×印にマウスをあわせるとメッセー

(35)

エラーメッセージを読もう

先ほどの例では、

error: `machigai‘ undeclared (first use in this function)

エラー:

machigai は宣言されていません(この関数の中

では、ここで初めて使われました)

と出ています。

C言語には、まだお話していない文法が

たくさんあるので、意味が取りにくいと思います。ですが、

コンパイラ(

gcc)が machigai をどう解釈してよいかわ

からず、なにか言っている。

この行の

machigai のあたりに何か問題があるようだ

ということは判ると思います。メッセージはいろいろあり

ますが、必ずよく読んで、意味を考えてください。

(36)

エラーメッセージの例

error:parse error before ‘}’ token

エラー:語

‘}’ の前で構文解析エラーが起きました

}の前に、何かが足りないために、コンパイラ(gcc)がC言

語の解析(解釈)ができなくなったと言っています。

この場合前の文の最後に足りない文字がありますね。

#include <stdio.h> int main(){

printf (”Hello, World!¥n”); printf (”Hello, World!¥n”)

(37)

エラーメッセージの例

error: missing terminating “ character

エラー:終わりの文字 ” が必要です。

error:parse error before ‘}’ token

エラー:語 ‘}’ の前で構文解析エラーが起きました  文字列の終わりの”がないと言っています。  コンパイラは、 ); も表示する文字列(Hello World! ¥n)の続きだと思ったようで す。このため構文解析エラーも起きています。  このように、ひとつの原因で複数エラーが出ることもあります。 エラーメッセージは最初の方から見て行きましょう。  ひとつ直すと全部直ることもあります。こまめにビルドしましょう。 #include <stdio.h> int main(){

printf (”Hello, World!¥n”); printf (”Hello, World!¥n);

(38)

エラーメッセージの意味

そのほかのエラーメッセージについては、

C科大久保先生のページ

http://www.tnlab.ice.uec.ac.jp/~sokubo/class/language/ref

/error.html

を見てください

MacOSのgccは日本語のエラーメッセージを出し

てくれません。

Windowsの場合、Visual C++ / Borland C++ /

cygwinのgccで日本語のメッセージが出ます。

(39)

関数をもうひとつ

上から順に実行されることを確かめるために、も

1つだけ関数を覚えましょう。

#include <stdio.h>

int main(){

printf (”Plase hit ENTER key¥n”); getchar(); printf (”Thankyou¥n”); } 1文字入力 [ENTER]キーが押される まで、キーボードからの文 字入力を待ちます。 [ENTER]が押されたら、 最初に入力されたキーを 読み出します。

(40)

順番に実行される様子を見る

いろいろ変えてみて様子を見てください。

#include <stdio.h>

int main(){

printf (”Plase hit ENTER key 3 times.¥n”); getchar();

getchar(); getchar();

printf (”Thankyou¥n”);

printf (”Plase hit ENTER key 2 times.¥n”); getchar();

getchar();

printf (”Thankyou¥n”);

(41)

プログラムのデバッグ

ビルドがうまくいっても、プログラムが思ったよう

に動作しないこともあります。

デバッグ・デバッガとは?

デバッグ:プログラムが正しく動作するように修正する

こと

デバッガ:修正を助けるプログラム

プログラムを1行ずつ実行 動作の様子をゆっくり見ることなどができる。

(42)

デバッグの実際

(43)

デバッグ

ブレークポイントを設定

ブレークポイントを設定してデバッグを始めると、

プログラムがブレークポイントのところで止まる。

int main(…. の行にブレークポイントを 設定して、デバッグを開始 してみてください。

(44)

デバッグ

– ステップ実行

ブレークポイントで止まった後は、

ステップオーバーで

1行ずつ実行して様子を見る

ことができます。

参考

 mainが終わっても しばらくプログラムは続きま す。C言語のソースがない ので、アセンブリ言語やマ シン語が表示されます。驚 かないで。 ステップインを選ぶと関数 の中にどんどん入っていき ます。printfの中身が全部 わかるためには結構勉強 が必要です。

(45)

課題と提出

課題提出

Webサイト

http://haselab.hi.mce.uec.ac.jp/class/basic/

ここをクリックして指示に従ってWebのアカウントを作る ・パスワードを設定させられます ・一度ログアウトしてからログインしなおすよう指示されます

(46)

ログイン

ここに設定したユーザ名と パスワードをを入力

(47)

ユーザー情報の編集

ログインしたらユーザ情報を書き入れて下さい

メールアドレスを間違えないように

(48)

課題の提出

資料課題一覧に毎回の授業の資料と課題を用

意します。

まずここをクリック 授業の説明と授業で使用した資料へのリンク 課題の説明と提出 課題の説明と提出

(49)

成績について

出席、課題、試験で成績をつけます。

出席

 課題提出Webサイトのログイン時に出席を記録します。  授業中に教室から必ず一度ログインしてください。  教室外からでもログインできますが、どこからログインしたか記 録していますのでご注意を。

課題

 次の授業までに提出してください。間に合わない場合はそれ 以降でも出してください。  他の人のプログラムの丸写しはだめです。必ず自分で作ってく ださい。(簡単にチェックできます)

試験

 期末試験をする予定です。

(50)

プログラミング上級者の方へ

 すでに、C言語でプログラムを作ったことがあり、ポインタも構造体 も使ったことがあって、授業や演習の内容が退屈な人もいるかも しれません。そのような方は、  困っている人を助けてあげてください。 作ってあげるのではなくて、教えてあげることが勉強になります。人のプロ グラミングを後ろからみて、邪魔せず手伝えれば一流です。  課題は、一応出してください。課題より高度なプログラムを出していただい てもかまいません。  それでも退屈な方には、OpenGLを勉強することをお勧めします。 http://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html を見て、自習してください。 Xcodeの場合、プロジェクトにGLUT Frameworkを追加し、ソース に#include <GLUT/glut.h>と書けばGLUTが使えます。

参照

関連したドキュメント

(注 3):必修上位 17 単位の成績上位から数えて 17 単位目が 2 単位の授業科目だった場合は,1 単位と

この設定では、管理サーバ(Control Center)自体に更新された Windows 用の Dr.Web Agent のコンポ ーネントがダウンロードされませんので、当該 Control Center で管理される全ての Dr.Web

Classroom 上で PowerPoint をプレビューした状態だと音声は再生されません。一旦、自分の PC

そのため、ここに原子力安全改革プランを取りまとめたが、現在、各発電所で実施中

・私は小さい頃は人見知りの激しい子どもでした。しかし、当時の担任の先生が遊びを

下山にはいり、ABさんの名案でロープでつ ながれた子供たちには笑ってしまいました。つ

えんがわ市は、これまで一度も休 まず実施 してきたが、令和元年 11月 は台風 19号 の影響で初 めて中止 となつた。また、令和 2年

したがいまして、私の主たる仕事させていただいているときのお客様というのは、ここの足