1

Similar documents
プログラミング基礎I(再)

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

Microsoft PowerPoint - prog03.ppt

JavaプログラミングⅠ

デジタル表現論・第4回

Javaによるアルゴリズムとデータ構造

DVIOUT-exer

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

Java講座

Microsoft PowerPoint - lec06 [互換モード]

文字列操作と正規表現

プログラミング実習I

Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲

Microsoft PowerPoint ppt

PowerPoint プレゼンテーション

Prog1_6th

Javaプログラムの実行手順

問題1 以下に示すプログラムは、次の処理をするプログラムである

オブジェクト指向プログラミング・同演習 5月21日演習課題

Microsoft PowerPoint - prog04.ppt

プログラミング入門1

JAVA とテンプレート

プログラミング入門1

JavaプログラミングⅠ

Method(C 言語では関数と呼ぶ ) メソッドを使うと 処理を纏めて管理することができる 処理 ( メソッド ) の再実行 ( 再利用 ) が簡単にできる y 元々はC 言語の関数であり 入力値に対する値を 定義するもの 数学では F(x) = 2x + 1 など F(x)=2x+1 入力値 (

JavaプログラミングⅠ

8 / 0 1 i++ i 1 i-- i C !!! C 2

スライド 1

gengo1-11

Prog1_10th

2

プログラミングA

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

JAVA入門

Microsoft PowerPoint - 3.ppt [互換モード]

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

JavaプログラミングⅠ

Microsoft Word - problem3.doc

論理と計算(2)

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

PowerPoint プレゼンテーション

JavaプログラミングⅠ

デジタル表現論・第6回

論理と計算(2)

メソッドのまとめ

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 条件判断文 3 switch 文 switch 文式が case の値と一致した場合 そこから直後の break; までを処理し どれにも一致しない場合 default; から直後の break; までを処理する 但し 式や値 1

JavaプログラミングⅠ

Microsoft Word - Javacc.docx

Week 1 理解度確認クイズ解答 解説 問題 1 (4 2 点 =8 点 ) 以下の各問いに答えよ 問題 bit 版の Windows8.1 に Java をインストールする時 必要なパッケージはどれか 但し Java のコンパイルができる環境をインストールするものとする 1. jdk

微分方程式 モデリングとシミュレーション

本サンプル問題の著作権は日本商工会議所に帰属します また 本サンプル問題の無断転載 無断営利利用を厳禁します 本サンプル問題の内容や解答等に関するお問 い合わせは 受け付けておりませんので ご了承ください 日商プログラミング検定 STANDARD(Java) サンプル問題 知識科目 第 1 問 (

JavaプログラミングⅠ

PowerPoint プレゼンテーション

IT プロジェクト

Microsoft PowerPoint - CproNt02.ppt [互換モード]

PowerPoint プレゼンテーション

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

メディプロ1 Javaプログラミング補足資料.ppt

Java言語 第1回

Javaの作成の前に

ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする ) ためには 同期処理を用いるこ とが必要になる 同期処理は 予約語 synchronized で行うことができる ここでは sy

2

GEC-Java

Prog2_9th

(Microsoft PowerPoint - \223\306\217KJAVA\221\346\202R\224\ ppt)

Microsoft PowerPoint ppt

cp-7. 配列

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?


Microsoft PowerPoint ppt

memo

解答上の注意 1 解答は 解答 紙の問題番号に対応した解答欄にマークしなさい 2 選択肢は 問ごとに 意されています 問 1の選択肢は 問 2で使 しません 3 選択肢は量が多いため 探しやすさの観点よりグループ分けされています グループ分けに合わせて解答欄が区切られていますが 横 1 列で問題 1

** 平成 16 年度 FE 午後問題 Java** 示現塾プロジェクトマネージャ テクニカルエンジニア ( ネットワーク ) など各種セミナーを開催中!! 開催日 受講料 カリキュラム等 詳しくは 今すぐアクセス!! 平成 16

2

GEC-Java

Microsoft PowerPoint ppt

Javaセキュアコーディングセミナー東京 第3回 入出力(File, Stream)と例外時の動作 演習解説

プログラミング基礎

スライド 1

問題 01 以下は コンソールより年齢を入力させ その年齢にあった料金を表示するプログラムである 年齢ごとの金額は以下の通りである 年齢の範囲金額 0 歳以上 6 歳以下 120 円 7 歳以上 65 歳未満 200 円 65 歳以上無料 package j1.exam02; import java

Microsoft PowerPoint - ruby_instruction.ppt

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

K227 Java 2

10K

新・明解Javaで学ぶアルゴリズムとデータ構造

memo

リファレンス,配列 例外処理

PowerPoint Presentation

基本情報STEP UP演習Java対策

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac

Microsoft PowerPoint - Pro110111

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

Microsoft PowerPoint - prog09.ppt

/*Source.cpp*/ #include<stdio.h> //printf はここでインクルードして初めて使えるようになる // ここで関数 average を定義 3 つの整数の平均値を返す double 型の関数です double average(int a,int b,int c){

オートマトンと言語

< F2D B838A835882CC8CF68EAE2E6A7464>

情報処理Ⅰ

Transcription:

2 章 1 整数を一つ読み込み, その階乗を計算する RAM プログラムを書け f (n) = n! ( n 0) 何でもよい ( n<0) [ 解答 ] RAM プログラム コメント load #1 {y=1; store 1 read 2 loop: load 2 jgtz skip jump exit skip: load 1 mult 2 store 1 load 2 sub #1 store 2 jump loop {x=n; {if (x>0) goto skip; {y=y*x; {x=x-1; exit: write 1 2 整数を一つ読み込み, 素数かどうか判定する RAM プログラムを書け g (n) = 1 ( n は素数である ) 0 (n は素数でない ) [ 解答 ] のヒント 次の C プログラムと同等の RAM プログラムを書く int main(void) { int x, y, out; out=0; scanf ("%d", &x); if (x==0) goto exit; if (x>0) goto skip; x=x*(-1); skip: if (x==1) goto exit; y=x-1; loop: if (y==1) {out=1; goto exit; if (x%y==0) goto exit; y=y-1; goto loop; exit: printf ("ans%d n", out); 1

3 pred, iszero, true, 0, 1 を 2.3.2 項で定義した式 λ とする つぎの書換え系列が存在することを 示せ (1) iszero 0 * true [ 解答 ] (1) iszero 0 = (λ x.x (true (false) ) true) 0 β 0 (true (false) ) true = (λ x.λ y.y) (true (false) ) true β (λ y.y) true β true 従って,iszero 0 * true 4 S = λx.λy.λz.xz(yz) K = λx.λy.x B = λx.λy.λz.x(yz) I = λx.x とするとき, つぎの書換え系列が存在することを示せ S(KI) * I BI * I S(KS)K * B SKK * I [ 解答 ] S(KI) = (λ x.λ y.λ z.xz(yz) ) (KI) β λ y.λ z.(ki)z(yz) =λ y.λ z.(λ x.λ y.x)i z(yz) β λ y.λ z.(λ y.i)z(yz) =λ y.λ z.(λ y.λ x.x)z(yz) β λ y.λ z.(λ x.x) (yz) β λ y.λ z.yz η λ y.y α λ x.x=i 従って,S(KI) * I BI β λ y.λ z.i (yz) β λ y.λ z.yz η λ y.y α I S(KS)K * λ z.(ks)z(kz) * λ z.(λ y.s)z(λ y.z) β λ z.s(λ y.z) * λ z.λ y.λ z.(λ y.z)z (y z ) β λ z.λ y.λ z.z(y z ) α * B SKK * λ z.kz(kz) * λ z.(λ y.z) (λ y.z) β λ z.z α I 2

6 二つのリスト (S 1 S 2 S m ), (T 1 T 2 T n ) を入力として受け取り, 合成したリスト (S 1 S 2 S m T 1 T 2 T n ) を返す関数 APPEND を LISP で書け [ 解答 ] (APPEND (LAMBDA (x y) (COND ( (NULL x) y) (T (CONS (CAR x) (APPEND (CDR x) y) ) ) ) ) ) 7 f (X, g(x)) と f (3, g(y)) を単一化をしなさい [ 解答 ] 単一化代入 θ={3/x, 3/Y 8 Prolog でフィボナッチ数を計算するプログラムを作成しなさい ただし, フィボナッチ数とは fib(0)=fib(1)=1, fib(n)=fib(n-1)+fib(n-2) となる関数 fib で返される数である ただし,n は 2 以 上の整数である [ 解答 ] fib(0, 1). fib(1, 1). fib(n, A) :- N >=2, N1 is N -1, fib(n, a1), N2 is N -2, fib(n2, A2), A is A1+A2. 9 差分プログラムの利点と欠点は何か [ 解答 ] 利点 : 差分のみの作成なので, プログラムの作成量が減少する プログラミングの指針として, 差分化することを与える 欠点 : 差分化を制御する部分はオブジェクト指向言語の処理系によって暗黙的に動作する部分があるため, 人間にとって動作が把握しにくい 3

3 章 1 L 1 ={a n b m n m 1 とする L 1 を生成する CF 文法を与えよ [ 解答 ] G 1 =(N={S, Σ={a, b, P={S as, S asb, S ab, S) 2 L 2 ={ω ω {0, 1 *,ω 中に現れる 0 と 1 の個数は等しい は CF 言語であることを示せ [ 解答 ] G 2 =(N={S, Σ={0, 1, P={S ε, S 0S1S, S 1S0S, S) L(G 2 )=L 2 の証明は省略 3 L 3 ={a n b m c m, a n b n c m n, m 1 とする L 3 を生成する CF 文法を与え, つぎに終端記号列 abc の 解析木をすべて求めよ [ 解答 ] G=({S, A, B, C, D, {a, b, c, P, S) ただし,P={S AB S CD S S A aa C acb A a C ab A B C D B bbc D cd B bc D c a b c a b c 4 例 3.4 の式 (3.6) の生成規則を用いて,num 1 -num 2 * num 3 num 4 num 5 の解析木を与えよ [ 解答 ] E 1 E 2 E 2 - E 3 E 3 E 3 * E 4 E 4 E 4 E 5 E 4 E 5 E 5 num 3 E 5 E 4 num 1 num 2 num 4 E 5 num 5 5 および 6 [ 解答 ] 31) などのコンパイラの文献を参照されたい 4

4 章 2 C 言語のプログラム中で i と a はつぎのように宣言されている int i, a[10][5] ; つぎの式は左辺値を持つか否かを調べよ (1) i++ (2) (i) (3) a (4) a[0] (5) (a[3]+2)[1] [ 解答 ] (1) のみ左辺値を持たない 5 例 4.15 中の文の並び i:=2 ; A[2]:=3 ; A[3]:=4 ; swap(i, A[i]) ; の実行において, 手続きを値呼出 し, 変数呼出し, 名前呼出しで実行したとき, 実行結果を比較せよ [ 解答 ] 値呼出しのとき,(i, A[2], A[3]) = (2, 3, 4) 変数呼出しのとき,(i, A[2], A[3]) = (3, 2, 4) 名前呼出しのとき,(i, A[2], A[3]) = (3, 3, 2) となる 6 例 4.18 の C プログラム中の関数 f の定義の 2 行目をつぎのように代入文 n=n+1; を追加して得 られたプログラムの実行結果を求めよ int x ; int x ; n=n+1; [ 解答 ] 出力値 19 7 つぎの C プログラムの実行結果を示せ また, その理由を説明せよ int x, y; void f (int *a) { *a=*a+3; void g (int *b) { f(b); x=x+1; void h (int y) { if (y>1) {h(y-1); x=(x+3)*y; int main (void) { x=1; y=2; h (y+1); printf ("%d t%d n ", x, y); x=3; y=4; g (&y); printf ("%d t%d n ", x, y); [ 解答 ] 出力値 33 2 4 7 5

8 つぎの C プログラムの実行結果を示せ int x; void f (int y) { int a; if (y>0) {a=x+y; f (y-1); x=(a-2)*x; int main (void) {x=3; f (3); printf ("%d n", x); [ 解答 ] 出力値 72 6

5 章 1 5.2 節のスタック IStack を Java の Vector を使って実装しなさい Vector はパッケージ java.util にあり, メソッドとして最後に要素 element を加える add(object element),vector のサイズを返す size( ), 指定された位置 position の要素を削除する remove(int position) がある [ 解答 ] import java.util.vector; class VectorStack implements IStack { Vector <Object> vector; VectorStack ( ) { vector=new Vector <Object> ( ); public void push (Object element) { vector.add (element); public Object pop ( ) { return vector.remove (vector.size ( )-1); 2 オブジェクト指向のクラスと継承を使って, 円 Circle と楕円 Ellipse を操作するプログラムを作成 しなさい 操作として面積を求める操作 getareasize を定義しなさい [ 解答 ] class Ellipse { int radius1; int radius2; Ellipse ( ) { Ellipse (int radius1, int radius2) { this.radius1=radius1; this.radius2=radius2; double getareasize ( ) { return java.lang.math.pi * radius1 * radius2; public class Circle extends Ellipse { Circle (int radius) { radius1=radius2=radius; 7

3 コンポジションの考えを用いて, 楕円と円のプログラムを作成しなさい 操作として面積を求める 操作 getareasize を定義しなさい [ 解答 ] class Ellipse { int radius1; int radius2; Ellipse ( ) { Ellipse (int radius1, int radius2) { this.radius1=radius1; this.radius2=radius2; double getareasize ( ) { return java.lang.math.pi * radius1 * radius2; public class Circle { Ellipse ellipse; Circle (int radius) { ellipse=new Ellipse (radius, radius); double getareasize ( ) { return ellipse.getareasize ( ); 4 つぎの Java プログラムでクラス C から直接アクセスできるフィールドは, どのクラスのどのフィー ルドか class A {int x; int y; int z; class B extends A {int y; class C extends B {int x; [ 解答 ] クラス C の x, クラス B の y, クラス A の z 8

5 つぎの Java プログラムで返される値はどれか class A { int x=1; int getx ( ) {return x; public class B extends A { int x=2; public static void main (String [ ] args) { System.out.println (new C( ).getx ( ) ); [ 解答 ] 1 クラス A のフィールドが返される 6 つぎの Java プログラムで返される値はどれか class A { void foo( ) {System.out.println ("A.foo( )"); public class B extends A { void foo( ) {System.out.println ("B.foo( )"); public static void main (String [ ] args) { A a=new B ( ); System.out.println (a.foo( ) ); [ 解答 ] B.foo( ) 9

6 章 2 N を非負整数の集合とする N = N { N とする 関係 N N N はつぎの条件 (a)~ (c) をみたす (a) x N N N x (b) x, y N x N y x=y (c) x N x N N x= N そのとき, つぎの問いに答えよ (4) ( {f i i 0) (x)=x!( ただし,x N) であることを示せ ここで,f i は (3) で定義された関 数である [ 解答 ] (4) の解答の概略 i, x N に対して,f i (x) = x! (x < i のとき ) N (x i のとき ) であることを数学的帰納法で証明する 3 Hoare の論理を用いて, つぎの表明が定理であることを示せ {n 0 x=n; y=n; while (y>0) {y=y-1; x=x+y; {x=n * (n+1)/2 [ 解答の概略 ] ループ不変表明 A をつぎのように定義する y * (y-1) n * (n+1) A=(x+ = ) (y 0) 2 2 つぎの表明が定理であることを示す {A while (y>0) {y=y-1; x=x+y; {A y 0 10