exec.dvi

Similar documents
yacc.dvi

cpp1.dvi

cpp2.dvi

Condition DAQ condition condition 2 3 XML key value

1-4 int a; std::cin >> a; std::cout << "a = " << a << std::endl; C++( 1-4 ) stdio.h iostream iostream.h C++ include.h 1-4 scanf() std::cin >>

double 2 std::cin, std::cout 1.2 C fopen() fclose() C++ std::fstream 1-3 #include <fstream> std::fstream fout; int a = 123; fout.open( "data.t

cpp4.dvi

r07.dvi

ohp07.dvi

解きながら学ぶJava入門編

6-1

K227 Java 2

lexex.dvi

A/B (2018/10/19) Ver kurino/2018/soft/soft.html A/B

SystemC言語概論

C言語によるアルゴリズムとデータ構造

untitled

( ) ( ) lex LL(1) LL(1)

untitled

1 1.1 C 2 1 double a[ ][ ]; 1 3x x3 ( ) malloc() malloc 2 #include <stdio.h> #include

programmingII2019-v01


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

Java演習(4) -- 変数と型 --

r02.dvi

ohp02.dvi

r03.dvi

ohp07.dvi

() / (front end) (back end) (phase) (pass) 1 2

design_pattern.key

1 1.1 C 2 1 double a[ ][ ]; 1 3x x3 ( ) malloc() 2 double *a[ ]; double 1 malloc() dou

listings-ext

ohp03.dvi

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

# let st1 = {name = "Taro Yamada"; id = };; val st1 : student = {name="taro Yamada"; id=123456} { 1 = 1 ;...; n = n } # let string_of_student {n

ML Edinburgh LCF ML Curry-Howard ML ( ) ( ) ( ) ( ) 1

compiler-text.dvi

( ) ( ) 30 ( ) 27 [1] p LIFO(last in first out, ) (push) (pup) 1

やさしいJavaプログラミング -Great Ideas for Java Programming サンプルPDF

: : : TSTank 2

Java (7) Lesson = (1) 1 m 3 /s m 2 5 m 2 4 m 2 1 m 3 m 1 m 0.5 m 3 /ms 0.3 m 3 /ms 0.6 m 3 /ms 1 1 3

Jacques Garrigue

