カフェで勉強してます

今日は気分を変えて,いつもとは違うカフェで勉強をしてみました。
(画像は,注文したアイスミルクティーと自家製フロマージュです)

アイスミルクティーとフロマージュです

ちなみに,フロマージュって何なんだろうと思って調べてみたら,
フランス語で「チーズ」のことらしいです。

————— キリトリセン 8X —————

さてさて。

テキストの第 6 章ということで,引き続き,自分メモです!

★ 静的解析ツール

 ・構文チェッカ
  → ソースプログラムが,言語で定めれらた構文に従って記述されているかを
    チェックします。

 ・コードオーディタ
  → ソフトウェア開発において独自に定めたプログラミング規約(コーディング規約)に
    対する違反を検出します。

 ・モジュールインタフェースチェックツール
  → モジュール間のインタフェース(例:実引数と仮引数の個数)の不一致など
    を検出します。

★ 動的解析ツール

 ・トレーサ(追跡プログラム)
  → 命令単位,あるいは,指定した範囲でプログラムを実行し,実行直後の
    レジスタの内容やメモリの内容など,必要な情報が逐次得られます。
    (プログラム中の誤り箇所を特定できないときに効果アリ)

 ・インスペクタ
  → 構造体のようなデータ構造の内容を容易に確認できるように,見やすい形で
    表示します。

 ・スナップショット(動的ダンプ)
  → プログラムの特定の命令文が実行されるごとに,指定されたメモリやレジスタの内容を
    出力します。なお,プログラムの異常終了時にメモリやレジスタの内容を出力するものを
    メモリダンプ(静的ダンプ)といいます。

 ・ガバレージモニタ
  → プログラム全体の経路のうち,テストでどの程度(%)カバーしたかという網羅率を
    測定します。

 ・アサーションチェッカ
  → プログラムの正当性を検証するために挿入されたアサーション(変数間の論理的に
    成立すべき条件)が実行時に成立しているかどうかを検査します。

★ テスト環境設定ツール

 ・テストベッドツール
  → スタブやドライバの生成など,プログラムテストの動作環境を整備します。

 ・テスト自動生成ツール
  → テストデータのデータ構造を与えることにより,自動的にテストデータを生成します。

comments

プロフィール(β版)始めました

書こう書こうと思って,ずっと放置していたプロフィールをようやく載っけました。
たいした内容ではありませんが,良かったら読んでやってください。
(左の「ひじきと□の馴れ初め」をクリックすると,続きが読めます)

さてさて,ソフトウェア開発技術者試験の進捗状況。

範囲の広い第 6 章,なかなか読みきれそうにないですが,
とりあえず,自分用のメモをアップしておきます。

 ・手続き型プログラム言語
  → 問題解決のための処理手順(アルゴリズム)を,1 文(命令)ずつ
    順を追って記述します。
    (例)C 言語,COBOL,Fortran,Pascal,PL/1 など

 ・関数型プログラム言語
  → 関数の定義とその呼び出しによってプログラムを記述します。
    再帰処理に向いていて,関数定義の中ですでに定義した関数や
    自分自身を使用した定義ができる,という特徴があります。
    (例)Lisp,APL など

 ・論理型プログラム言語
  → 述語論理を基礎とした論理式により記述されるプログラム言語です。
    「~であれば,…である」という推論のような記号処理を必要とする問題に
    適しています。
    (例)Prolog(人工知能の研究開発で使用されています) など

 ・オブジェクト指向型プログラム言語
  → データ(属性)とそのデータに対する手続き(メソッド)を 1 つにまとめた,
    「オブジェクト」と呼ばれるものが基本となるプログラム言語です。
    (例)C++,Java,Smalltalk など
   

手続き型プログラム言語とオブジェクト指向型言語には触れたことがあるのですが,
それ以外の言語はまったく知らないので,google で調べてみました。
(1 番下に,リンクが貼ってあります)

ついでに,Smalltalk の入門ページも載っけてみましたが,
この言語って,インタプリタ型(命令を 1 文ずつ解釈するタイプ)なんですねー!

うーん。

プログラミングって,ホント奥が深い!

————— キリトリセン 8X —————

★ Lisp 入門
http://wisdom.sakura.ne.jp/programming/lisp/index.html

★ Prolog 入門(注・PDF ファイルです)
http://bach.istc.kobe-u.ac.jp/lect/ps/prolog.pdf

★ Smalltalk 入門
http://www.oklab.org/program/gnu_smalltalk.html

comments

合格情報処理

本当は正式?に,レビューとして書きたかったのですが,
肝心の書籍が検索に引っかからなかったので,苦肉の策ということで。

合格情報処理の画像です

これは,ソフトウェア開発技術者用の書籍ではなく,
基本情報技術者や初級シスアド向けの対策本です。

書籍というより,雑誌なのですが,
イラストやカラーページも多いので,読み物としても楽しめます。

個人的に一番オススメなのは,この本についているおまけ!

重点をまとめた試験直前の対策用の小冊子とか,
私が基本情報技術者試験に挑戦したときにも,かなり重宝しました。

