応用情報処理技術者試験の対策サイトです。 応用情報処理技術者試験の午前問題を中心とした基礎用語の解説を中心に掲載します。書き始めたばかりなので、内容はまだまだ不十分です。
カテゴリ:

2.プログラミング > 2.7 プログラミング

配列を作ると、メモリにアドレスが確保されます。その様子をプログラムで実行します。
#include <stdio.h>
void main() {
    int A[100];  // 配列変数Aを定義。保存可能個数は100個でA[1]-A[100]を使用可能。
    int k;// 整数型の変数kを定義
    // kを1から100まで、1ずつ増やす(k++)
    for (k = 1; k <= 100; k++) {
        A[k] = k; 
        printf("A[%d]_add:%p\n",k,&A[k]); //A[k]のアドレスを表示
    }
}

結果は、以下のようになります。

c:\work>pg1.exe
A[1]_add:0028FDA0
A[2]_add:0028FDA4
A[3]_add:0028FDA8
A[4]_add:0028FDAC
A[5]_add:0028FDB0
A[6]_add:0028FDB4
A[7]_add:0028FDB8
・・・・
続きを読む

■H28春、H25春
問20 メインプログラムを実行した後,メインプログラムの変数X,Yの値は幾つになるか。ここで,仮引数Xは値呼出し(call by value),仮引数yは参照呼出し(call byreference)であるとする。

H28h-問20
【正解】イ

少し補足します。
_尚数Xは値呼出し(call by value)
main関数での「値」を呼び出します。add関数実行では、main関数とは違うアドレスに記録します。
よってmain関数のXの値が変化しません

仮引数yは参照呼出し(call byreference)
main関数でのyの値が入った「アドレス」を呼び出します。add関数実行により、main関数でのYの値を書き換えるので、Yの値が変化します。

#include <stdio.h>

//add関数
void add(int X, int *Y)
{
 //"Y"は参照呼び出し(ポインタ)で渡されるため
 // 値を参照する場合や、値を代入する場合は"*Y"を使用

 X = X+*Y;  //"X"に"Y"の値を加えて"X"に代入
 *Y = X+*Y;  //"X"に"Y"の値を加えて"Y"に代入
}

//main関数
void main(){
 int X, Y;  //"X","Y"をint型変数で定義
 X = 2;
 Y = 2;

 //add関数の実行
 add(X,&Y);
 //add関数実行後の"X","Y"の値を表示

 printf("add(X,Y)はX=%d,Y=%dです\n", X, Y);

}
"X"は値呼び出しで渡されるため、add関数実行により値が変化しない
 "Y"は参照呼び出しで渡されるため、add関数実行により値が変化する
具体的には、X=2+2=4、Y=4+2=6

aa

■メモ
メモリ上のアドレスと、その値
http://sc.seeeko.com/archives/5377814.html

■H25春
問8 流れ図に示す処理の動作の記述として,適切なものはどれか。ここで,二重線は並列処理の同期を表す。
H25h-問8
ア ABC又はACBを実行してデッドロックになる。
イ AB又はACを実行してデッドロックになる。
ウ Aの後にBC又はCB,BC又はCB,・・・と繰り返して実行する。
エ Aの後にBの無限ループ又はCの無限ループになる。

【正解】ウ

コンパイラは、「コンピュータが直接実行可能な機械語に,プログラムを変換するソフトウェア(H25春IP問53不正解選択肢)」です。

■コンパイルの流れ
コンパイラにおける処理は、まず、ソースコードを解析します。このとき、字句解析,構文解析,意味解析の流れで解析をします。たとえば構文解析では、ソースコードの文法に誤りがないかをチェックします。
 次にプログラムの実行時間を短縮するための最適化を行います。たとえば、途中で値が変更されない変数を定数で置き換えることで、処理速度を速めます。
 最後に、最適化されたソースコードを機械語に変換してコンパイルが完了します。

上記の流れを、過去問(H25秋AP問20)を基に整理します。
ソースコード解析
〇句解析
プログラムを表現する文字の列を,意味のある最小の構成要素の列に変換する。
構文解析
言語の文法に基づいてプログラムを解析し,文法誤りがないかチェックする。
0嫐2鮴
変数の宣言と使用とを対応付けたり,演算におけるデータ型の整合性をチェックする。

