[パスカル – TUT] 投稿 7: サブルーチン
1. サブプログラムを使用するメリット(CTC)
– プログラムは、各セグメントは、特定の機能を実行する複数のセグメントを有している{ その後、我々は上のCTCのセグメントを行うために使用}
– プログラムでは、, 上がる必要があるセクションがあります, 別の場所で何度も繰り返さ. 人々は通常、複数のCTCプログラムに分類された段落を書き換えることを避けるために
– 1は簡単にメインプログラムにリンクする前に、それの正しさを確認することができますように、CTCのもう一つの便利な使用. したがって、エラーの識別と、プログラムで調整を行うことは、より容易になる.
=> CTCは、プログラムセグメント履行または特定の機能である. ターボパスカルで, 持っている 2 CTCのフォーマット: ファンクションおよびプロシージャ. ファンクションとプロシージャは、CTCである, しかし関数は、関数名を経由してコールに値を返す他の関数の手順は、手順はありませんでした
2. CTCの宣言
– ウィットの構造を想起
PROGRAM Tên_chương_trình; { Tên chương trình} USES ...; {Khai báo thư viện} CONST ...;{Khai báo hằng} TYPE ...;{Khai báo kiểu} VAR ...;{Khai báo biến} Khai báo CTC BEGIN {Chương trình chính} <các lệnh>; END.
宣言の端部に位置するこのように宣言CTC
ザ·. 宣言と関数呼び出し
– 宣言する:
FUNCTION <tên hàm>(Danh sách ác tham số):<Kiểu dữ liệu>; [Khai báo Const, Type, Var] BEGIN <các lệnh trong thân hàm>; <tên hàm>:=<Giá trị>; END;
呼び出されたときに注意は常に関数名の機能に割り当てられた値を可能にすると、値を返す
例: の合計 2 xとyの
Function tong(x,y:integer):integer; {Do có giá trị trả về} var s:integer; begin s:=x+y; tong:=s; end;
– 関数呼び出し
<tên hàm>(danh sách các tham số thực);
例:
トング(4,5);
B. 宣言とプロシージャ·コール
– 宣言する:
PROCEDURE <tên thủ tục>(Danh sách các tham số);{không có giá trị trả về} [Khai báo Const, Type, Var] BEGIN <các câu lệnh>; END;
例:
Procedure inso(n:integer); var i:inteher; Begin for i:=1 to n do write(i:5); end;
– 手続き呼び出し
<tên thủ tục>(danh sách các tham số thực);
例:
INSO(6);
3. グローバル変数とローカル変数
– グローバル変数は、メインプログラムで宣言された変数です. これらの変数は、プログラムの任意の場所で使用し、作業計画の期間中に存在することができます
– ローカル変数 (ローカル変数) 変数は、CTCで宣言されています. これらの変数は、それが宣言されているCTC内で使用されている. CTCの後フォーム変数は、もはや存在しません.
例:
PROGRAM vidu; Var a,b,c:integer; {3 biến toàn cục} PROCEDURE thutuc(n:integer);{n là biến cục bộ} var i:integer; {i là biến cục bộ} begin for i:=1 to 10 do writeln(i); end; BEGIN a:=5;b:=6;c:=8; thutuc( a); thutuc( b); thutuc( c); readln; END.
– 会議の中でグローバル変数と同じ名前のローカル変数がローカル変数に対して実行するマシンを混同してはいけません. グローバル変数は影響を受けません.
4. サブルーチンに引数を渡す方法
– CTCはパラメータを必要としません (後で名前CTC) あなたが直接、またはグローバル変数を使用してそれらを使用しない場合
– あなたは順番に、CTC呼び出しパラメータでパラメータを渡すと入力すると宣言CTCに対応.
例:
Procedure inso(a:integer; ch:char); begin {các lệnh của CTC} end;
{gọi} inso(13,'a'); {lời gọi đúng} inso('a',13); {loi goi sai} inso(13);{lời gọi sai}
– パラメータフォーム (へ) 関数名と宣言手順後のパラメータ.
– パラメータは、コール中に、次のパラメータと手順関数の名前です.
– パラメータ: パラメータは、varキーワードの後に宣言されている. 実引数は、変数が価値がないです. パラメータは、CTCおよびCTCの値が変化するからそれを維持した後に変更することができます.
– 値に参加: varキーワードの後ろに予告ノッチなしのパラメータ. これらのパラメータは、実際の値とすることができる, 定数, 変数. CTCのCTCではなく、オリジナルとその戻り値の終了後に変更されることが価値に参加.
– 関数のパラメータは、参加です, プロシージャのパラメータは、値またはパラメータで渡すことができます.
5. 関数とプロシージャを使用して区別
関数は、関数名を経由してコールに値を返すハム他の手順は、手順はありませんでした.
*機能を使用してください
– 問題が戻るの結果 1 ユニークな値 (スカラー型, 文字列またはポインタ型).
– 計算式におけるCTCへの呼び出し.
*手順を使用します
– 問題の結果は、値または戻り値を返すか、データ型の構造体を返していません (配列, 記録, ファイル)
– コールCTCは計算式ではありません.
注目: ジョブが機能することによって行うことができれば、確か手順で行われます {使用しかし、より複雑な機能} しかし、そう手順を作成したプログラムは、関数によって行われた.
ボーランドパスカルのために 7.0 我々はそのようなプロシージャ·コールを呼び出すことができます. 必ずしも戻り値を取得できません. [オプション]メニューでこれを達成するために >拡大するコンパイラ宣言構文 (拡張構文), またはプログラムで翻訳を導かれるべき {$ X }. ない限り、, コンパイルするとき (タイプF9) パスカルは、エラーメッセージ "エラーになります 122: 無効な変数の参照」.
6. 再帰的なサブルーチンのように
パスカルにおけるCTCは自分自身を呼び出すことができます. いわゆるコール再帰呼び出し
次の例を考えてみましょう:
入力する 1 番号nとn!
I nは知っている! = 1 もし、n = 0の場合にはnは>我々が持っているN = 1!= N.(-1)!
機能のうちのn!
function giai_thua(n:integer):longint; begin if n=0 then giai_thua:=1 else giai_thua:=n*giai_thua(n-1); end;
– 注意:
+ 再帰的な条件付きの終了再帰を使用している場合 (TH縮退). このような状況では、再帰をされ終了n = 0の考える. このプログラムの終わりのための条件が存在しない場合、我々は無限に繰り返されます.
+ 常に再帰呼び出しを持っている, コールgiai_thua上のTHの(-1);
原著: vietsource.net
私が書いています 1 クイズ番組のクイズパスカル. あなたは間違ってないことを選択した場合、プログラムは、文の書き込みでプロシージャを呼び出します(サイキング ! 残念。」);…. trueの場合、反対. そうすることで、それはプロシージャ・コールの先生を可能にするものであるなら、私に聞いてみよう ?
私はちょうど書き、プロシージャを呼び出します.
またthongbao呼ばれたときに呼び出さ例の手順はthongbao TEEBです() RSのみ
先生, eはまた、クイズのVのようなプログラムをしたい巻き込まれる, DAG秘密eはどこから始めればわかりません, 氏のヒント電子サー少しPES, eはあなたに多くの先生に感謝します
もしそうでなければ、この一つのコマンドであります.
確かに、eはまだそれがDC NTNことを想像することはできません; そのfが、それはケースを使用して、繰り返したいです….掘っKO先生の
私はリピートループを使用したいです.
具体的な手順を教えてもらえますか?, 私は混乱しました、先生, あなたが私を助けてくれることを願って; ありがとうございました
ループを使用して質問を繰り返す. 各質問に質問を表示し、回答を選択してもらいます, それで全部です.
先生, eはまた、クイズのVのようなプログラムをしたい巻き込まれる, DAG秘密eはどこから始めればわかりません, 氏のヒント電子サー少しPES, eはあなたの先生に感謝します
クラスに入るのに長い時間がかかりました 8 だから私は簡単に通信します : 次に、if関数を使用する必要があります (条件) それから (コマンド 1) ほかに (コマンド 2);
正しく行われた場合、コマンドを実行します 1 sai thì thực hiện câu lệnh 2;
私は、パラメータとパラメータ・フォームそれ局所的に異なる品種を理解していないと彼はAか. 教科書を書くことで非常に明確ではありません. 先生によると、彼らは真のNTNを理解していません:
最高経営責任者(CEO:
varのx: 整数;
手順vidu1( X: 整数) ;
………. {コード}
それが宣言プライベートVARに局所的であるため、その後、xはパラメータと考えられています, その名前は、CTで直接使用します
最高経営責任者(CEO:
varのx:整数;
手順vidu2( と: 整数);
…… {コード}
スタート
書く(「Nhapのx: 「); readln(X);
vidu2(X);
その後、yはプロシージャの宣言の仮パラメータと呼ばれているが、それは手続きプログラムvidu2の本体に代わりに他の値の唯一の形態を表します。
教師が説明するのに役立つことを望みます
その後、真であることを理解します.
それはsum関数や状態をチェックすることです式ではないとき、私は関数を使用するプログラムを書いているすべての必須科目少なくとも1つの機能は、どのようにA?
例えば、それは彼らの状態を持つ学生のリストを印刷するために開始し、どのようなミドルネームは、私が機能することができ名とどのように先生NTNです?
これだけでは非常にあなたの説明を理解していません.
私はパスカルにちょうど新しいですよ
私はいくつかの非常に有用な記事を見つけました
開発は、オフラインでブログを継続すべきです
私は定期的にブログの先生からのより多くの知識を習得するために監視されます
先生, 著者ホーSiのダム, 胡ハ, ハング・トラン行います, グエン・ダック・ニア, グエン・タン・トゥン, Ngoのアイン・タイットは、ローカル変数は、仮パラメータが含まれていないことを言いました:
VaRのtich: リアル;
機能Luythua(X: リアル; へ: 整数): リアル; {X, kは、パラメータの形式であります}
VAR jを: 整数; {jはローカル変数であります}
スタート
tich:= 1;
jのための:= 1 kにtichを行います:= X * tich;
Luythua:= tich;
より;
スタート
—–
より.
情報教科書の読書クラス 11 (ページ 92, 93, 94) その後、教師のすべてを読んで, 私は疑問に思います: パーティーの下で知ってはいけません?
私は非常にあなたの質問を理解していません.
はい…
私は無視していない非常に興味を持ってtubolパスカルと子供たちは、結果の先生をしている苦しんでいます…? 基本的な知識がほぼ完全に失われました, PT贅沢として今に書き込みます
私は彼らの試験を通じて被害の深刻さを実現しました… 今私は本当にスクラッチ先生から始めたいです
あなたはまさにあなたが最初にすべきことは、それがないことができますしてください?( 子どもたちのレビューは、どこかの先生から開始する基本であります?). はい, 先生は先生を助けてください( はい, 注釈は、今年グレードを追加してください 11 そして私は、学期試験におけるエンドポイントに到達したいです … 新しい足への水のジャンプが間違っています, 私は知っています, しかし、その踊りはまだ立っ以上であります). フィードバックを受け取ることを楽しみにして
ありがとう
こんにちは舞, 少し遅れて、あなたのコメントを読んで本当に申し訳ありません. 今度は、学期の試験を知っているか、彼らの学習指向プログラミングパスカルを持っていますが、肯定的な結果を期待していませんしませんでした.
あなたが尋ねるべきかについて, 最初は何の研究ハイスコアを達成するために、あなたは教科書の基本に振り返ります. それを読み、理解していないところは先生に尋ねることができるかどうか、友人が自分のメールを送ることができます. そして、オンラインを参照することができます (基本的なプログラムについて例えば彼のブログ). だから、あなたの試験のために最善であります.
あなたがより良いプログラミングをしたい場合でも、より多くを学ぶためにしてみてください, 私たちが何をしたいか考えて (このようスネークゲームか何かプログラムとして), 徐々にそれを行うことを学びます. ちょうどあなたがうまくアップすることのように.
ご質問があれば自分にメールしてください.
あなたの健康と学習を望みます.
教師は、子どもたちが入ることサブルーチン方向を書く際に役立ちます 1 文字列と与えます 1 スペースK SIRを除去した後の文字列から得られた文字列? Cô cho bài tập mà e k bt hướng làm 🙁
Gợi ý là dùng vòng lặp for, kiểm tra cái nào là dấu cách thì xóa nó đi. 🙂
Var x,と: Integer;
Procedure TT(ザ·,B:Integer);
Var x,と: Integer;
ベギン
X:= 3; と:= 4;
終わり;
ベギン
X:=5; と:=6;
TT(X,と);
書く(X,と);
終わり.
教師はKQを説明するためのおかげで
手順TTと 2 変数x, 上記のように、それは値によって渡されます, 手順は代わりに注がれている場合はその手順を降りた後、変数が値を保持しています. したがって、xおよびyに残っ得 5 と 6
ここで、x:Integer;
手順TINH;
ここで、x:Integer;
ベギン
X:= 1; X:= X + 12;
終わり;
X開始:= 10; ESSENTIAL; のwriteln(X); 終わり.
この質問を再度し、KQ? なぜ= 10バックKQ CTCで変数を宣言します
グローバル変数とサブルーチン名に回転すると、サブルーチンはグローバル変数に何もしないだけでその変数を使用しています. グローバル変数は、サブルーチン内で任意の影響されないことを意味します.
代わりに大井LAM eはギャップ書き込みプログラムは、ネットワークエントリを収集することができます 10 整数と印刷イメージャ
上のEカム
教師は、コーナーの計算のために任意のメッセージをサブルーチンを使用して、子供パスカルプログラミングを助けることができます , どのように先生を行います???
子供は非常に緊急に必要とされています, 対私を助けてください
あなたはSを計算するプログラムを書く必要があるの愛する先生:= 1!+2!+3!+…N! サブプログラムを使用して. 教師の助けを喜ば
あなたは問題の助けが必要? 作成, またはエラー,… ???
夜の道の先生
あなたは書くことができます 1 Xを計算するサブルーチン!, 次に書きます 1 Xに基づいて階乗のサブルーチン合計! 計算しています.
任意の時点での様々なコマンド機能及び手順、って教師?
あなたはアイテムを読みます 5 述べ記事で私はあなたを得ました.
親愛なる先生、あなたはどのように宣言する必要がありCTCに文字列型を宣言したいです?
あなたは、通常のように宣言します, 他のすべてではありません.
先生は私に聞いてみよう, ここでの戻り値は何をしたということでしょうか?.
つまりは、計算後に何かをやっ, 結果を返す関数.
先生, 電子書く必要があります 1 CT、それを実行中にすること 1 ピッカー, 一方、あなたが押した場合 1 キーパッド上の特定の番号は、それが表示されます。 1 CTソリューションや解答. ここでVDピッカーは、画像の領域であります. ダイヤルの場合 1 それは、面積を計算します 1 特定の画像, すなわち、このような:
画像の面積を計算
0. エグジット
1. 三角
2. 長方形
3. 広場
4. 円
あなたは、番号を押した場合 4 それは、円の面積を計算します, 他の人と同様に
あなたが私を助けてくれることを願って, 私は多くの方法を試してみましたが、どれも両方ありません (しかし、今、私はグレードによ 8, 私が経験していません).
私はあなたに感謝します
私は、彼らが何も入力かどうかを確認するために、次に使用され、私が何かを行います.
先生は私がサブルーチン.Thayヘルプ子供のPES A111から宣言する方法を知らないメインプログラムにプログラムを終了作っ
その後、ということであるあなたがそれを呼び出すメインプログラムで.
読み出したファイルとプロデュースセクションINPファイルは個別に、または共同で先生に行われるように、親愛なる先生???
作られます 1 時間を作りますか、 2 時間がプロデュース 1 INP 1 先生アウト???
特にNHE.
パスカルザにASCII垂直バーを修正する方法を依頼します!?
私はあなたを理解していません?
先生,giá trị trả về là gì? Giá trị ko trả về là gì vậy thầy?
là sau khi thực hiện, nó đưa lại kết quả có thể lưu vào 1 biến ko. Bạn đọc lại bài một vài lần nhé.
先生, いつCTCを使うべきか、いつ使わないべきか、先生