しかも,世の中的にも人気だったのか,
試験直前に発売される,11 月号とか 5 月号は,
どこの書店に行っても売り切れていて在庫すらない,ってときもあったくらいです…(汗)

KCG の 2F インフォステーションにもおいてある雑誌なので,
興味があれば読んでみて下さい!

————— キリトリセン 8X —————

★ 合格情報処理
http://www.gakkenpc.net/goukaku/top.html

comments

体験入学,好評実施中!

今日は,KCG のオープンキャンパス(体験入学)ということで,
久々に私もスタッフとして参加しました!

主に裏方メインでしたが,最後の個別相談辺りで,
コンピュータ関係への進学を考えている女の子とお話をしたのですが,
まだ,高校 1 年生なのに,自分の将来にしっかりとしたビジョンを持っていて,
私ももっともっと頑張らないとなぁ…と良い刺激を受けることができました!

いちおう,理系分野に身を投じた女子の 1 人である自分としては,
こういう女の子がこれからもっと増えていけばいいのになぁ,と切に思います。

そのためにも,そういう女の子たちのお手本になれるよう,
女子だからと差別されることなく,
持っている技術とか,努力した分だけ認められるんだっていうことを
身をもって証明していかないといけないですね!

もちろん,一朝一夕では無理な話ではあるのですが,
小さな小さな日々の積み重ねが大きな理想につながると思っているので,
資格取得も含めて,改めて頑張って行きたいと思います!

今日からテキストも,第 6 章の「システムの開発と運用」に突入です!

————— キリトリセン 8X —————

熱いことを言ったあとは,
ぬるいことを言ってクールダウン…ということで。

唐突な話ではあるのですが,
先ほど,思わぬところから,今年初のナシをいただきました。

大のナシ好きとしては,もうウハウハ(死語)です!

ナシの図です

…実は,この梨を切るために,数ヶ月ぶりに包丁を持っただなんて,内緒の話。

しかも,皮むき全般が苦手だから,
ピーラーを使ったなんて事実は,口が裂けても言えません(笑)

comments

ご褒美

ここ数年の話なのですが,何かを成し遂げたり,何かの節目だったりすると,
頑張った自分に対して,何かしらのご褒美を用意するようにしています。

今回は,半年間授業を頑張った自分へのご褒美として,
こんなものを買っちゃいました!

ヘルスメーターです

ヘルスメーターです!

むちゃくちゃ安かった上に,本体は B5 サイズと,その小柄なボディに惚れて即購入!

体脂肪を測ったりとか,高度な機能はまったくありませんが,
場所は取らないし,一番知りたい体重は教えてくれるし,
個人的にはなかなか気に入ってます!

とりあえず,目指すは現状維持!!(欲を言えば,2 kg 減)

————— キリトリセン 8X —————

ご褒美に浮かれてばかりじゃいられない,ってことで,
第 2 章の範囲で苦手な確率の問題を紹介ー!

[問題]
キー値の分布が 1 ~ 1,000,000 の範囲で一様にランダムであるデータ 5 個を,大きさ 10 のハッシュ表に登録する場合,衝突の起こる確率はおよそいくらか。ここで,ハッシュ値はキー値をハッシュ表の大きさで割った余りを用いる。

 (ア) 0.2   (イ) 0.5   (ウ) 0.7   (エ) 0.9

この問題は,まず,衝突の起こらない確率について考え,
そこから以下の式を元に,衝突の起こる確率を求めて,問題を解いていきます。

    1 – 衝突の起こらない確率 = 衝突の起こる確率 …(a)

ちなみに,ハッシュ値を求める場合,
必ず,衝突が起こるか起こらないかのどちらかの場合になるため,

   衝突が起こる場合 + 衝突の起こらない場合 = すべての場合(= 1)

が成り立つことから,(a) の式を導くことができます。

なお,問題文の赤色の部分から,ハッシュ表のハッシュ値は,
キー値をハッシュ表の大きさ 10 で割った余りなので,

   キー値 / 10 の 余り = 0 ~ 9 の 10 個の値のいずれか

ということが分かります。

続いて,5 つのデータにおける,衝突の起こらない確率ですが,
これは,それぞれの場合についての可能性を順番に考えていけば OK です。

 ・ 最初(1 つ目)のデータの場合
  → まだ,ハッシュ表にはデータが 1 つも格納されていないので,
    最初のデータのハッシュ値は 0 ~ 9 のどの値でも構いません。
    よって,衝突が起こらない可能性は 1(10 分 の10)となります。

 ・ 2 つ目のデータの場合
  → ハッシュ表には,すでに 1 つのデータが格納されているので,
    2 つ目のデータのハッシュ値は,最初のデータのハッシュ値以外の
    9 個の値のうちのいずれか,でなければなりません。
    つまり,衝突が起こらない可能性は 0.9(10 分の 9)となります。

 ・ 3 つ目のデータの場合
  → 2 つ目のデータと同様に,すでに 2 つのデータがハッシュ表に格納されているので,
    3 つ目のデータのハッシュ値は,8 個の値のうちのいずれか,になります。
    したがって,衝突が起こらない可能性は 0.8(10 分の 8)です。

 ・ 4 つ目のデータ,5 つ目のデータの場合
  → 2 つめ以降にならって,それぞれの衝突の起こらない可能性を考えると,
    4 つ目のデータの場合は 0.7(10 分の 7),
    5 つ目のデータの場合は 0.6(10 分の 6)となります。

