授業/C言語基礎/プログラムの作成と実行 のバックアップの現在との差分(No.3)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
*プログラム作成から実行までの流れ [#r2942ec5]
#freeze
この授業では、Cプログラムのコンパイルと実行はLinuxで行います。

でも、Cプログラムを書くのはLinuxでもWindowsでも構いません。
Cプログラムを書くのはLinuxでもWindowsでも構いませんが、家でも勉強できるように、自分のパソコンのWindowsでもプログラムを作成できるようにしておきましょう。

家でも勉強できるように、自分のパソコンのWindowsでプログラムを作成できるようにしておくことをおすすめします。
この説明はWindows 10を対象にしています。


**総合情報センター実習室のLinuxで作成して実行する [#x122c273]
*Windowsをプログラム開発用に設定する [#y3836dfa]

プログラムの作成には、''Vim'', ''Emacs'', ''Gedit''のいずれかを使用します。
C言語の構文を理解して色をつけてくれるものがいいでしょう。
プログラミングするときは、ファイル名の拡張子が大切です。
ところが、Windowsの初期設定では、ファイル名の拡張子は表示されないようになっています。
そこで、Windowsでファイル名の拡張子が表示されるように設定します。

プログラムを作成したら、ターミナル上で''gcc''コマンドを使用してプログラムをコンパイルし、実行します。
まず、Windowsのデスクトップ画面でフォルダーを開きます。

次に、「表示」メニューを開き、「ファイル名拡張し」のチェックボックスにチェックを入れます。
#ref(./Windows10.png,nolink,50%)

**総合情報センター実習室のWindowsで作成してLinuxで実行する [#ud879c5f]
これで、ファイル名の拡張子が表示されるようになりました。

プログラムの作成には、''TeraPad''というエディタを使用します。
**演習1 [#x64cfb5e]
ファイル名の拡張子が表示されるようにWindowsを設定せよ。

プログラムを作成したら、''WinSCP''というファイル転送プログラムを使用して、作成したプログラムをLinuxに転送します。

プログラムを転送したら、''PuTTY''というSSHクライアントを使用して、Linuxサーバー ''luna.isc.chubu.ac.jp'' にログインします。

ログインしたら、PuTTYを通したLinuxの上で''gcc''コマンドを使ってプログラムをコンパイルし、実行します。
*開発用ソフトウェアのダウンロード [#y186713e]

**自分のパソコンのWindowsで作成して総合情報センターのLinuxで実行する [#ieaf7453]
この授業では次の3つのソフトウェアを使用します。
-TeraPad(ファイル編集)
-WinSCP(ファイル転送)
-PuTTY(リモート・ログイン)

総合情報センターのWindowsと同じソフトを自分のパソコンのWindowsにもインストールします。

***TeraPad [#j950bd3c]
TeraPadは以下のページからダウンロードできます。
**TeraPad [#j950bd3c]
TeraPadは、エディターという種類のアプリケーションで、プログラムを作成するために使います。

TeraPadは、以下のページからダウンロードできます。
-[[TeraPad:http://www5f.biglobe.ne.jp/~t-susumu/library/tpad.html]]

インストーラー付きのものをダウンロードし、ダウンロードしたファイルをダブル・クリックしてインストールします。
インストーラー付き''でない''ものをダウンロードし、ダウンロードしたファイルを右クリックして「全て展開...」を選択し、圧縮されているファイルを展開します。

展開したフォルダーを、授業用のフォルダー(例えば「C言語基礎」)に移動させます。

***WinSCP [#y4e9f9ce]
フォルダー名のtpad109を''TeraPad''に変更しておくとわかりやすいです。


**WinSCP [#y4e9f9ce]
WinSCPは、FTPクライアントという種類のアプリケーションで、Windows PCからLinuxサーバーへ(またはLinuxサーバーからWindows PCへ)ファイルを転送するために使います。

WinSCPは以下のページからダウンロードできます。
-[[WinSCP Downloads:https://winscp.net/eng/download.php]]

''Installation package''をダウンロードし、ダウンロードしたファイルをだぶる・クリックしてインストールします。
言語は「日本語」を選択します。
''Portable executables''をダウンロードし、ダウンロードしたファイルを右クリックして「全て展開...」を選択し、圧縮されているファイルを展開します。

展開したフォルダーを、授業用のフォルダーに移動させます。

***PuTTY [#mf47f659]
PuTTYを日本語化したICE IV版のPuTTY PRIVATE PATCHESが以下のページからダウンロードできます。
フォルダー名のWinSCP-5.11.1-Portableを''WinSCP''に変更しておくとわかりやすいです。

総合情報センターのWindowsにはWinSCPがインストールされているので、インストールする必要はありません。


**PuTTY [#mf47f659]
PuTTYは、SSHクライアントという種類のアプリケーションで、WindowsからLinuxサーバーにログインするために使います。

PuTTYを日本語化したICE IV版のPuTTY PRIVATE PATCHESが、以下のページからダウンロードできます。
-[[ICE IV + PuTTY:http://ice.hotmint.com/putty/]]

一番新しい日付のものをダウンロードし、ダウンロードしたファイルを右クリックして「全て展開...」を選択し、圧縮されているファイルを展開します。

C:¥Program Filesフォルダーの中に、''PuTTY''という名前のフォルダーを新規に作成します。
授業用のフォルダーの中に、''PuTTY''という名前のフォルダーを新規に作成します。

64ビット版Windows(C:¥Program Files(x86)というフォルダーが存在するWindows)の場合、展開したフォルダーの中にある''x64''フォルダーの中にある''putty.exe''を作成したPuTTYフォルダーの中にコピーします。
作成したPuTTYフォルダーの中に、''ini''という名前のフォルダーを新規に作成します。

32ビット版Windows(C:¥Program Files(x86)というフォルダーが存在しないWindows) の場合、展開したフォルダーの中にある''putty.exe''を作成したPuTTYフォルダーの中にコピーします。
展開したフォルダーの中の''ini''フォルダーの中にある''putty.ini''を、PuTTYフォルダーの中に作成したiniフォルダーの中にコピーします。

次に、展開したフォルダーの中にある''ini''フォルダーの中にある''putty.ini''を同じPuTTYフォルダーの中にコピーします。
64ビット版Windows(C:¥Program Files(x86)というフォルダーが存在するWindows)の場合、展開したフォルダーの中にある''x64''フォルダーの中にある''putty.exe''をPuTTYフォルダーの中にコピーします。

32ビット版Windows(C:¥Program Files(x86)というフォルダーが存在しないWindows) の場合、展開したフォルダーの中にある''putty.exe''をPuTTYフォルダーの中にコピーします。

最後に、展開したフォルダーの中にある''ja-JP''フォルダーの中にある''putty.lng''を同じPuTTYフォルダーの中にコピーします。
#ref(./PuTTY.png,nolink,75%)


**演習2 [#scc39bf8]
自分のPCにTeraPad, WinSCP, PuTTYをダウンロードせよ。



*TeraPadをプログラミング用に設定する [#o9244ca2]
TeraPadを起動し、「表示」メニューの「オプション」を選択し、表示されたウィンドウの「表示」タブを選択、「マーク」の中にある「TAB」「半角空白」「全角空白」にチェックを入れて(「改行」と「EOF」はチェックを入れたままで)「OK」ボタンをクリックします。

プログラミングを始めたばかりのときによくある間違いの一つに、「日本語変換した空白(全角空白)を入力してしまったが、空白文字が見えないために、何が間違っているのかわからない」というものがあります。
そこで、TeraPadで見えない文字を表示するように設定します。

TeraPadを起動し、「表示」メニューの「オプション」を選択し、表示されたウィンドウの「表示」タブを選択、「マーク」の中にある「''TAB''」「''半角空白''」「''全角空白''」にチェックを入れて(「改行」と「EOF」はチェックを入れたままで)「OK」ボタンをクリックします。
(「EOF」というのは「End Of File」のことで、ファイルの終わりを表す文字です。)
#ref(./TeraPad_options.png,nolink,75%)

これで、TeraPadで見えない文字が表示されるようになりました。


**演習3 [#r957144c]
TeraPadでTAB, 半角空白、全角空白が表示されるように設定せよ。




*TeraPadでCプログラムを作成する [#g0438979]

TeraPadを起動した状態で、「表示」メニューの「編集モード」から「C/C++」を選択してから、次のように入力します。
まずはじめに、TeraPadを起動した状態で、「表示」メニューの「編集モード」から「''C/C++''」を選択します。
#ref(./TeraPad_mode.png,nolin,75%)

それから、次のように入力します。
#geshi(c){{
#include <stdio.h>

int main(void) {
  printf("Hello World!\n");
  return 0;
}
}}

日本語版Windowsでは、バックスラッシュ ''\'' の代わりに円記号 ''&yen;'' を使います。

プログラムを入力したら、「ファイル」メニューの「文字/改行コード指定保存」を選択し、文字コードを「''EUC''」、改行コードを「''LF''」にして「OK」ボタンをクリックします。
プログラムを入力したら、「ファイル」メニューの「文字/改行コード指定保存」を選択します。
#ref(./TeraPad_save.png,nolink,75%)

文字/改行コード指定保存画面が表示されたら、文字コードを「''EUC''」、改行コードを「''LF''」にして「OK」ボタンをクリックします。
#ref(./TeraPad_codes.png,nolink,75%)

Cプログラムのファイルを保存するときは、拡張子を''.c''にします。
ここでは、''hello.c''として保存します。


*WinSCPでCプログラムをLinuxに転送する [#f6d263b5]
**演習4 [#x01de6bb]
上のプログラムをTeraPadで作成し、hello.c という名前で保存せよ。

WinSCPを起動し、転送プロトコルは「SFTP」のまま、ホスト名に「''luna.isc.chubu.ac.jp''」を入力、ポート番号は「22」のまま、ユーザー名とパスワードはLinuxアカウントとして登録したものを入力し、「保存」ボタンをクリックし、そのまま「OK」ボタンを押して保存します。
(パスワードの保存はおすすめしません。)

左のリストから保存したセッションを選択し、「ログイン」ボタンをクリックします。

初めてログインするときは、不明なサーバーとして警告されますが、「はい」ボタンをクリックしてこのサーバーのホストキーをキャッシュします。

*CプログラムとTeraPadを関連付ける [#efb5f2a9]

Windowsのアプリケーションはファイルの拡張子と関連付けられているので、拡張子が.cのファイルをダブル・クリックしたときにTeraPadが起動するようにします。
(この作業は一回やればいいだけで、毎回やる必要はありません。)

hello.cファイルのアイコンをダブル・クリックします。
「このファイルを開く方法を選んでください」と出てくるので、「その他のアプリ」から「このPCで別のアプリを探す」を選択し、TeraPad.exeを選択します。
#ref(./open.png,nolink,75%)

すると、hello.cファイルのアイコンがTeraPadのアイコンと同じになり、Cプログラム(名前の最後が''.c''のファイル)のファイルを開くと次回から自動的にTeraPadが起動します。


**演習5 [#me839d7e]
演習4で作成したhello.cとTeraPadを関連付け、hello.cをダブル・クリックしたらTeraPadが起動することを確認せよ。





*WinSCPでCプログラムをLinuxサーバーに転送する [#f6d263b5]

WinSCPを起動し、File protocol(転送プロトコル)は「SFTP」のまま、Host nme(ホスト名)に「''luna7.isc.chubu.ac.jp''」を入力、Port number(ポート番号)は「22」のまま、User name(ユーザー名)とPassword(パスワード)にLinuxアカウントとして登録したものを入力し、Save(保存)ボタンをクリックし、そのまま「OK」ボタンを押して保存します。
#ref(./WinSCP_login.png,nolink,75%)

左のリストから保存したセッションを選択し、Login(ログイン)ボタンをクリックします。

初めてログインするときは、unknown server(不明なサーバー)として警告されますが、Yes(はい)ボタンをクリックしてこのサーバーのホストキーをキャッシュします。
ホストキーをキャッシュしておけば、次からは警告されません。
#ref(./WinSCP_warning.png,nolink,75%)

ログインできると、左側にWindowsのフォルダーが、右側にLinuxサーバーのディレクトリーが表示されます。
ログインできると、左側に自分のPCのフォルダーが、右側にLinuxサーバーのフォルダー(ディレクトリー)が表示されます。
#ref(./WinSCP_success.png,nolink,75%)

Windowsに保存したCプログラムを左側から右側にドラッグ・アンド・ドロップすると、ファイルが転送されます。
アイコンを左側から右側にドラッグ・アンド・ドロップすると、自分のPCからLinuxサーバーへファイルが転送されます。
Linuxサーバーから自分のPCにファイルを転送することもできます。


*PuTTYでLinuxにログインしてCプログラムをコンパイル・実行する [#p43a39da]
**演習6 [#maec12ca]
hello.cを総合情報センターのLinuxサーバーに転送せよ。

PuTTYを起動し、左のカテゴリーから「ウィンドウ」の「変換」を選び、Remote character setのリストから「''EUC-JP''」を選びます。
次に、左のカテゴリーから「セッション」の「ログ」を選び、ホスト名に「''luna.isc.chubu.ac.jp''」を入力、ポート番号は「22」のまま、接続タイプは「SSH」のままにして、セッション一覧から「''Default Settings''」を選択して「保存」ボタンをクリックします。



*PuTTYでLinuxサーバーにログインする [#p43a39da]

PuTTYを起動し、左のカテゴリーから「ウィンドウ」の「変換」を選び、Remote character setのリストから「''UTF-8''」を選びます。
#ref(./PuTTY_convert.png,nolink,75%)

次に、左のカテゴリーから「セッション」を選び、ホスト名に「''luna7.isc.chubu.ac.jp''」を入力、ポート番号は「22」のまま、接続タイプは「SSH」のままにして、セッション一覧から「''Default Settings''」を選択して「保存」ボタンをクリックします。
#ref(./PuTTY_session.png,nolink,75%)

初めてログインするときは、セキュリティ警告が出ますが、「はい」ボタンをクリックしてPuTTYのキャッシュに鍵を追加します。
#ref(./PuTTY_warning.png,nolink,75%)

ターミナルのウィンドウが表示されたら、ユーザー名とパスワードを入力してログインします。
#ref(./PuTTY_login.png,nolink,100%)

ログインしたら、''cd''コマンドを使ってCプログラムを保存したディレクトリーに移動し、''ls''コマンドを使ってCプログラムのファイルがあることを確認します。

たとえば、basic_cというディレクトリーにプログラムを保存しているときは次のようにします。
(luna%はコマンド・プロンプトを表していて、自分では入力しません。)

**演習7 [#sd292d3a]
PuTTYを使って総合情報センターのLinuxサーバーにログインせよ。







*Cプログラムをコンパイルして実行する [#rc4f329a]

Linuxにログインしたら、''cd''コマンドを使ってCプログラムを保存したディレクトリーに移動し、''ls''コマンドを使ってCプログラムのファイルがあることを確認します。

たとえば、basic_cというディレクトリーの中の01というディレクトリーにプログラムを転送したときは次のようにします。
(ここで、「luna7%」はコマンド・プロンプトを表していて、自分では入力しません。)
#geshi(sh){{
luna% cd basic_c
luna% ls
luna7% cd basic_c/01
luna7% ls
hello.c
}}

Cプログラムがあることを確認したら、''cat''コマンドを使ってCプログラムの内容を確認します。
現在の作業ディレクトリーを確認するときは''pwd'''コマンドを使います。
#geshi(sh){{
luna% cat hello.c
luna7% pwd
/usr2/gep00000/ep00000/basic_c/01
}}
(実際には、ep00000のところは自分のユーザー名になります。)

現在の作業ディレクトリーに転送したCプログラムがあることを確認したら、''cat''コマンドを使ってCプログラムの内容を確認します。
#geshi(sh){{
luna7% cat hello.c
#include <stdio.h>

int main(void) {
  printf("Hello World!\n");
  return 0;
}
}}


Cプログラムが転送したものと同じであることを確認したら、''gcc''コマンドを使ってCプログラムをコンパイルします。
#geshi(sh){{
luna% gcc hello.c
luna7% gcc hello.c
}}

プログラムに間違いがなければ、コンパイルが成功しても何も表示されません。
プログラムに間違いがあると、エラーが表示されます。

プログラムに間違いがあるときは、WindowsのTeraPadで修正し、WinSCPで転送し、コンパイルをやり直します。
プログラムに間違いがあるときは、WindowsのTeraPadで修正して保存し、修正したファイルをWinSCPでLinuxへ転送し、コンパイルをやり直します。

コンパイルが成功したら、''ls''コマンドを使って''a.out''というファイルができていることを確認します。
#geshi(sh){{
luna% ls
luna7% ls
a.out    hello.c
}}

最後に、コンパイルしてできた実行ファイルを実行します。
#geshi(sh){{
luna% a.out
luna7% a.out
Hello World!
}}

これでC言語を勉強する準備は完了です!


**演習8 [#g93e305c]
hello.cをコンパイルして実行せよ。

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS