Microsoft PowerPoint - 03BNFScanner-print.ppt
|
|
|
- せとか もちやま
- 6 years ago
- Views:
Transcription
1 コンパイラ理論 3 BNF と EBNF の復習そして構文解析へ 3 章問題の把握ステップ 1 櫻井彰人 と文法 と EBNF 言語仕様 プログラムと言語仕様との関係 コンパイラ入門 C# で学ぶ理論と実践 より 3.2 BNF(Backus Naur Form) 文法 を記述する表記法 コンピュータ言語を表す為に使われることが多い 英文法 単語と単語の構成 関係を表す 5 文型は単語の品詞から英文の型を表現している プログラム言語の文法 プログラムの最小構成要素の構成 関係を表す 変数 キーワード オペレータなどの関係 代入文の 1abc= =abc どちらが正しい? 3.2 BNF の定義 ターミナル ( 終端記号 ) ノンターミナル ( 非終端記号 ) で < > と表記する 左辺と右辺はターミナルとノンターミナルの集合体 左辺 ::= 右辺 本書では左辺はノンターミナルだけに制限する 例題 < 文 > ::= < 主語 > < 動詞 > < 目的語 > < 主語 > ::= I < 動詞 > ::= Love < 目的語 > ::= You ::= は置き換えるという意味 以後 を使用 3.2 BNF の定義 を用いて出来ること 例題 文法に合致した文字列を生成 ( 導出という ) すること 文字列が文法に合致しているかどうかを 識別 すること ステップ 1~ 先頭 と定義したものから開始 ~ < 文 > ステップ2~< 文 >を< 主語 >< 動詞 >< 目的語 >によって置き換えよう~ < 主語 >< 動詞 >< 目的語 > ステップ3~< 主語 >は I によって置き換えよう~ I < 動詞 >< 目的語 > ステップ 4~< 動詞 > は Love によって置き換えよう ~ I Love < 目的語 > ステップ5~< 目的語 >は You によって置き換えよう~ I Love You ステップ6~< 文 >から I Love You を生成した~ 数 1 文字以上の数字からなる連なり <number> <digit> <number1> <number1> ε <digit> <number1> 注 : (OR) は選択を示す ( 次スライド参照 ) 生成 ( 識別 ) できる数の例 生成 ( 識別 ) できない数の例 -123( マイナスは定義されていない ) abc( 数字ではないものあり )
2 <number> <digit> <number1> <number1> ε <digit> <number1> ( 上記の記述と同義 ) <number> <digit> <number1> <digit> 0 <digit> 1 <digit> 2 <digit> 3 <digit> 4 <digit> 5 <digit> 6 <digit> 7 <digit> 8 <digit> 9 <number1> ε <number1> <digit> <number1> 構文解析木 開始から生成完了! に到る BNF( 右辺と左辺 ) を表したもの 1 を識別した場合の構文解析木 <number> <digit> 1 <number1> ε 13 の識別した場合の構文解析木 <number> <digit> 1 <number1> <digit> 3 <number1> ε ε( エプシロン ) の意味 空文字列 空白ではなく 本当に ない ことを表す 生成時には何も生成されないし 識別時には その場所に何もなくてよいことを表す 構文解析木の表記について 木としての形が一致していればどんな形式でもかまわない 下記の解析 木 は同じ意味 横書きの場合 (13 を生成した場合 ) <number> <digit> 1 <number1> <digit> 3 <number1> ε 縦書きの場合 (13を生成した場合) <number> <digit> <number1> 1 <digit> <number1> 3 ε 3.2 BNF 例 ~ 識別子 識別子 1 文字以上の文字の列で色々な名前として使用される プログラムでは識別子と呼ばれる ( 数字を含んでいいんが 以下では 簡単のため 数字なし ) <ident> <letter> ε <letter> <letter> a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 生成できる識別子の例 a ab, abc, xyz, Hello 生成できない識別子の例 123 abc123( 数字は用いないと 定義している ) 3.2 BNF 例 ~ 識別子 Ab を生成 ステップ 1: <ident> ステップ 2: <ident> <letter> ステップ 3: <ident> <letter> A ステップ 4: <ident> <letter> A <letter> ステップ 5: <ident> <letter> A <letter> b ステップ 6: <ident> <letter> A <letter> b ε 3.3 BNF と EBNF EBNF Extended BNF( 拡張された BNF) よりコンパクトに記述できる ( ) によるグルーピング まとめて書ける * による0 回以上の繰り返し 再帰呼び出しが省略できる場合がある +による1 回以上の繰り返し 再帰呼び出しが省略できる場合がある [ ] により択一の選択 εを使わずに書ける まとめて書ける
3 3.3 EBNF~( ) と * ( 識別子 ) <ident> <letter> ε <lettter> <digit> <letter> 前例と同じ ( 英小文字 英大文字 ) <digit> 前例と同じ (0~ 字 数値 ) 同等の EBNF <ident> <letter> ( <letter> <digit> )* ( ) の効果 ( <letter> <digit> ) によって 2 つの非終端記号をまとめて記述 * の効果 ( <letter> <digit> )* により の再帰呼び出しが不要 3.3 EBNF~[ ] <program> MODULE <ident> ; <additional> END <ident>. <additional> ε <decllist> ( 変数宣言の仕方を記述する非終端記号 ) 同等の EBNF <program> --> MODULE <ident> ; [ <decllist> ] END <ident>. 例題 1~ 変数宣言が無いということと [ ] 内が選択されなかったことが対応する MODULE PROGRAM; ~ここに変数宣言が無い~ 例題 2~ 変数宣言があるということは [ ] 内が選択されたということ MODULE PROGRAM; VAR I, J, K : INTEGER; 3.3 EBNF~+ <decllist> VAR <decilist1> <decllist1> <identlist> : <type> ; <decllist2> <decllist2> ε <decilist1> 同等の EBNF <decllist> -->VAR ( <identlist> : <type> ; )+ 例題 1~<decllist> が + により 1 回選択された場合 ( 前ページの例題 2). 例題 2~ 変数宣言は1 回以上何回書いてもよい ( この例では3 回 ) MODULE PROGRAM; VAR I, J, K : INTEGER; VAR a, b : INTEGER; VAR z, z, x, y, z : INTEGER; 3.4 言語仕様 = プログラムの設計図 <ident> <letter> ( <letter> <digit> )* <identlist> <ident> (, <ident> )* <type> INTEGER STRING <statement> <ident> := <expression> <ident> "(" <literal> ") <relation> <expression> <rel op> <expression> <expression> <unary op> ] <term> ( <add op> [ <unary op> ] <term> )* <term> <factor> ( <mul op> <factor> )* <factor> <literal> "(" <expression> ") <literal> <ident> <integer> <string> <integer> <digit>+ <rel op> = < <= <> > >= <unary op> + - <add op> + - <mul op> * / <string> " <any character except EOF, EOL and "> <letter> a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 3.4 言語仕様の説明 3.4 言語仕様の説明 <program> は変数定義と文から構成される <program> MODULE <ident> ; [ <decllist> ] <statlist> END <ident>. <identlist> <ident> (, <ident> )* <type> INTEGER STRING 変数定義例 VAR I,J,K: INTEGER; 文例 WriteStr( HelloWorld! ) <statement> <ident> := <expression> <ident> "(" <literal> ") <ident> による識別子 ~ 先頭が英字で2 文字目以降は英数字 <ident> <letter> ( <letter> <digit> )* <letter> a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <string> は と で囲まれた文字 但し EOF, EOL, は除く <string> " <any character except EOF, EOL and "> EOL(End Of Line)~2 行にまたがれない EOF(End Of File)~ファイルの終わりまで継続できない 例 : Hello World!, Input N>, etc <integer> による数値 ~1 桁以上の数値 <integer> <digit>+ 普通の識別子定義
4 3.4 言語仕様の説明 (2/3) <unary op> は符号 <unary op> + - <add op> は加減演算 <add op> + - <mul op> は乗除演算 <mul op> * / 比較演算子 <rel op> = (EQ) < (LT) <= (LE) <> (NE) > (GT) >= (GE) 符号は演算子として定義するのが普通 3.4 言語仕様の説明 (3/3) <literal> は <ident> か <integer> か <string> <literal> <ident> <integer> <string> <expression> は符号と加減乗除付の <literal> の式 ( 再帰的に定義 ) 例 1:1+2*3 ( 加算 乗算 ) 例 2:-1+-2*-3 ( 符号付 ) 例 3:(1+2)*3 ( 括弧付の式 ~ 加算優先 ) 例 4:(((1))) <expression> [ <unary op> ] <term> ( <add op> [ <unary op> ] <term> )* <term> <factor> ( <mul op> <factor> )* <factor> <literal> "(" <expression> ") <relation> は比較式 ~ 式と式を比較演算子で結合 例 :123<234 <relation> <expression> <rel op> <expression> リテラル とは字面通りとか書かれた通りといった意味 意味のある最小単位というものを呼ぶときによく用いられる言葉である 3.5 言語仕様とプログラム 字句解析と構文解析 トークンの提供 プログラム MODULE HelloWorld; WriteStr ( "Hello World! ) END HelloWorld. プログラムと言語仕様の対応 MODULE <ident> ; <statlist> <statement> <ident> ( <literal> ) END <ident>. ソースプログラム 字句解析 トークンの要求 構文解析 記号表 相当する言語仕様 ( 該当する部分のみ ) <statement> <ident> "(" <literal> ") なぜ分けるか? 字句解析を構文解析から分ける理由 : 字句 の定義は 正規文法でできる 簡単な道具で済ませられるところは 簡単にすませよう! 設計が単純になる 効率 ( 速度等 ) の向上が図れる 可搬性がます字句解析 構文解析それぞれによいツールが存在する トークン 字句 パターン (Tokens, Lexemes, Patterns) トークンは キーワード (if, for, long,...) 演算子 (+,*,...) 識別子 定数 文字列 区切り記号を含む 字句が属すクラスのことをいう字句は 文字のある列であって ソースプログラム内で意味をもつ最小の単位パターンは (Lex で用いるが ) あるトークンの生成規則
5 5 章語彙 ( ごい ) 定義ステップ 3 入力 言語仕様 出力 トークン定義 ( 一覧 チャート ) 5.1 トークン プログラム MODULE HelloWorld; WriteStr( Hello World! ) END HelloWorld. トークンとはプログラムの最小構成要素文章だと 単語 に相当プログラムだと トークン と言われる トークン MODULE HelloWorld ; WriteStr ( "Hello World! ) END HelloWorld. コンパイラ入門 C# で学ぶ理論と実践 より 5.1 トークン トークンは言語仕様の中で定義されている 1 < 規則 >で定義されているもの~ 識別子 数 文字列 2 予約語 ~MODULE INTEGERなど 3 その他の記号 ~2 文字 (<> :=) 1 文字 (;.) など で使われているシンボルとの違いに注意 例 1 <ident> は規則で定義 ( 先頭が英字で 2 文字目以降は英数字 ) 例 2 MODULE,, END 等 プログラムの予約語例 3 ; や. など埋め込まれている文字 <ident> <letter> ( <letter> <digit> )* <letter> a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 5.2 語彙定義 < 規則 > で定義されているトークン 識別子 ( 先頭は英字 2 文字目以降は英数字 ) 数 (1 桁 (1 文字 ) 以上の数字 ) 文字列 ( と に囲まれた文字 ~ 但し 1 行以内のもの ) <ident> <letter> ( <letter> <digit> )* 識別子 <integer> <digit>+ 数 <string> <any character except EOF, EOL and > 文字列 <letter> a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 5.2 語彙定義 予約語 プログラムの中で予め決められている文字列 予約語は識別子として使えないことに注意 <type> INTEGER STRING <statement> <ident> := <expression> <ident> "(" <literal> ") 5.2 語彙定義 (3/3) その他の記号 区切り記号 演算子 言語によっては英数字を使うことがある 人間が読みやすいように 特殊な記号を用いることが多い <identlist> <ident> (, <ident> )* <statement> <ident> := <expression> <ident> "(" <literal> ") <relation> <expression> <rel op> <expression> <expression> <unary op> ] <term> ( <add op> [ <unary op> ] <term> )* <term> <factor> ( <mul op> <factor> )* <factor> <literal> "(" <expression> ") <rel op> = < <= <> > >= <unary op> + - <add op> + - <mul op> * /
6 5.2 トークン一覧 5.2 トークン識別チャート 構文解析プログラムが書きやすいようにチャート化 5.3 規則の仕分け 字句解析用 パーサでは使用しない 定義済みとして考える <ident> <letter> ( <letter> <digit> )* <integer> <digit>+ <string> <any character except EOF, EOL and > <letter> a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 5.3 新しい言語仕様 <program> MODULE IDENT ; [ <decllist> ] <statlist> END IDENT. <identlist> IDENT (, IDENT )* <type> INTEGER STRING <statement> IDENT := <expression> IDENT "(" <literal> ") <relation> <expression> <rel op> <expression> <expression> [ <unary op> ] <term> ( <add op> [ <unary op> ] <term> )* <term> <factor> ( <mul op> <factor> )* <factor> <literal> "(" <expression> ") <literal> IDENT NUMBER STR <rel op> = < <= <> > >= <unary op> + - <add op> + - <mul op> * /
7 先回の練習問題 1. 関数呼び出しを含む 式の定義を BNF または EBNF で書いてください 2. 数 の定義も行ってください 整数だけで結構です ただし 負の整数も定義してください 注意点は 例えば 2+( 3) は正しいのですが 2+ 3 は正しくないようにしてください 参考 式式 + 項 項項項 * 因子 因子因子数 ( 式 ) 先回お見せしたスライド 式式 + 項 項項項 * 因子 因子因子数 ( 式 ) 関数名 ( 引数の並び ) 関数名 識別子この括弧は 終端記号引数の並び 引数 引数, 引数の並び引数??? + では書けない! 引数の並び 引数 (, 引数 )* 式 式 (+ -) 項 この括弧は 非終端記号 式式 + 項 項項項 * 因子 因子因子数 ( 式 ) 関数名 ( 引数の並び ) この括弧は 終端記号とは書かない 関数名 識別子引数の並び 引数 引数, 引数の並び引数 式引数の並び ε 引数, 引数の並び も OK 引数のない関数を許す場合 皆さんは "<" と ">" を用いて ちゃんと書いてください 私は サボりますが 数の定義 数数数字 数字数字 ゼロが先頭に来る 数 を 数 にしたくなければ 数 0 0 以外の数字 0で始まるかもしれない数 0で始まるかもしれない数 0で始まるかもしれない数 0で始まるかもしれない数数字 数字数字 以外の数字 負の数の作り方 1( 負の数だけを定義すると長くなる 短い版 ) 数符号付き数 符号なし数符号なし数符号なし数数字 数字符号付き数符号なし数 (+ 符号付き数 ) ( - 符号付き数 ) 練習問題 練習問題 前のスライドの定義では (+052) や (-033) という具合に 0 が数字列の先頭に来てもよいことになっている これをなくすにはどうすればよいか? EBNF の括弧と終端記号の括弧とが区別がつかない ( 先週は をつけてコメントみたいに書いたら 誤解された?) どうしたらよいか? Ruby の if は右のように定義されている ( 制御構造の項 ) 普通の BNF か EBNF で定義してください なお Ruby では 式 は式の並びを表し 式の並びは 式を < 改行 > か ; で区切って並べて作ります if 式 [then] 式... [elsif 式 [then] 式... ]... [else 式... ] end
PowerPoint プレゼンテーション
コンパイラとプログラミング言語 第 3 4 週 プログラミング言語の形式的な記述 2014 年 4 月 23 日 金岡晃 授業計画 第 1 週 (4/9) コンパイラの概要 第 8 週 (5/28) 下向き構文解析 / 構文解析プログラム 第 2 週 (4/16) コンパイラの構成 第 9 週 (6/4) 中間表現と意味解析 第 3 週 (4/23) プログラミング言語の形式的な記述 第 10 週
情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤
情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤 2017.12.7 前回の演習問題の解答例 1. 四則演算のできる計算機のプログラム ( 括弧も使える ) 2. 実数の扱える四則演算の計算機のプログラム ( 実数 も というより実数 が が正しかったです ) 3. 変数も扱える四則演算の計算機のプログラム ( 変数と実数が扱える ) 演習問題 1 で行うべきこと
Microsoft Word - Javacc.docx
JavaCC 実習レポート課題について以下の実習のために コンパイラのページ http://www.info.kindai.ac.jp/compiler/ から javacc.zip をダウンロードしてください javacc.zip は以下のファイルから成ります javacc/ sample0.k, sample1.k, samplell2.k : k 言語の例プログラム sample0.asm,
Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕
Java Script プログラミング入門 3-6~3-7 茨城大学工学部情報工学科 08T4018Y 小幡智裕 3-6 組み込み関数 組み込み関数とは JavaScript の内部にあらかじめ用意されている関数のこと ユーザ定義の関数と同様に 関数名のみで呼び出すことができる 3-6-1 文字列を式として評価する関数 eval() 関数 引数 : string 式として評価する文字列 戻り値 :
情報工学実験 C コンパイラ第 2 回説明資料 (2018 年度 ) 担当 : 笹倉 佐藤
情報工学実験 C コンパイラ第 2 回説明資料 (2018 年度 ) 担当 : 笹倉 佐藤 2018.12.13 コンパイラ作成実験 非常に難しい. まず コンパイラを実装すること自体が難しい. コンパイラを指して 人工知能 と呼んだ時代もあった. 難しさは 抽象的なアイデアを元に具体的な実装を行うことにある. クヌースはこれを 計算機科学的な考え方 と呼び できる人の存在比率は 1/50 だと述べている.
Microsoft PowerPoint - 3.ppt [互換モード]
3. プッシュダウンオートマトンと文脈自由文法 1 3-1. プッシュダウンオートマトン オートマトンはメモリがほとんど無かった この制限を除いた機械を考える 理想的なスタックを利用できるようなオートマトンをプッシュダウンオートマトン (Push Down Automaton,PDA) という 0 1 入力テープ 1 a 1 1 0 1 スタッb 入力テープを一度走査したあと ク2 入力テプを度走査したあと
文法と言語 ー文脈自由文法とLR構文解析2ー
文法と言語ー文脈自由文法とLR 構文解析 2 ー 和田俊和資料保存場所 http://vrl.sys.wakayama-u.ac.jp/~twada/syspro/ 前回までの復習 最右導出と上昇型構文解析 最右導出を前提とした場合, 上昇型の構文解析がしばしば用いられる. 上昇型構文解析では生成規則の右辺にマッチする部分を見つけ, それを左辺の非終端記号に置き換える 還元 (reduction)
PowerPoint プレゼンテーション
講座を行う前に 自己紹介 僕と上回生について 1 年生同士で少しお話しよう! オリエンテーションの宿題 アルゴロジック http://home.jeita.or.jp/is/highschool/algo/index3.html どこまでできましたか? あまりできなかった人はこれから全部クリアしよう! 2016 年度 C 言語講座 第一回目 2016/6/11 fumi 今回の目標 プログラムを書いて実行するやり方を覚える
オートマトンと言語
オートマトンと言語 回目 4 月 8 日 ( 水 ) 章 ( 数式の記法, スタック,BNF 記法 ) 授業資料 http://ir.cs.yamanashi.ac.jp/~ysuzuki/public/automaton/ 授業の予定 ( 中間試験まで ) 回数月日 内容 4 月 日オートマトンとは, オリエンテーション 4 月 8 日 章 ( 数式の記法, スタック,BNF) 3 4 月 5 日
このルールをそのまま正規表現として書くと 下記のようになります ^A[0-9]{2}00[0-9]{3}([0-9]{2})?$ ちょっと難しく見えるかもしれませんが 下記のような対応になっています 最初 固定 年度 固定 通番 ( 枝番 ) 最後 ルール "A" 数字 2 桁 0 を 2 桁 数字
正規表現について 作成日 : 2016/01/21 作成者 : 西村 正規表現? 正規表現 (Regular Expression Regex) というと難しいもののように感じますが 正規表現 というのは 文字のパターンを表したもの です ( 例 ) これはソエルで使用している見積書の番号です A1500033 この番号は 下記のルールで付けられています 固定 年度 固定 通番 ( 枝番 ) ルール
コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n
コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n を入力してもらい その後 1 から n までの全ての整数の合計 sum を計算し 最後にその sum
プログラミング実習I
プログラミング実習 I 03 変数と式 人間システム工学科井村誠孝 [email protected] 3.1 変数と型 変数とは p.60 C 言語のプログラム中で, 入力あるいは計算された数や文字を保持するには, 変数を使用する. 名前がついていて値を入れられる箱, というイメージ. 変数定義 : 変数は変数定義 ( 宣言 ) してからでないと使うことはできない. 代入 : 変数には値を代入できる.
PowerPoint Presentation
プログラミング基礎 第 2 週 (4,5,6 回 ) 2011-10-07 出村公成 この資料の再配布を禁止します 予定 プログラミング入門 (45 分 ) 変数 入出力 分岐 演習 (90 分 ) タッチタイプ練習 統合開発環境 Codeblocksの使い方 教科書例題の打ち込みと実行 プログラミング入門 C 言語の簡単な例を体験 変数 入出力 分岐 プログラムの例リスト 2.1 改 #include
char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く
変数 入出力 演算子ここまでに C 言語プログラミングの様子を知ってもらうため printf 文 変数 scanf 文 if 文を使った簡単なプログラムを紹介した 今回は変数の詳細について習い それに併せて使い方が増える入出力処理の方法を習う また 演算子についての復習と供に新しい演算子を紹介する 変数の宣言プログラムでデータを取り扱う場合には対象となるデータを保存する必要がでてくる このデータを保存する場所のことを
Java講座
~ 第 1 回 ~ 情報科学部コンピュータ科学科 2 年竹中優 プログラムを書く上で Hello world 基礎事項 演算子 構文 2 コメントアウト (//, /* */, /** */) をしよう! インデントをしよう! 変数などにはわかりやすい名前をつけよう! 要するに 他人が見て理解しやすいコードを書こうということです 3 1. Eclipse を起動 2. ファイル 新規 javaプロジェクト
PowerPoint プレゼンテーション
2018/10/05 竹島研究室創成課題 第 2 回 C 言語演習 変数と演算 東京工科大学 加納徹 前回の復習 Hello, world! と表示するプログラム 1 #include 2 3 int main(void) { 4 printf("hello, world! n"); 5 return 0; 6 } 2 プログラム実行の流れ 1. 作業ディレクトリへの移動 $ cd
書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf
情報処理基礎 C 言語についてプログラミング言語は 1950 年以前の機械語 アセンブリ言語 ( アセンブラ ) の開発を始めとして 現在までに非常に多くの言語が開発 発表された 情報処理基礎で習う C 言語は 1972 年にアメリカの AT&T ベル研究所でオペレーションシステムである UNIX を作成するために開発された C 言語は現在使われている多数のプログラミング言語に大きな影響を与えている
(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド
メソッド ( 教科書第 7 章 p.221~p.239) ここまでには文字列を表示する System.out.print() やキーボードから整数を入力する stdin.nextint() などを用いてプログラムを作成してきた これらはメソッドと呼ばれるプログラムを構成する部品である メソッドとは Java や C++ などのオブジェクト指向プログラミング言語で利用されている概念であり 他の言語での関数やサブルーチンに相当するが
PowerPoint プレゼンテーション
計算機実習 Ⅰ FORTRAN 担当 2018.05.29 本日の課題 プログラムの基本ルールを理解し 以下が含まれるプログラムを作成する (1) 文法の基礎 ( フローチャートなど ) (2) 変数宣言 (3) 入出力 (4) 四則演算 (5) 組込関数 (6) 判定文 (7) リダイレクション PROGRAM MAIN INTEGER I, J, K REAL A, B, C CHARACTER
JavaプログラミングⅠ
Java プログラミング Ⅰ 2 回目 ようこそ Java へ 今日の講義で学ぶ内容 画面へのメッセージの表示 文字や文字列 数値を表現するリテラル 制御コードを表すエスケープシーケンス 画面出力の基本形 ソースファイル名 : クラス名.java class クラス名 System.out.println(" ここに出力したい文字列 1 行目 "); System.out.println(" ここに出力したい文字列
新版 明解C++入門編
第 1 章画面 出力 入力 C++ C++ C++ C++ C++ C++ C++ C++ #include using C++ C++ C++ main C++ C++ C++ int double char C++ C++ C++ string C++ C++ C++ 21 1-1 C++ 歴史 C++ C++ 歴史 CC with classes Fig.1-1 C C++ Simula 67
Microsoft PowerPoint - CproNt02.ppt [互換モード]
第 2 章 C プログラムの書き方 CPro:02-01 概要 C プログラムの構成要素は関数 ( プログラム = 関数の集まり ) 関数は, ヘッダと本体からなる 使用する関数は, プログラムの先頭 ( 厳密には, 使用場所より前 ) で型宣言 ( プロトタイプ宣言 ) する 関数は仮引数を用いることができる ( なくてもよい ) 関数には戻り値がある ( なくてもよい void 型 ) コメント
JavaプログラミングⅠ
Java プログラミング Ⅰ 6 回目 if 文と if else 文 今日の講義で学ぶ内容 関係演算子 if 文と if~else 文 if 文の入れ子 関係演算子 関係演算子 ==,!=, >, >=,
文字列操作と正規表現
文字列操作と正規表現 オブジェクト指向プログラミング特論 2018 年度只木進一 : 工学系研究科 2 文字列と文字列クラス 0 個以上の長さの文字の列 Java では String クラス 操作 文字列を作る 連結する 文字列中に文字列を探す 文字列中の文字列を置き換える 部分文字列を得る 3 String クラス 文字列を保持するクラス 文字列は定数であることに注意 比較に注意 == : オブジェクトとしての同等性
ExcelVBA
EXCEL VBA REGLECASSE YU SATO 目次 はじめに 開発タブの表示 拡張子 VBEの起動と初期設定 モジュールの挿入 削除 プロジェクト モジュール プロシージャ 変数の宣言 (Dim) If~Then For~Next 応用 :If~ThenとFor~Next ボタンの作成 最後に Subプロシージャ 基本説明 セルの指定 (Range) 変数とデータ型 (String,Long)
C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ
C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 次のステップによって 徐々に難易度の高いプログラムを作成する ( 参照用の番号は よくわかる C 言語 のページ番号 ) 1. キーボード入力された整数 10 個の中から最大のものを答える 2. 整数を要素とする配列 (p.57-59) に初期値を与えておき
Microsoft Word - VBA基礎(6).docx
あるクラスの算数の平均点と理科の平均点を読み込み 総点を計算するプログラムを考えてみましょう 一クラスだけ読み込む場合は test50 のようなプログラムになります プログラムの流れとしては非常に簡単です Sub test50() a = InputBox(" バナナ組の算数の平均点を入力してください ") b = InputBox(" バナナ組の理科の平均点を入力してください ") MsgBox
JavaプログラミングⅠ
Java プログラミング Ⅰ 12 回目クラス 今日の講義で学ぶ内容 クラスとは クラスの宣言と利用 クラスの応用 クラス クラスとは 異なる複数の型の変数を内部にもつ型です 直観的に表現すると int 型や double 型は 1 1 つの値を管理できます int 型の変数 配列型は 2 5 8 6 3 7 同じ型の複数の変数を管理できます 配列型の変数 ( 配列変数 ) クラスは double
第 2 章 PL/SQL の基本記述 この章では PL/SQL プログラムの基本的な記述方法について説明します 1. 宣言部 2. 実行部 3. 例外処理部
はじめに コース概要と目的 Oracle 独自の手続き型言語である PL/SQL について説明します PL/SQL の基本構文 ストアド サブプログラム トリガーの作成方法 またストアド サブプログラムの管理について習得することを目的としています 受講対象者 これから PL/SQL を使用してアプリケーション開発をされる方 前提条件 SQL トレーニング コースを受講された方 もしくは 同等の知識をお持ちの方
オートマトン 形式言語及び演習 1. 有限オートマトンとは 酒井正彦 形式言語 言語とは : 文字列の集合例 : 偶数個の 1 の後に 0 を持つ列からなる集合 {0, 110, 11110,
オートマトン 形式言語及び演習 1 有限オートマトンとは 酒井正彦 wwwtrscssinagoya-uacjp/~sakai/lecture/automata/ 形式言語 言語とは : 文字列の集合例 : 偶数個の 1 の後に 0 を持つ列からなる集合 {0, 110, 11110, } 形式言語 : 数学モデルに基づいて定義された言語 認識機械 : 文字列が該当言語に属するか? 文字列 機械 受理
コンパイラとは プログラミング言語 ( 高級言語 ) で書かれたプログラムを入力し, コンピュータが実行できる言語 ( 機械語など ) に変換するプログラムのこと例 : gcc コンパイラは対応する言語によって複雑である場合もあるし単純である場合もある 本実験では簡単な言語のコンパイラを作成する
情報工学実験 C コンパイラ (2016 年度 ) 担当 : 笹倉 佐藤 2016.12.7version コンパイラとは プログラミング言語 ( 高級言語 ) で書かれたプログラムを入力し, コンピュータが実行できる言語 ( 機械語など ) に変換するプログラムのこと例 : gcc コンパイラは対応する言語によって複雑である場合もあるし単純である場合もある 本実験では簡単な言語のコンパイラを作成する
講習No.1
プログラムはどこに保存され, どこで実行されるのか? 復習 ハードディスク キーボード Central Processing Unit 例えば i7, ARM, Cortex-A17 ディスプレイ 例えば 4G バイト メモリ プログラムは, ワープロ文章などと同様, ハードディスクなどにファイルとして保存されている. プログラムは, メモリ上に呼び出されて ( ロード ) 実行される. プログラムの作成
Microsoft PowerPoint - 5Chap15.ppt
第 15 章文字列処理 今日のポイント 15.1 文字列処理の基本 strcpy strcat strlen strchr などの使い方をマスターする strcpy はなんて読むの? 普通はストリングコピー C のキーワードの読み方に悩んだら下記サイトを参考 ( 前回紹介とは別サイト ) http://www.okakogi.go.jp/people/miwa/program/c_lang/c_furoku.html
オートマトン 形式言語及び演習 3. 正規表現 酒井正彦 正規表現とは 正規表現 ( 正則表現, Regular Expression) オートマトン : 言語を定義する機械正規表現 : 言語
オートマトン 形式言語及び演習 3. 酒井正彦 www.trs.css.i.nagoya-u.ac.jp/~sakai/lecture/automata/ とは ( 正則表現, Regular Expression) オートマトン : 言語を定義する機械 : 言語を記号列で定義 - 記述しやすい ( ユーザフレンドリ ) 例 :01 + 10 - UNIX の grep コマンド - UNIX の
sinfI2005_VBA.doc
sinfi2005_vba.doc MS-ExcelVBA 基礎 (Visual Basic for Application). 主な仕様一覧 () データ型 主なもの 型 型名 型宣言文字 長さ 内容 整数型 Integer % 2 バイト -32,768 32,767 長整数型 Long & 4 バイト -2,47,483,648 2,47,483,647 単精度浮動小数点数 Single 型!
<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>
C 言語講座第 2 回 作成 : ハルト 前回の復習基本的に main () の中カッコの中にプログラムを書く また 変数 ( int, float ) はC 言語では main() の中カッコの先頭で宣言する 1 画面へ出力 printf() 2 キーボードから入力 scanf() printf / scanf で整数を表示 / 入力 %d 小数を表示 / 入力 %f 3 整数を扱う int 型を使う
02: 変数と標準入出力
C プログラミング入門 基幹 7 ( 水 5) 13: 構造体 Linux にログインし 以下の講義ページを開いておくこと http://www-it.sci.waseda.ac.jp/ teachers/w483692/cpr1/ 2016-07-06 1 例題 : 多角形の面積 n = 5 (5 角形 ) の例 n 1 n 1 1 p 1 T 0 S = i=0 p 0 T i = i=0 2
Si 知識情報処理
242311 Si, 285301 MS 第 12 回 竹平真則 [email protected] 2015/12/21 1 本日の内容 1. 先週のおさらい 2. PHP のスクリプトを実際に動かしてみる 3. RDB についての説明 2015/12/21 2 資料の URL http://peacenet.info/m2is 2015/12/21 3 注意事項 ( その
PowerPoint プレゼンテーション
プログラミング応用演習 第 2 回文字列とポインタ 先週のパズルの解説 答え : 全部 p a 1 図の書き方 : p+1 は式であって その値を格納する記憶場所を考えないので 四角で囲まない 2 p+1 同じものを表すいろいろな書き方をしてみましたが パズル以上の意味はありません プログラム中に書くときは p+1 が短くていいんじゃないかな p+1 は 2 の記憶場所 p[1] は 2 に格納されている値
4 月 東京都立蔵前工業高等学校平成 30 年度教科 ( 工業 ) 科目 ( プログラミング技術 ) 年間授業計画 教科 :( 工業 ) 科目 :( プログラミング技術 ) 単位数 : 2 単位 対象学年組 :( 第 3 学年電気科 ) 教科担当者 :( 高橋寛 三枝明夫 ) 使用教科書 :( プロ
4 東京都立蔵前工業高等学校平成 30 年度教科 ( 工業 ) 科目 ( プログラミング技術 ) 年間授業計画 教科 :( 工業 ) 科目 :( プログラミング技術 ) 単位数 : 2 単位 対象学年組 :( 第 3 学年電気科 ) 教科担当者 :( 高橋寛 三枝明夫 ) 使用教科書 :( プログラミング技術 工業 333 実教出版 ) 共通 : 科目 プログラミング技術 のオリエンテーション プログラミング技術は
解答編 第 9 章文字データの取り扱い 演習問題 9.1 文法事項 1 ) コンピュータにおける 文字データの取り扱いについて説明しなさい コンピュータでは 文字に整数の番号を割り当てて ( コード化して ) 文字コードとして扱います 実際に用いられる文字コードとして ASCII コード EUC コ
解答編 第 9 章文字データの取り扱い 演習問題 9.1 文法事項 1 ) コンピュータにおける 文字データの取り扱いについて説明しなさい コンピュータでは 文字に整数の番号を割り当てて ( コード化して ) 文字コードとして扱います 実際に用いられる文字コードとして ASCII コード EUC コード JIS コード SJIS コードなど 様々な規格が存在します 2 ) C 言語の文字型は整数型の一種と考えられるが