以上の可能性は,同時には起こらないので,

   1 × 0.9 × 0.8 × 0.7 × 0.6 = 0.3024(衝突の起こらない確率)

となります。

これを (a) の式に当てはめると,1 – 0.3024 ≒ 0.7 となり,
正解は (ウ) であることが分かります。

comments

夏休み最終日

楽しい楽しい夏休みもあっという間に最終日。

意地でも,夏休み中に第 2 章を終わらせようと,
最終日にもかかわらず,問題集を必死でやり切りました。

気になる結果はというと…,ものの見事に惨敗でした(涙)

やっぱり木構造とか,確率の問題が苦手な模様。
あとは,何回やっても間違える流れ図の問題もあったり…。

内容が濃い第 2 章なだけに,立ちはだかる幾多の壁って感じです。

とりあえず,木構造の巡回法に関する,自分メモだけアップして,
京都に戻りたいと思います!

★ 2 分探索木の巡回法

木構造のサンプル画像です

 ・ 幅優先探索法(幅優先順)
  → 分岐が多くなるように根に近い接点から順に探索する方法
    (例)15 → 8 → 18 → 2 → 10 → 20

 ・ 深さ優先探索法(深さ優先順)
  → できるだけ分岐せず,できるだけ深く探索する方法
    先行順,中間順,後行順の 3 つの巡回順があります。

    <先行順:節 → 左部分木 → 右部分木>
   (例)15 → 8 → 2 → 10 → 18 → 20

   <中間順:左部分木 → 節 → 右部分木>
   (例)2 → 8 → 10 → 15 → 18 → 20

   <後行順:左部分木 → 右部分木 → 節>
   (例)2 → 10 → 8 → 20 → 18 → 15

comments

夏休み 5 日目

地元の画像です

こんにちは!

こんな田んぼしかない田舎が故郷のひじきです。
(この画像は,帰りの電車の窓から撮影しました)

無事に,第 2 章のテキストを読み終えたので,章末問題にチャレンジしたわけですが,
昨日の自分メモが絡んだ問題がかなりあったおかげで,そこそこの出来でした!

間違ってしまった…というわけではないのですが,
なんとなくお気に入りなので,この問題を紹介しておきます(笑)

[問題]
A,B,C の順序で入力されるデータがある。各データについてスタックへの挿入と取出しを 1 回ずつ任意のタイミングで行うことができる場合,データの出力順序は何通りあるか。

  (ア) 3    (イ) 4    (ウ) 5    (エ) 6  

この問題の解き方は,非常に単純に,
実際にすべての場合について考えていけば良いのですが,
その際に注意しなければいけないのは,

  「スタックからデータを取り出す(pop)には,
   スタック内にデータが残っていないといけない」

という点についてです。

このことから,まずはスタックにデータを入力(push)しなければならないので,
最初の操作として,pop が来ることはない,というのが分かります。

これらをふまえて,すべての場合について考えてみると,
以下の 5 通りになります。

 (1) push(A) — pop(A) — push(B) — pop(B) — push(C) — pop(C)
 
  → 取り出された順番は,A・B・C の順。

 (2) push(A) — push(B) — pop(B) — push(C) — pop(C) — pop(A)

  → 取り出された順番は,B・C・A の順。

 (3) push(A) — pop(A) — push(B) — push(C) — pop(C) — pop(B)

  → 取り出された順番は,A・C・B の順。

 (4) push(A) — push(B) — pop(B) — pop(A) — push(C) — pop(C)

  → 取り出された順番は,B・A・C の順。

 (5) push(A) — push(B) — push(C) — pop(C) — pop(B) — pop(A)

  → 取り出された順番は,C・B・A の順。

したがって,正解は (ウ) です。

ちなみに,昨年もこの問題にチャレンジしたことがあり,
そのときは,各データに対して,push と pop を 1 回ずつ行えるのではなく,
それぞれの操作が全体で 1 回ずつしか行えないんだと勘違いして,
「そんなの,A を push して pop したら終わりじゃん」と馬鹿なことを考えてたのを
今でも覚えています。

…そういう意味では,私のおバカな脳みそもちょっとは成長したのかもしれません。

comments

夏休み 4 日目

暑さにやられて半分とけかけつつも,
お盆休み中に第 2 章を終わらせたい…という目標を達成すべく,
頑張ってテキストを読み終えました!

とりあえず,知識の整理を行うためにも,
自分用にいろいろメモっときます。

探索法の表です

まだまだメモは続くよー!

comments

夏休み 4 日目(メモその2)

自分メモの続きです。

1 つしか画像がアップできないようなので,
何回かに分けてます!

データがない場合の表です

次で最後ー!

comments

夏休み 4 日目(メモその3)

これが最後のメモ!

ソートの表です
comments