7.3 math and utility
数学関数 数学的な計算が必要な場合に使用する命令セットです。引数と返りは全てdouble型になります。 主なもの: sin(x):角度x(ラジアン)のsinの値を返す cos(x):角度x(ラジアン)のcosの値を返す tan(x):角度x(ラジアン)のtanの値を返す pow(x,y):xのy乗の値を返す exp(x):指数関数eのx乗の値を返す log(x):xの自然対数の値を返す log10(x):xの常用対数の値を返す sqrt(x):xの平方根の値を返す ceil(x):小数第一位を切り捨てした値を返す floor(x):小数第一位を切り上げした値を返す round(x):小数第一位を四捨五入した値を返す サンプル: #include <stdio.h> #include <math.h> //math.hのインクルードを忘れずに int main(int argc, const char * argv[]) { // insert code here… double value = 0.5; printf(“sin : %f\n”, sin(value)); printf(“sqrt : %f\n”, sqrt(value)); printf(“ceil : %d\n”, (int)ceil(value)); printf(“floor : %d\n”, (int)floor(value)); return 0; } 文字列を数値型に変換する関数 文字列を数値型にするときに使われる関数がatoi関数(整数型に変換する場合)とatof関数(小数型に変換する場合)があります。 サンプル: […]
C# exercises (4) Slot machine
Visual Studio community 2015 アカウントについて (学内専用) スロットマシンの作成 Slot machine スロットのプログラムに必要な3つの部品 数字を表示させるための部品 → ラベル (Labelコントロール) スロットを開始するための部品 → ボタン (Buttonコントロール) 数字の書き換えを短い間隔で行うため、その間隔を計るための部品 → タイマー (Timerコントロール) これらの部品はツールボックスに入っている デザイン 部品の貼り付け 文字の大きさの変更 フォントの大きさを72ポイント程度にする プログラム コントロールとプログラムの関係 コントロールに対して何かをすると、イベントが発生する イベントに対応したプログラムを作成する フォーム上のボタン(button1)をダブルクリックすると、ボタンをクリックしたときに発生するイベントに対応したプログラム(button1_Click)が自動的に生成される Timerコントロール 一定の間隔で処理をさせたいときに使う timer1:Timerコントロールの変数名 Start()はタイマーを開始する命令 Intervalに設定している間隔で、定期的にtimer1_Tick()を発生させる Intervalプロパティに設定する時間はミリ秒単位 Intervalプロパティに100を設定すると、100ミリ秒(0.1秒)ごとにtimer1_Tick()が呼ばれる 乱数を生成するイベントのプログラムの作成 0以上10未満の乱数を生成する Timerコントロールをダブルクリック –フォームの下に貼り付いているTimerコントロールをダブルクリックすると、自動的にtimer1_Tickというイベントのプログラムが生成される –その中に、以下のプログラムを書く –Next()命令により、0以上10未満の乱数を生成する –それをLabelコントロールのTextプロパティに代入する using System; using System.Collections.Generic; using System.ComponentModel; using […]
C# exercises (3) Common Control
ディジタル時計の作成 Create Digital Clock デザイン ツールボックスの中で、 –コモンコントロール「TextBox」 –コンポーネント「Timer」 Formにドラッグ&ドロップする Timerのプロパティ(値)を変更 timer1のプロパティ Enabled⇒ True (Enabled:タイマーを実行する) Interval⇒ 1000 (Interval:タイマーの実行間隔, 1000⇒1000ms(1秒)) TextBoxのプロパティ Font :36ポイント –文字のサイズ⇒好きなサイズに ForeColor :緑 –文字の色⇒好きな色に BackColor :ブラック –TextBoxの背景色⇒好きな色に TextAlign :Center –文字を表示する場所⇒真ん中(Center) Text: 00:00:00 –表示する文字列⇒最初は00時00分00秒をあらわす ディジタル時計の完成 timer1をダブルクリックすると、timer処理に関する関数(メソッド)が自動生成される using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; […]
1.3 入力
puts関数:表示を行う関数 書式化の必要がなく、改行もしたいの場合 puts(“ABC”); printf(“ABC\n”); scanf関数:読込みを行う関数 scanf関数は、処理の途中でキーボードから文字の入力を求め、入力されたものを処理に利用するというものです。 実例: #include <stdio.h> int main(int argc, const char * argv[]) { // insert code here… int input; printf(“数字を入力して下さい。\n”); scanf(“%d”, &input); printf(“入力された数字は、%dです。\n”, input); getch(); return 0; } 実行例: 数字を入力して下さい。 3 入力された数字は、3です。 テキストが出力され キーボードからの入力待ちの状態。入力してエンターキーを押しますと処理が再開 書式付き出力 scanfの2番目の引数に変数を指定する際は、「&(変数名)」というように「&」をつけてポインタとして扱って下さい。そういうルールだと思っていただいて構いません。 実践レベルの問題を考えれば、実は scanf() 関数が使われることは滅多にありません。理由はエラーチェックが十分にできないからです。十分なエラーチェックを行う必要がある入力は(商用のプログラムは十分なエラーチェックが必要であり、結果として本格的なプログラムには scanf() をあまり使わない)変換作業を行わずに、他の標準入力関数を用いて文字列として入力された情報を受け取り、入力された文字列を調べて適切な値に変換するというような作業を行います。もちろんこれらの作業は複雑になります。
Nim game
Nim game ニム (nim) は、2人で行うレクリエーション数学ゲームの1つである。ルーツは古代中国からあるとされ、16世紀初めの西欧で基本ルールが完成したが、名前については、一般的に1901年にハーバード大学のチャールズ・L.バウトン (Charles L. Bouton) によって名付けられたとされる。 ゲームルール: 一人1個か2個か3個か4個だけ取れて、交互にやっていって、 最後の1個の石を取った人が負けとなります。 #include <stdio.h> int main(void) { int i, stone, n=0, turn=0; char name[2][256]; printf(“Input players’ names\n”); printf(“player 1:”); scanf(“%s”, name[0]); printf(“player 2:”); scanf(“%s”, name[1]); printf(“\nnumber of stones:”); scanf(“%d”, &stone); while (stone > 0){ printf(“\nThere are %d stones.\n”, stone); printf(“%s’s turn! Take some stones:”, name[turn]); […]
11.3 文字列関数
標準ライブラリ関数 : 文字列操作関数 string.hのヘッダファイルをincludeする 主なもの: strcpy(ss,st):文字列(文字型の配列)ssに文字列stをコピーする strlen(st):文字列stの長さを求める strcat(ss,st):文字列ssの後ろに文字列stを連結する strncpy(ss,st,n):文字列ssに文字列stの先頭n文字をコピーする strncat(ss,st,n)文字列ssの後ろに文字列stの先頭n文字を連結する サンプル: #include <stdio.h> #include <string.h> //string.hのインクルードを忘れずに int main(int argc, const char * argv[]) { // insert code here… char str[40]; char alpha1[] = “ABCDE”; char alpha2[] = “VWXYZ”; int length; printf(“alpha1 : %s\n”, alpha1); printf(“alpha2 : %s\n”, alpha2); strcpy(str, alpha1); strcat(str, alpha2); printf(“str : %s\n”, […]
1.2 変数と入力
変数と宣言 代入 int a, b; a = 19; b = -20; 変数初期化 int a = 1; int b = 10; int c = 4; 変数の演算 a = b + c; (練習1)変数と宣言のサンプル #include <stdio.h> int main(int argc, const char * argv[]) { // insert code here… int a; int b; int result; a = 4; b […]
8.5 入出力と文字
標準ライブラリ関数 : 標準入出力関数 標準入出力関数には(C言語プログラミング)で説明した printf() や scanf() の他にも 下のように 1文字専用の入出力関数と 1行専用の入出力関数が用意されている。 標準入力から文字入力 getchar 関数 標準出力から文字出力 putchar 関数 標準入力から文字列入力 gets 関数 標準出力から文字列出力 puts 関数 標準入力から書式付き入力 scanf 関数 標準出力から書式付き出力 printf 関数 標準入力関数(参考) getchar() int getchar(void); 標準入力(キーボード)からの入力値を「EOF」まで1文字づつ取得します。エラー時は「EOF」を返します。 gets() char *gets(char *str); 標準入力(キーボード)からの入力値を「EOF」※1まで1行づつ取得して、その文字列の先頭アドレスを引数のchar型ポインタ(*str)に渡すと共に戻り値としても返します。エラー時は「EOF」を返します。 但し現在では読み込む長さを指定できる「fgets()」の使用が推奨されています。 fgets() char *fgets(const char *str, int n, FILE *stream); 「*stream」で示されるストリーム※2から「n-1」文字を取得し「\0」を付加して、その文字列の先頭アドレスを引数のchar型ポインタ(*str)に渡すと共に戻り値としても返します。 scanf() int scanf(char *format,…) ; […]
C# exercises (2) Event-driven
Visual Studio community 2015 アカウントについて (学内専用) イベントドリブンとは 「キーボードのボタンが押された」とか「マウスが移動した」等の、 コンピュータ上で発生するなんらかの事象のことをイベント(event)といい、 イベントが発生したときに行う処理のことをイベント ハンドラー(event handler)と呼びます。 このように、イベントとそれに対する処理により動作するようなプログラムのことをイベント駆動型(event drive)プログラムと呼びます。 課題:ボタンクリックでメッセージボックス に表示 デザインの作成 ツールボックスの中から、Buttonを選択して、Form1に貼り付ける ボタン名の変更 プログラムの作成 ボタンをダブルクリック(ダブルクリック: マウスの左ボタンを2回連続で押す) 少しずつ入力すると命令が表示されるので、Mesまで入力して、MessageBoxを選択しましょう。 MessageBoxのあとは、「.」 (ドット)を入力、関数「Show」を選択して、(” “); を入力 完成したコード using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace test1 { public partial class Form1 : Form { public […]
C# exercises (1) Guidance
Windowsアプリを作る C#について 開発しやすく,高機能なプログラミング言語 様々なプログラミング言語の良いところを組合せて作った. プログラムのミス(バグ)が出にくい 学習しやすい 比較的簡単に自分が作成したいWindowsアプリを作れる Windowsアプリの開発ではC#を使うことが標準になってきている。 この課程について Microsoft Visual C# 2015利用 とても難しいWindowsアプリの開発をできるだけ簡単にして、いろいろな高度な機能を教えたい。 少しでもプログラミングの楽しさが伝わるように工夫したい。 演習中心:できるだけ見やすく工夫します。 簡単ながら、応用しやすく、かつ、興味がもてるような題材を考えてきます。 試験:レポート 評価:出席+演習+レポート *** プログラムの作り方 –Microsoft Visual C# 2015 Express Editionを起動 –画面の左下の「スタート」メニュー ⇒ プログラム ⇒ Microsoft Visual C# 2010 Express Edition •左上のメニューから「ファイル」⇒「新しいプロジェクト」を選択 •「Windowsフォームアプリケーション」が選択された状態で、プロジェクト名に好きな名前を入力する プロジェクトの初期状況 ツールボックスを固定