最適化
レジスタの有効利用を目的としたレジスタ割付けや,不要な演算を省略するためのプログラム変換を行う。

応用情報技術者試験を勉強する成子 

たとえば、どんな処理がありますか?
過去問(H27秋AP問19)では、「コンパイラが行う最適化の方法」として,「定数が格納される変数を追跡し,途中で値が変更されないことが確認できれば,その変数を定数で置き換える」とあります。

機械語に変換
最適化されたソースコードを機械語に変換します。

----------過去問
■H27秋
問19 目的プログラムの実行時間を短くするためにコンパイラが行う最適化の方法として,適切なものはどれか。
ア 繰返し回数が多いループは,繰返し回数がより少ないループを複数回繰り返すように変形する。例えば,10,000回実行するループは,100回実行するループを100回繰り返すようにする。
イ 算術式の中で,加算でも乗算でも同じ結果が得られる演算は乗算で行うように変更する。例えば,“X+X”は“X*2”で置き換える。
ウ 定数が格納される変数を追跡し,途中で値が変更されないことが確認できれば,その変数を定数で置き換える。
エ プログラム中の2か所以上で同じ処理を行っている場合は,それらをサブルーチン化し,元のプログラムのそれらの部分をサブルーチン呼出しで置き換える。
【正解】ウ

■H27春
問19 あるコンピュータ上で,異なる命令形式のコンピュータで実行できる目的プログラムを生成する言語処理プログラムはどれか。
ア エミュレータ     イ クロスコンパイラ
ウ 最適化コンパイラ  エ プログラムジェネレータ
【正解】イ

■H25秋
問20 コンパイラにおける処理を字句解析,構文解析,意味解析,最適化の四つのフェーズに分けたとき,意味解析のフェーズで行う処理はどれか。
ア 言語の文法に基づいてプログラムを解析し,文法誤りがないかチェックする。
イ プログラムを表現する文字の列を,意味のある最小の構成要素の列に変換する。
ウ 変数の宣言と使用とを対応付けたり,演算におけるデータ型の整合性をチェックする。
エ レジスタの有効利用を目的としたレジスタ割付けや,不要な演算を省略するためのプログラム変換を行う。

【正解】ウ
ア:構文解析
イ:字句解析
エ:最適化

■H20春FE午前
問38 コンパイラによる最適化の主な目的はどれか。
ア ソースプログラムのレベルでのデバッグを容易にする。
イ プログラムの実行時間を短縮する。
ウ プログラムの保守性を改善する。
エ 目的プログラムを生成する時間を短縮する。

正解はイです。

XMLには関連する技術がいくつかあります。たとえば、Webサイトにおいて動画や音声の再生のタイミングを調整することができるSMIL(Synchronized Multimedia Integration Language)スマイルと読みます)です。

■H28秋AP午前問25
問25 動画や音声などのマルチメディアコンテンツのレイアウトや再生のタイミングをXMLフォーマットで記述するためのW3C勧告はどれか。

ア Ajax
イ CSS
ウ SMIL
エ SVG
正解は、ウです。

問24 Webページの設計の例のうち,アクセシビリティを高める観点から最も適切なものはどれか。

ア 音声を利用者に確実に聞かせるために,Webページの表示時に音声を自動的に再生する。
イ 体裁の良いレイアウトにするために,表組みを用いる。
ウ 入力が必須な項目は,色で強調するだけでなく,項目名の隣に“(必須)”などと明記する。
エ ハイパリンク先の内容が推測できるように,ハイパリンク画像のalt属性にリンク先のURLを付記する。
正解は、ウです。

問6 次のCプログラムの説明及びプログラムを読んで,設問に答えよ。

〔プログラムの説明〕
 金額を表すときのように,整数を3けた区切り形式の文字列に変換する関数convertである。
(1)次のルールに基づいて変換を行う。
  \或値が負の場合,先頭にマイナス符号を付ける。
 ◆/値の下位から3けたごとにコンマを挿入する。
  変換例を表に示す。
