タグ

ブックマーク / www.cc.kyoto-su.ac.jp/~yamada (10)

  • 整数型とビット操作

    Cのプログラム中で,整数の定数を16進数で表すことができる. その定数には16進数であることの印のために,頭に 0x を付けることになっている. ( x は16進数 hexadecimal number の x を意味する) 次のプログラムで確かめてみよう.(書式文字列 %x は16進数で整数を表示する指定.) #include <stdio.h> int main() { char c; int i; c = 0x4d; i = 0x0076adf1; printf("%x = %d\n%x = %d\n", c, c, i, i); return 0; } 4d = 77 76adf1 = 7777777 符号無し整数と符号付き整数 C言語では,char 型や int 型などの整数を表す型には, 符号付き(signed)の型と符号無し(unsigned)の型とがある. 符号付きの型は負

  • プログラミングB (Programming B) C言語

    春学期のプログラミングAの授業では基礎的なC言語のプログラミングについて学習したが, この授業では,以下のような項目に分けて,さらに詳しく学習をする. 同時に開講されているプログラミングCの授業で学習することを補完する内容になっているので, 両方の授業内容をしっかりと習得すること. 配列 文字列 ポインタ 関数 構造体 整数型とビット操作 浮動小数点数と誤差 制御文 コーディング実技試験 問題と解答解説

  • ポインタ(pointer)

    ポインタ (pointer) プログラミングBのページへ戻る メモリモデル 変数のメモリサイズとアドレス 変数のメモリサイズ 変数のアドレス 演習問題1 変数とポインタ アドレス演算子 & 間接参照演算子 * ポインタ型変数 配列とポインタ ポインタによる配列のアクセス ポインタ演算 演習問題2 ポインタへのポインタ レポート課題 コンピュータのメモリを自在にアクセスするために,C言語にはポインタという型がある。 また,C言語を習得しようとしている者にとって,最大の難関が,このポインタを理解して使いこなすことである。 プログラミングにおいてポインタが必要となるのは,次のような場合である。 関数に「参照渡し」という形で引数を渡す場合 ヒープ領域を使う場合 関数自体をデータとして扱う場合 しかし,そのどれも現段階では残念ながらまだ学習していない。 したがって,「何故ポインタが必要なのか」が分か

  • 整数型とビット操作

    Cのプログラム中で,整数の定数を16進数で表すことができる. その定数には16進数であることの印のために,頭に 0x を付けることになっている. ( x は16進数 hexadecimal number の x を意味する) 次のプログラムで確かめてみよう.(書式文字列 %x は16進数で整数を表示する指定.) #include <stdio.h> int main() { char c; int i; c = 0x4d; i = 0x0076adf1; printf("%x = %d\n%x = %d\n", c, c, i, i); return 0; } 4d = 77 76adf1 = 7777777 符号無し整数と符号付き整数 C言語では,char 型や int 型などの整数を表す型には, 符号付き(signed)の型と符号無し(unsigned)の型とがある. 符号付きの型は負

  • 配列(array)

    プログラミングBのページへ戻る 配列とは 配列の要素 配列の宣言 配列の初期化 配列全体の取り扱い 配列と sizeof 演算子 サンプルプログラムと演習問題1 サンプルプログラム1(内容の表示と総和) for文の繰り返し範囲指定の方法 for (i = 0; i < N; i++) サンプルプログラム2(逆順に複写) マクロ定数の活用 #define N 10 サンプルプログラム3(最大値) 演習問題1(ベクトル和) 配列の添字に関する重要な注意事項 2次元配列 2次元配列の初期値 2次元配列サンプルプログラム サンプルプログラムと演習問題2 サンプルプログラム4(成績処理) 演習問題2 多次元配列 レポート問題 配列とは 配列(array)とは,同一の型のデータを(メモリ上に)一列に(隙間をあけずに)並べたものである。違う型のデータを混在して並べて配列とすることはできない。 配列中の各

  • オセロゲーム

    誰でも知っているとは思うが,そのルールを解説しておく。 下図のように 8×8 のゲーム盤上に,4個の石が初期状態としておいてある。 交互に自分の色の石を置いていく。 石をおける場所は,自分の色の石で相手の石が1個以上挟める所である。挟む方向は,縦横斜めのどれでもよい。 このとき,挟まれた石は,自分の色の石となる。 石をおける場所がない場合には,パスをする。 石をおける場所がある場合には,パスはできない。 両者とも石をおける場所がなくなった場合,ゲームは終了する。 ゲーム終了時の石の個数で勝敗を決める。 ゲーム盤の列と行には図のように,記号と番号がついている。ゲーム盤のマス目は「dの4」のように列と行の記号と番号で指定される。 プログラム仕様 これから作るプログラムの仕様をここで決めておく。 目標のレベルを二つ設定し,それぞれ次のようなプログラムを作ることにする。 第1レベル プログラム仕様

  • 文字列(string)

    ヌル文字 「'」という文字は文字定数を表すために使用されているので,「'」自身を意味する文字は「\'」と表すことになっている。したがって,「'」を表す文字定数はこれを「'」で括った「'\''」である。 「"」という文字は文字列を表すために使用されているので,「"」自身を意味する文字は「\"」と表すことになっている。 「\」という文字は特殊文字を表すために使用されているので,「\」自身を意味する文字は「\\」と表すことになっている。 表の最後にあるヌル文字「\0」は,次節で説明する文字列の終端を表す文字として使用される。 char 型は文字を表す型ではあるが,その質は1バイトで表された整数(-128~127)を表す型である。したがって, 'a' などの文字定数も整数としての意味を持つ。それを次のプログラムを実行して確認しよう。(%d は整数値を10進数で表示することを指定する) #incl

  • 制御文

    プログラミングBのページへ戻る プログラムの実行(流れ)の制御を行う文を,ここでもう一度詳しく解説する. フローチャート 条件式 演習問題1 if 文 switch 文 for 文 演習問題2 演習問題3 while 文 do - while 文 無限ループ よくある間違い レポート課題 フローチャート フローチャート(流れ図)は,プログラムの実行手続きの流れを図によって表示するものである. その書き方はJIS規格で決まっている. JIS X 0121:1986 情報処理用流れ図・プログラム網図・システム資源図記号 フローチャートで用いる部品 フローチャートの例 1からnまでの整数の和を求めるプログラムと,そのフローチャートとを見比べてみる. #include <stdio.h> main() { int n, i, s; scanf("%d", &n); s = 0; for (i =

  • 構造体

    プログラミングBのページへ戻る その前に,typedef 構造体とは 構造体の宣言 メンバ参照(直接参照) サンプルプログラム1 構造体の代入 構造体のサイズ 構造体の配列 サンプルプログラム2 構造体をメンバにする構造体 関数と構造体 構造体型の関数引数 構造体型の関数戻り値 構造体ポインタ型の関数引数 メンバ参照(間接参照) レポート問題 その前に, typedef typedef を用いると,既に定義されている型に,別の新しい名前をつけて定義することができる(typedef は型(type)定義(definition)を略したキーワードである).その方法は次の通り. typedef 定義されている型 定義する新しい型名; 具体的には次のようにする. typedef int seisu_t; これは, seisu_t という名前の型は int 型であると定義している. この型定義をした

  • 浮動小数点数型と誤差

    有限桁 C言語で扱える実数値は,2進数の有限小数で表された数値である.例えば次のようなものである. 1.5(10) = 1.1(2) 3.25(10) = 11.01(2) 理論的には小数が無限に続く値でも,そのうちの有限個の桁数でその値を表すしかない. 例えば,0.1 を2進数の小数で表すと 0.1(10) = 0.000110011001100110011...(2) と無限に続くが,コンピュータの内部では有限桁で丸められている. このような場合には,当の値ではなく,近似値でしか表すことができない. 指数表記(浮動小数点表記) 科学計算では非常に大きな実数値や非常に小さな実数値も扱うことがある. そのようなときには,通常の10進数の表記ではなくて,次のような指数表記で表すれば 無駄な 000...000 という桁を表記しなくてもよくなる. 1234567890000000000000

    浮動小数点数型と誤差
  • 1