¥×¥í¥°¥é¥ß¥ó¥°±é½¬I Exercise on Programming I [1zh] ` `%%%`#`&12_`__~~~ alse

10/ / /30 3. ( ) 11/ 6 4. UNIX + C socket 11/13 5. ( ) C 11/20 6. http, CGI Perl 11/27 7. ( ) Perl 12/ 4 8. Windows Winsock 12/11 9. JAV

PL : pl0 ( ) 1 SableCC ( sablecc ) 1.1 sablecc sablecc Étienne Gagnon [1] Java sablecc sablecc ( ) Visitor DepthFirstAdapter 1 (Depth

新版明解C言語 実践編

mstrcpy char *mstrcpy(const char *src); mstrcpy malloc (main free ) stdio.h fgets char *fgets(char *s, int size, FILE *stream); s size ( )

ex01.dvi

PowerPoint Presentation

3.1 stdio.h iostream List.2 using namespace std C printf ( ) %d %f %s %d C++ cout cout List.2 Hello World! cout << float a = 1.2f; int b = 3; cout <<

Java Java Java Java Java 4 p * *** ***** *** * Unix p a,b,c,d 100,200,250,500 a*b = a*b+c = a*b+c*d = (a+b)*(c+d) = 225

untitled

II ( ) prog8-1.c s1542h017%./prog8-1 1 => 35 Hiroshi 2 => 23 Koji 3 => 67 Satoshi 4 => 87 Junko 5 => 64 Ichiro 6 => 89 Mari 7 => 73 D

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

class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value =

新コンフィギュレータのフレームワークについて

I ASCII ( ) NUL 16 DLE SP P p 1 SOH 17 DC1! 1 A Q a q STX 2 18 DC2 " 2 B R b

明解Java入門編

# let rec sigma (f, n) = # if n = 0 then 0 else f n + sigma (f, n-1);; val sigma : (int -> int) * int -> int = <fun> sigma f n ( : * -> * ) sqsum cbsu

A/B (2018/06/08) Ver kurino/2018/soft/soft.html A/B

r08.dvi

2017_08_ICN研究会_印刷用

B's Recorderマニュアル_B's Recorderマニュアル

B's Recorderマニュアル

double float

ohp08.dvi

haskell.gby

(1/2) 2/45 HPC top runner application programmer PC-9801F N88-BASIC Quick BASIC + DOS ( ) BCB Windows Percolation, Event-driven MD ActionScript Flash

Microsoft Word - C言語研修 C++編 3.doc

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

class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value =

Java (5) 1 Lesson 3: x 2 +4x +5 f(x) =x 2 +4x +5 x f(10) x Java , 3.0,..., 10.0, 1.0, 2.0,... flow rate (m**3/s) "flow

/* do-while */ #include <stdio.h> #include <math.h> int main(void) double val1, val2, arith_mean, geo_mean; printf( \n ); do printf( ); scanf( %lf, &v

ALG ppt

monad.gby

II 3 yacc (2) 2005 : Yacc 0 ~nakai/ipp2 1 C main main 1 NULL NULL for 2 (a) Yacc 2 (b) 2 3 y

Java (9) 1 Lesson Java System.out.println() 1 Java API 1 Java Java 1

untitled

TopLink å SampleClient.java... 5 Ò readallsample() querysample() cachesample() Ç..

2

11夏特集号初校.indd

8 if switch for while do while 2

For_Beginners_CAPL.indd

fp.gby

新・明解Java入門

解きながら学ぶC++入門編

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

226

Parametric Polymorphism

VB.NETコーディング標準

program.dvi

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

新版 明解C++入門編

VDM-SL VDM VDM-SL Toolbox VDM++ Toolbox 1 VDM-SL VDM++ Web bool

とても使いやすい Boost の serialization

橡Pro PDF

ML λ λ 1 λ 1.1 λ λ λ e (λ ) ::= x ( ) λx.e (λ ) e 1 e 2 ( ) ML λx.e Objective Caml fun x -> e x e let 1

Program Design (プログラム設計)

ex01.dvi

ジョインポイント写像に基づく ドメイン特化AO機構の開発手法

Transcription:

2018 c 6, Mini-C C++ 6211 611, 61, print,,, (run ),,, (int ), 7, x, x "a" 3 "b" 4 "x" 10 (, ), x STL map 1 + 2, 1 2,, x = ;, 1, 2 x { 1 ; 2 ; ; m, if ( ) { 1 else { 2, 1,, 2 0, 1, 3 0, 2,,, main 6 1

,, Mini-C 62 621 (Exp constant) 61 7 x Exp constant::run 1 run, Expression run virtual int run( std::map<std::string,function*>& func, std::map<std::string,int>& gvar, std::map<std::string,int>& lvar ) const = 0; // (1) // // (2) // // (3) //, asth Expression class ( virtual void print ), run 3, ( ) (1), ( ) (2), ( ) (3), ( ) 2, Exp constant run, (value() 1 ),, asth (void print ) int run( std::map<std::string,function*>& func, std::map<std::string,int>& gvar, std::map<std::string,int>& lvar ) const { return value(); 3 map,asth <map>, std::map<std::string,function*> class Function, Function*, #include<map> class Function; 4, Exp function run 2 asth class Exp function int run( std::map<std::string,function*>& func, std::map<std::string,int>& gvar, std::map<std::string,int>& lvar ) const; 1 value 2 St function Exp function, Exp function run, 6 2

, astcpp, int Exp function::run( std::map<std::string,function*>& func, std::map<std::string,int>& gvar, std::map<std::string,int>& lvar ) const { return 0; //, ( 65 ) 5, // 51 Expression* c1 = new Exp constant(type INT, 7); Expression* c2 = new Exp constant(type CHAR, x ); // std::cout << c1->run(func, gvar, lvar); std::cout<<std::endl; std::cout << c2->run(func, gvar, lvar); std::cout<<std::endl; 7 120 x OK (, ) 622 (Exp variable) 62 a x, Exp variable::run 1 asth class Exp variable, run 2 astcpp Exp variable::run, (1),, (2),, (3),, (1) std::map<std::string,int>::const iterator p; if ((p=lvarfind(name()))!=lvarend()) { return p->second; 3 6 3

, Expression* v a = new Exp variable("a"); Expression* v n = new Exp variable("n"); Expression* v x = new Exp variable("x"); Expression* v p = new Exp variable("p"); // 3 // lvar["a"] = 4; lvar["x"] = 2000; gvar["x"] = -95; gvar["n"] = 10; // std::cout << v a->run(func,gvar,lvar); std::cout<<std::endl; std::cout << v n->run(func,gvar,lvar); std::cout<<std::endl; std::cout << v x->run(func,gvar,lvar); std::cout<<std::endl; std::cout << v p->run(func,gvar,lvar); std::cout<<std::endl; 4 a ( ) 10 n ( ) 2000 x ( ) undefined variable p OK 623 (Exp operation1) 63 + - Exp operation1::run 1, (operand()) run, (operation()),, 3, Operator MINUS, -3, operand() NULL (, assert ) 2 // 503 Expression* v = new Exp variable("n"); Expression* o = new Exp operation1(operator MINUS, v); // lvar["n"] = 31; std::cout << o->run(func, gvar, lvar); std::cout<<std::endl; n=31 -n, -31 OK 6 4

624 (Exp operation2) 64 1 + 2 Exp operation2::run 1 2 // 504 Expression* v = new Exp variable("n"); Expression* c1 = new Exp constant(type INT, 1); Expression* o1 = new Exp operation2(operator PLUS, v, c1); Expression* c2 = new Exp constant(type INT, 2); Expression* o2 = new Exp operation2(operator MUL, o1, c2); // lvar["n"] = 31; std::cout << o1->run(func, gvar, lvar); std::cout<<std::endl; std::cout << o2->run(func, gvar, lvar); std::cout<<std::endl; n=31, o1=n+1 o2=o1*2, 32 64 OK 625 (Exp function) 65 gcd(a,b+5) getint() Exp function::run 1 astcpp Exp function::run (1), ; (2) if ( "getint") { getint ; (3) else if ( "getchar") { getchar ; (4) else if ( "putint") { putint ; (5) else if ( "putchar") { putchar ; (6) else { ; (1) aaa(a+1, b*2, 5), (a+1, b*2, 5), a=3, b=5,, (4, 10, 5) ( ) args() run, std::list<int> i args (2) getint, (name()) "getint", std::cin, 6 5

int i; std::cin >> i; return i; (2) getchar getint, (3) putint putint, Exp function, St function Exp function,, i args 1 std::cout int i = i argsfront(); // std::cout << i; return 0; (4) putchar putint (5) func, f ( ), f run run, func, gvar, i args std::map<std::string,function*>::const iterator p; else { if ((p=funcfind(name()))!=funcend()) { Function* f = p->second; return f->run(func,gvar,i args); else { Function::run 612,, asth class Function, int run( std::map<std::string,function*>& func, std::map<std::string,int>& gvar, std::list<int>& i args ) const;, astcpp 1 6 6

int Function::run( std::map<std::string,function*>& func, std::map<std::string,int>& gvar, std::list<int>& i args ) const { return i argsfront(); // 2 6 05cpp, &, getint(); getchar(); putint(5); putchar( U ); asum(n);, n = 7 626 (St assgin), 66 St assgin::run 1 run, Statement run virtual Return t run( std::map<std::string,function*>& func, std::map<std::string,int>& gvar, std::map<std::string,int>& lvar ) const = 0; run, func, gvar, lvar run, a=b+3;, return, while(i<n) { if (n%r==0) return r; i++;, return, return,, run, return, return, run int, 2 Return t, (asth #include ) 6 7

struct Return t { ; bool val is returned; // return (true/false) int return val; // return, Return t() : val is returned(false), return val(0) { Return t(bool r, int v) : val is returned(r), return val(v) { C++, struct class,, private, class, public, struct, return Return t(false,0), return 7 Return t(true,7) Return t rd, return, rdval is returned true rdreturn val 2 asth St assign run Statement 3 3 astcpp St assign::run (1), NULL assert(lhs()); assert(rhs()); (2) (rhs()) run, (i rhs ) (3) (lhs()), i rhs Exp variable,,, (4), return return Return t(false,0); 4 // i = 0; (506 ) Exp variable* v1 = new Exp variable("i"); Expression* c1 = new Exp constant(type INT, 0); Statement* s1 = new St assign(v1,c1); // std::cout << "before" <<std::endl; // i 5 lvar["i"] = 5; Return t rd = s1->run(func, gvar, lvar); std::cout << "i = " << lvar["i"] <<std::endl; i = 5 i = 0;, i = 0 OK 3 = 0 6 8

627 (St list) 67 St list::run 1, iterator run, return,, return, Return t(false,0) for (std::list<statement*>::const iterator it = statements()begin(); it!= statements()end(); it++) { assert(*it); // NULL Return t rd = (*it)->run(func, gvar, lvar); // if (rdval is returned) return rd; // return, rd return Return t(false,0); // return 2 // 507 // s = 0; Exp variable* v1 = new Exp variable("s"); Expression* c1 = new Exp constant(type INT, 0); Statement* s1 = new St assign(v1,c1); // i = -n; Exp variable* v2 = new Exp variable("i"); Exp variable* v3 = new Exp variable("n"); Expression* e1 = new Exp operation1(operator MINUS, v3); Statement* s2 = new St assign(v2,e1); std::list<statement*> slist; slistpush back(s1); slistpush back(s2); Statement* s3 = new St list(slist); // lvar["s"] = 123; lvar["i"] = 456; lvar["n"] = 5; Return t rd = s3->run(func, gvar, lvar); std::cout << "s = " << lvar["s"] <<std::endl; std::cout << "i = " << lvar["i"] <<std::endl; std::cout << "n = " << lvar["n"] <<std::endl;, s=123, i=456, n=5, s = 0; i = -n;, OK 6 9

s = 0 i = -5 n = 5 628 if (St if) 68 if St if::run 1, condition(), (0 ) then part(), else part(), else part() (, then part() ) 4, then part() run rd rdval is returned true then part() return, rd else part(), Return t(false,0) ( St list, ) 2, Statement* s = make if(); // // lvar["i"] = -5; lvar["s"] = 10; Return t rd1 = s->run(func, gvar, lvar); std::cout << "s = " << lvar["s"] <<std::endl; // lvar["i"] = 7; lvar["s"] = 10; Return t rd0 = s->run(func, gvar, lvar); std::cout << "s = " << lvar["s"] <<std::endl; if (i<0) s = s - i; else s = s + i; s=10, i=-5 s=10, i=7, OK s = 15 s = 17 629 while (St while) 69 while St while::run 4 condition() NULL, then part() else part() NULL 6 10

1 if 2 Statement* s = make while(); // lvar["i"] = -3; lvar["n"] = 3; lvar["s"] = 0; Return t rd = s->run(func, gvar, lvar); std::cout << "i = " << lvar["i"] <<std::endl; std::cout << "n = " << lvar["n"] <<std::endl; std::cout << "s = " << lvar["s"] <<std::endl; while(i<=n) { if (i<0) s = s - i; else s = s + i; i = i + 1; i=-3, n=3, s=0, OK i = 4 n = 3 s = 12 6210 return (St return) 610 return St return::run 1 assert(value()); int rv = value()->run(func,gvar,lvar); return Return t(true,rv); 2 6 10cpp, &, while(i<=n) { if (i<0) s = s - i; else return s; i = i + 1;, i 0, OK 6 11

i = -3 n = 3 s = 0 rdval is returned = 1 rdreturn val = 6 6211 (St function) 611 St function::run 1 function run, Return t(false,0) 2 std::list<expression*> arglist; arglistpush back(new Exp variable("a")); Statement* s = new St function("putint", arglist); lvar["a"] = -3249; Return t rd = s->run(func, gvar, lvar); a=-3249 putint(a), -3249 OK 6212 (Function) Function::run, func gvar i args (std::list<int>&), lvar, body(func,gvar,lvar), (int ), 612 Function::run return i argsfront(); 1 lvar 6 12

2 (a,b,c), (10,7,23), lvar["a"] = 10; lvar["b"] = 7; lvar["c"] = 23;, lvar args(), i args, 3 x, y, z, lvar["x"] = 0; lvar["y"] = 0; lvar["z"] = 0;, lvar["x"]; lvar["y"]; lvar["z"]; lvar 4 Return t rd = body()->run(func, gvar, lvar); 5, return rdreturn val; 6 Function* function asum = make function asum(); // std::list<int> i arglist; i arglistpush back(3); int r = function asum->run(func, gvar, i arglist); std::cout << r << std::endl; 6 13

int asum(int n) { int s; int i; s = 0; i = -n; while(i<=n) { if (i<0) s = s - i; else s = s + i; i = i + 1; return s; n = 3,, 12 OK 7, std::list<expression*> arglist; arglistpush back(new Exp constant(type INT, 5)); Expression* exp function asum = new Exp function("asum", arglist); func["asum"] = make function asum(); int asum5 = exp function asum->run(func, gvar, lvar); std::cout << "asum(5) = " << asum5 <<std::endl; asum(5);, = 30 OK 6213 (Program) Program::run, Program::run, gvar, func, main, 613 Program::run 1 gvar, vars() gvar Function::run 2 func, funcs() func 3 main std::list<int> iargs; int v = main()->run(func, gvar, iargs); return v; 4 6 14

// std::list<variable*> gvar; std::list<function*> func; gvarpush back(new Variable(Type INT, "g")); funcpush back(make function asum()); Program* p = new Program(gvar, func, make function main()); // p->run();, make function main, main int main() { int a; g = 3; a = asum(g); putint(a);, 12 614 factorcpp prog->print(std::cout);, prog->run(); &, asth astcpp, C++,,,,,, Nagisa ISHIURA 6 15