H20秋FE午後1問6表
(2) プログラム中で定義されている関数の仕様は,次のとおりである。
   void convert(long num,char str[ ]);
    引数:整数num.変換後の文字列strr】
    返却値:なし
    機能:整数numを3けた区切り形式の文字列に変換してstr[ ]に先頭から格納する。str[ ]には変換後の文字列を格納するのに十分な領域が確保されているものとする。また,整数numは9けた以下とする。

〔プログラム〕
 void convert(long, char[ ]);

 void convert(long num,char str[ ]){
       int minus = 0, i = 0, j = 0;
       char table[ ] =  "0123456789";
       char tmp;
     
       if(num < 0){
         minus = 1;
         num = -num;
       }

      do{
           str[j++] = table[num % 10]; /* 数値の下位から順に文字に変換 */
           num [  a  ];
           i++;
           if([  b  ] == 0 && num ! = 0){
              str[j++] = ’,’
           }
     }while(num != 0);

    if(minus != 0)[
       str[j++] = '-';
    }
    str[j--] = '\0’;

    for(i =0; [  c  ]){        /* 順序を逆にする */
         tmp = srt[i];
         str[i] = str[j];
         str[j] = tmp;
    }
  }


設問 プログラム中の[    ]に入れる正しい答えを,解答群の中から選べ。

aに関する解答群
ア %= 10イ *=  -1
ウ *= -10
エ *= 10
オ /= 10

bに関する解答群
ア (i + 1) % 3
イ (i + 2) % 3
ウ (j + 1) % 3
エ (j + 2) % 3
オ i  %  3
力 j  %  3

cに関する解答群
ア i != j; i++
ウ i < j; i++
イ i != j; i++, j--
エ i < j; i++,j--
正解は、
a オ
b オ
c エ
です。

問3 コンピュータ間でのデータ受渡しに関する次の記述を読んで,設問1~3に答えよ。

 コンピュータ間でデータを受け渡す際の汎用的なデータ形式として,CSV(Comma Separated Value)とXML(Extensible Markup Language)がある。
 CSVは,データをコンマで区切って並べたデータ形式であり,多くの表計算ソフトやデータベースソフトで利用できるので,異なる種類のアプリケーションソフト間のデータ交換に使われることが多い。
 XMLは,SGML(Standard Generalized Markup Language)のサブセットとして1998年にW3C(World Wide Web Consortium)が仕様を策定したメタ言語である。XMLで記述したデータオブジェクトをXML文書と呼ぶ。 XML文書には,XMLの文法に従って記述されだ“整形式の文書(well-formed document)”と,XMLの文法に従った上で更にDTD(Document Type Definition)が定義するデータ構造にも従って記述されている“妥当な文書(valid document)”がある。


設問1 次の(1)~(4)に示す要件が求められている場合,それぞれCSVとXMLのどちらを採用するのが適切か。それぞれ適切なものを解答群の中から選び,記号で答えよ。

 (1)国内だけでなく,国外の業者とも取引する必要がある。
 (2)ネットワークの帯域幅が狭いので,データ量は少ない方がよい。
 (3)情報機器,半導体・電子部品,半導体製造,電気通信,物流業界におけるグローバルなサプライチェーンを構築するために必要な技術仕様を策定しているRosettaNet標準にのっとる必要がある。
 (4)商品の種類によっては,色やサイズなど商品に固有な情報が追加で必要となる可能性がある。追加される情報は,現時点では予測できない。

解答群
ア CSV
イ XML
ウ どちらとも言えない
正解は、
(1) ウ
(2) ア
(3) イ
(4) イ です。

18-SW問3-P10

正解は、
(1) イ
(2) ウ
(3) ア です。


18-SW問3-P11
正解は、
a 注文明細
b <注文
   発注者 = "ABC商事"
   発注年月日 = "2006-10-20"
   希望納期 = "2006-10-31" >
c <注文明細>
d </注文明細> です。

問7 WebSocketによって実現できるのはどれか。

ア JavaScriptで記述されたプログラムをバックグラウンドで動作させること
イ Webページで映像や音声を再生すること
ウ Webページにビットマップ形式のデータを描画すること
エ クライアントのWebブラウザとサーバ間で双方向の通信をすること
正解は、エです。

スポンサードリンク

このページのトップヘ