Pascal の初心者用の質問・相談所
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
NGNGコンソールのみ。GUI は扱いません。
「Cをやったけど難しいので、やっぱりPascalからぼちぼちやるぅ」という人向け。
コンパイラダウンロード
http://www.vector.co.jp/vpack/filearea/win95/prog/pascal/index.html
ちなみにDelphiは
「モナーの *やさしい* Delphi質問スレ」
http://pc.2ch.net/test/read.cgi/tech/1003113413/
0003デフォルトの名無しさん
NGNGいまいちわかりません。
Pascalは厨房用の言語なんですか?
0004デフォルトの名無しさん
NGNGhttp://www.illy2.f2s.com/jpg/miruna.jpg
0005デフォルトの名無しさん
NGNGC は高級言語と言いながら、実際はかなりハードウエアに近い中級言語です。
メモリー管理とか、ポインターとか、ややこしいことがいろいろあります。
Pascal はもともと教育用として設計されているので、変なことはコンパイラーがエラーとして検出します。
Cは、プログラマーが全知全能であるという仮定で設計されているので、よく知らない人が変なコードを書くとすぐに暴走します。
0006デフォルトの名無しさん
NGNGANSI Cは型チェック厳しいし。
0007デフォルトの名無しさん
NGNG>よく知らない人が変なコードを書くとすぐに暴走します。
とか言っている人はPascalでもヤヴァイと思いますが?
0008デフォルトの名無しさん
NGNGコンパイラーも、なんも文句も言いません。
Pascal では、決してこのようなことはさせません。
0009デフォルトの名無しさん
NGNG最近Delphi触り始めたんすけど、ObjectPascal? なるものが
さっぱりでカナーリ気持ちわるひ
何か初心者本とか読むと
「文法を覚えなくてもアプリを作れるのがdelのいい所」
とか書いてるし。。。。。
もうね、
0010デフォルトの名無しさん
NGNGパスカールたん、、、(´д`;)
0011デフォルトの名無しさん
NGNG>例えばCでは、配列の境界を越えて、値を代入したりすることが平気でできます。
>コンパイラーも、なんも文句も言いません。
purifyくらい買えよ
0012デフォルトの名無しさん
NGNGカンタンに GUI を作れます。
Delphi の質問は、>>1 にも書いてありますが、
「モナーの *やさしい* Delphi質問スレ」
http://pc.2ch.net/test/read.cgi/tech/1003113413/
こちらでしたほうが、迅速に回答が得られます。
ここは GUI を扱わない、コンソールのみの Pascal スレッドとします。
0013デフォルトの名無しさん
NGNGprogram hello(output); (←セミコロン)
begin
writeln('Hello world !!'); (←セミコロン)
end. (←ピリオド)
これで、画面に、「Hello world !!」と出力することができます。
0014デフォルトの名無しさん
NGNGそういう機能ってTurboPascalでもあったけど、あれってPascal標準の
機能だったのかなぁ?
Cは「中級言語」ってよく言われるけど、C++とPascalだったら、
各種データ構造を扱えるC++の方が「高級」だよな。
0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNGなんのこと言ってるの?
0018デフォルトの名無しさん
NGNG標準。
0019デフォルトの名無しさん
NGNGたぶん>11
0020デフォルトの名無しさん
NGNGbrcc32.exe はリソースコンパイラだけど・・・。
0021デフォルトの名無しさん
NGNG1、配列とポインタと文字列がしっかり区別されている
2、begin / end により比較やループネストをしすぎると行が長くなり
結果、自然に構造化するクセが身につく・・・場合がある
3、制御文が不親切=少なく、機能が貧弱 である為 表記方法に
自由度が少なくなり、結果、同じアルゴリズムなら似たコードと
なり他人(教師が)読みやすい・・・・場合がある
4、宣言について厳格(関数の引数も同じでなければならない等)であり、
他の特性とあわせて、自由度が少ない = コーデングは自然に統一さ
れる = 他人のコードでも読みやすく、Cのように コーデング規則の
ようなのを別に作る必要がない
反面、Modura2/TurboPascal/Delphiでない素のpascalには分割コンパイル
出来ないという玩具レベルと言われる欠点がある。
0022デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNG0024デフォルトの名無しさん
NGNGbegin
writeln(PI);
end.
0025アライグマPasacal
NGNGhttp://www.bloodshed.net/devpascal.html
FreePascal(知っているよね)を内蔵した高度なIDEがFreeで手に入る。
ただしWin32環境専用。エディタはそのままでは日本語が文字化けするが
オプションでフォントを設定すれば問題ない(Terminalの14Pointがおすすめ)
Win2000あたりを使っているなら本家FreePascalをダウンロードするより。こちら
のほうがインストールが簡単で使えるエディタがあるのでいいかも。
ただしマニュアルが貧弱、FreePasalはTurboPasca完全互換&DelphiPascal一部互換
なので本家よりマニュアルをダウンロードして研究すべし。
英語が苦手な人はこちらのサイトで日本語訳が進行中。サイトを丸ごとコピーする
ツールなどを利用してダウンロードすべし。
http://home.interlink.or.jp/~ipfr_cat/index.html
0026アライグマPascal
NGNGすくなく、また標準PascalひいてはTurboPascalを解説する書籍は
ほとんど入手困難になりつつあるので、上記サイトの日本語訳は
ありがたい。
非常にコンパクトなコンソールアプリが作れます。ぜひ試してみて
ください。
0027デフォルトの名無しさん
NGNG賛成できるのは1だけのような…
0028デフォルトの名無しさん
NGNGUnitAとUnitBがともに両者を参照する場合、
Uses節は、両者ともにimplemenntationのUses節を利用するとエラーを回避できると
あるけど何故そうなるのか詳しい参照のルールを知りたいものです。
0029デフォルトの名無しさん
NGNG・interface部でusesしたらusesしたことになる。
・implementation部でusesしてもusesしたことにならない。
と考えると分からない?
0030デフォルトの名無しさん
NGNGこれもコンポーネントぽとりぺたりはサポートしてないのね(T_T)。残念。
それこそがdelphiの(唯一の(ぉ))アドバンテージなのにぃ。
難しいとは思うけど、del自体のコンポの仕掛は
体系だてて作られているわけだから、その体系をなぞれば
互換または類似のフリーソフトも作成可能と思われ。
最適化とかのマジックが必要な個所じゃないし。
…それとも 2way 特許のせいで、作れないの?
0031デフォルトの名無しさん
NGNGつまりもっといいものはできるはず
大体コンポーネントぽとりぺたりと言ってもそのあとはコードは
せこせこ書くわけだし
delphiの肝はDCC32のみ
delphiはコンパイル速度が速いしWWWのライブラリーは最強では?
あとWINAPIで組めば20kbyteで相当できる。
ところでdev-pascalダウンロードしてみたんだけど
サンプルがビルドできん....
なんかリソースエラーとかが出る。ぎょえっ。
ちなみにdelphiとかCとか入れてないマシンなんだけど
cygwinがいるのかなぁ?
0032アライグマPascal
NGNG確かにマウスでGUIをつくれないけど、単純なWindow形式ソフトの
ひな形は作ってくれる。すごくシンプルだからコードガリガリ主義者
にはもってこいのはず。Pascal学習(構造化からOOPまで)に
もってこいと思うけどね。
>http://www.vpascal.com/
かつて有償だったOS/2で有望視されていたDelphiPacal一部互換の
Pascalコンパイラ(フリーでゲット!!)
OS/2、Win32用があります。エディタが使えなかったので、
「1」のリンク先のCpadシリーズで、FreePascal用の利用してみるとよい。
0033アライグマPascal
NGNGcygwinはいりません。必要なものはすべて圧縮ファイルに入っています。
0034デフォルトの名無しさん
NGNG変数の宣言文が分離してるよね、
コンパイラ側から見たらやっぱりどこでも宣言よりはいいんじゃないかなぁ。
あとこのことはインラインアセンブラとリンクさせやすいよね、
つまりアセンブリ言語にはCよりもPASCALのほうが近い
begin endは{}でもいいと思うけれどもね、
レコード型とかクラス型がCだと->なのが.というのがよいと思う
0035デフォルトの名無しさん
NGNGFreePascalやTP互換言語の役目は終わってる。
コンソールアプリ限定であってもDelphiやるのが良いと思う。
# なるべく人的リソースをBorlandに集めたいってのが本音なんだけどね。
0036アライグマPascal
NGNGDelphiはVCLのもつ力を利用する処理系です。
VCLを利用しないならばDelphiを使う意味がほとんどありません。
言語学習が目的であったりとか、使用するマシンが非力であるとか。
コンソールアプリで十分な業務が遂行できるのなら、これらFreeコンパイラ
は大変価値があると思います。
手になじむツールは人それぞれで、どれがベストなのかいろいろ試して
みるのも良い勉強になるとおもっています。
0037デフォルトの名無しさん
NGNGよく擬似コードでPascalちっくで、ブロックはインデントのみって
あるじゃん。ああいう感じ。
0038アライグマPascal
NGNGhttp://www.lazarus.freepascal.org/screenshots.php3?&language=english
FreePacal内蔵のDelphiライクなIDEを搭載しています。GUIはGTK+を
利用しています。
しかし、画面の書き換えが見えるほど動作が遅く、まだまだです。
0039デフォルトの名無しさん
NGNG0040デフォルトの名無しさん
NGNG>あとこのことはインラインアセンブラとリンクさせやすいよね、
>つまりアセンブリ言語にはCよりもPASCALのほうが近い
これはないだろ(^^
0041デフォルトの名無しさん
NGNG0042デフォルトの名無しさん
NGNGCだってインラインアセンブラはあるだろ。
インラインアセンブラがあってもアセンブリ言語に近いとは言わないだろ。
と、3つほど突っ込みドコロを挙げてみる也
0043デフォルトの名無しさん
NGNG0044デフォルトの名無しさん
NGNGだとおもう。昔のベーマガやI/Oに載っていたBASICプログラムの移植を試みたいと
思っている。
0045デフォルトの名無しさん
NGNGFreePascalを頂戴したんですけど、Pascalの解説サイトや本って少ないですね (T-T
丁度SDKをはじめた頃に一緒にC++を勉強したので、同じようになると思ったんだけどなぁ・・・
今はここを読んで統合環境からこちょちょしてます
http://homepage2.nifty.com/okamotoy/objpas/
大学の生協とかに行けばいい本有るかな ^^
0046デフォルトの名無しさん
NGNGCが難しいって言うけど、一体何と比べて難しいの?
ANSI Cの基礎の基礎で挫折するような奴は
どんな言語やっても結局中途半端で終わると思うが・・・
0047デフォルトの名無しさん
NGNG使えない場合があること、例えば
int** i;
は
type pint = ^Integer;
var i: ^pint;
としなくてはいけない。
0049>45
NGNGDelphiはコンソールアプリの開発をフルサポートしてるよ。
デバッガや文法の日本語のオンラインヘルプもあるし。
# 但しPascalとObject Pascalとの切り分けは一切ないけど。
>大学の生協とかに行けばいい本有るかな ^^
大学の図書館に腐るほどあるでしょ。
いまどきあまり借りる人もいないだろうから入手は楽かも。
お勧めの良書は知らないけど、経験的にはずれも少なかったような。
0050デフォルトの名無しさん
NGNGまあ、Dephiが使いたいからって人はわかるんだけどね。
1は、
>「Cをやったけど難しいので、やっぱりPascalからぼちぼちやるぅ」という人向け。
って言ってるだろ。
それがちょっと理解できない。
Cが難しいからPASCALをやってみても、PASCALにもCとは違った意味で難しい点があるんだから
まずは我慢してCを続けるのが本筋。
005145
NGNG>>50は>>1に対する突っ込みだったんですね
それは同感です、どんな言語でも何処かで引っ掛かるのは同じですよね
良く分からないけど、今の学生さんって初めがJavaだったりするんだろうか ^^;
>>49
有難う。
近所の大学に潜入してみます ^^;;
0052デフォルトの名無しさん
NGNGint main(void)
{
FILE *fp;
fp = fopen("mona.txt","w");
if(fp == NULL){
printf("ファイルを開けねーぞ、ゴルア!\n");
return 1;
}else{
printf("思いの丈をブチマいちゃる!\n");
}
fputs(">>1\n",fp);
fputs("Pascalなんて糞言語。",fp);
fputs("逝ってよし!\n",fp);
fclose(fp);
return 0;
}
0053デフォルトの名無しさん
NGNGインストールしてDemosのサンプルアプリ順に触ればいいじゃない
0054デフォルトの名無しさん
NGNGTurboなら i : ^type;で直接指定できたような記憶があるんですが。
0055デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNGソースがついてるから 追いかけたいユニットプロジェクトに追加しておけば
トレースでどこまででも追いかけていける。
STL標準になったC++よりずっと理解し易いよ
0057デフォルトの名無しさん
NGNGアルゴリズムとデータ構造 石畑 清
に、
type list = ↑cell;
cell = record
element : datatype;
next : list;
end;
の↑ってどーいう意味?
0058デフォルトの名無しさん
NGNGpascalコンパイラごときに何万も払えないよ。
0059デフォルトの名無しさん
NGNGポインタ。
TurboPascalではこう書いてた。
type list = ^cell;
0060デフォルトの名無しさん
NGNG160x100のモノクロの画像2枚を切りかえるだけなのに、当時厨房だたおれは、家に帰ってから(以下略)
0061アライグマPascal
NGNG>>なんか36がmisleadしてるようだけど
>>Delphiはコンソールアプリの開発をフルサポートしてるよ。
>>デバッガや文法の日本語のオンラインヘルプもあるし。
misleadの意味がわからないけど、スレッドの流れをおかしな方向へ
持っていっているという意味でしょうか?
自覚していないけど、もしそうならごめんなさい。
Delphiではコンソールアプリが開発できないと言ったということでしょうか?
もしそれなら、私はそんなことは言っていません。
36で言いたかったことは、高度なGUIが必要としないなら、なにもDelphiを
使わなくても別のコンパイラで目的が達成することもできるということです。
486マシンであるとかRAMが8メガしかないといった化石パソコンでも、
言語学習マシンとして再利用することができるということです。
0062アライグマPascal
NGNG>50
>>>「Cをやったけど難しいので、やっぱりPascalからぼちぼちやるぅ」という人向け。
>って言ってるだろ。
>それがちょっと理解できない。
>Cが難しいからPASCALをやってみても、PASCALにもCとは違った意味で難しい点があるんだから
>まずは我慢してCを続けるのが本筋。
「1」は、書いてある通りの思惑でスレッドを立てたのだから、それを
そのまま受け止めてスレッドを展開すべきだと思う。
スレッド設定の理由そのものから批評すると、後のスレッドはどう展開
していくのか分からなくなると思います。
<この後、Cの学習についてスレッドを伸ばすわけにはいかないでしょうし>
<学習する姿勢や心構えを論じるスレッドではなさそうですし・・・>
Delphi云々を書かれている人が多数おられますが、「1」は
>ちなみにDelphiは
>「モナーの *やさしい* Delphi質問スレ」
というように別スレッドを参照して誘導しているので、それに
従うべきだと思います。
0063デフォルトの名無しさん
NGNG>>35はコンソールアプリしか書かないとしても、Delphi/Kylixがいいよ
って言ってるのに
>>36でコンソールアプリで十分ならFreeコンパイラは価値がある
(つまりコンソールアプリにはDelphiは向かないと読める)って言ってるのがmisleadなんでないの?
0064もう1つ
NGNG0065アライグマPascal
NGNG>> (つまりコンソールアプリにはDelphiは向かないと読める)って言ってるのがmisleadなんでないの?
う〜ん。コンソールアプリにはDelphiは向かないというのなら、そのように書きますけど。
BBSではどうしても舌足らずな表現になりやすいので「裏読み」されやすい
表現は避けるようにしていたつもりですが・・・。
(仮に裏読みしてもそんな解釈になるのかしら???)
>俺に言わせると、昔の文法を覚えて、簡単な例題をやってみるくらいじゃ、「言語学習」としてはサミシイ。
最初は簡単な例題かもしれないけど、いずれCで蓄積されたアルゴリズム集の
Pascal移植に手を出すかもしれないじゃないですか(爆
0066デフォルトの名無しさん
NGNGつーか、実際そういう印象を受けた。
0067デフォルトの名無しさん
NGNG006867
NGNGコンパイルはFreePascalの半分以下で終わり
出来上がるサイズもずっと小さかったと思うよ
0069デフォルトの名無しさん
NGNG0070デフォルトの名無しさん
NGNG0071デフォルトの名無しさん
NGNGportableなコードしか書けないような...
0072アライグマPascal
NGNG全角文字だとコンパイルエラーがでるみたい。みなさん気をつけて。
0073デフォルトの名無しさん
NGNGBloodshed Dev-Pascal 1.9
http://download.cnet.com/downloads/0-4003375-100-3121652.html?tag=st.dl.10001-103-1.lst-5-1.3121652
0074デフォルトの名無しさん
NGNGTurbo PASCALとDelphiはいっぱいあるのだけど。
基本文法を解説してある入門書がほしいんだよな。
0075デフォルトの名無しさん
NGNG標準関数(手続き)が載ったリファレンスが欲しい
Delphi買ったので一通り変数型とかプリミティブなアルゴリズムなんかを
コンソールでやろうと思うんだけど、関数が分からんからどうにも勝手が悪いです
近所の本屋さんには超初歩本しか無かったし
全部ShowMessageとInputBoxでやるのは悲しすぎる
Del使いさんはどんな風にステップアプしましたか
いきなりイベントごりごり書いたんだろうか
0076デフォルトの名無しさん
NGNG>Del使いさんはどんな風にステップアプしましたか
0077デフォルトの名無しさん
NGNG途中で送信してしまった。
で、漏れはTurbo Pascal 3.0当時に標準Pascal的なconsole baseの書き方を覚えた。
file型変数をAssignしてReset/Rewriteして云々、
表示はwriteln、入力はreadln...てな感じだよな。
今のDelphiでもconsole applicationにすれば使えるよね。
0078デフォルトの名無しさん
NGNG何かDCC32でIntToStrとかすると「ハァ??」って言われて鬱なんです
Turbo時代の本を探して買えば良いんですね
しかしネットはPascal本の情報少なすぎるです
リファレンスみたいなの買えば当たり外れ無いのかなー
0079デフォルトの名無しさん
NGNGIntToStrはSysUtilsユニットの関数であり、これらはVCLリファレンスにあります
uses SysUtils; してる?
0080デフォルトの名無しさん
NGNGCの方がシンプルじゃん (ー_ー
0081デフォルトの名無しさん
NGNGpascalとcならpascalがシンプル
DelphiとCならCがシンプル
DelphiとC++ならDelphiがシンプル
0082デフォルトの名無しさん
NGNG>pascalとcならpascalがシンプル
どっちもどっちなんじゃ?
この二つじゃ。
0083デフォルトの名無しさん
NGNG文字列や配列の扱いは マシンから見たらcがシンプルだけど人から見たらpascalがシンプル
0084デフォルトの名無しさん
NGNG制御構造だと
Pascal場合
if
case
for
while
repeat..until
Cの場合
if
for
switch
while
do..while
同じようなもんでしょ。
演算子はCの場合、配列とかポインタ関連もすべて演算子の
カテゴリに入ってるから仕様書をみると数が多いように見えるけど
実際に使用すると、Pascalに比べてとくに複雑と感じないし。
008583
NGNGCのfor文は簡素じゃないでしょ?
while文にしてもpascalは論理型しか書けないけど cは数じゃない?
コンパイラ側から見たら 全部が数ってのはシンプルかもしれないけど
型が区別されてる方が人間から見たらシンプルだと思うんだけどなあ
それと cのreturn は文だけど pascalのexitは手続きで予約語じゃないとか
まあ似たようなもんだけどさ
0086デフォルトの名無しさん
NGNGたとえばPascalのforだったら、私は使いはじめのころはどうして
順序型しかつかえないのか、どうしてグローバル変数は使えないのか、
疑問に思いましたし、
ずいぶん慣れてからも to と downto の使い分けで、ケアレスミスを
してました。
PascalとCがどちらがシンプルかってのは、まあ主観の問題ですね。
実際に問題、大差ないと思います。
0087デフォルトの名無しさん
NGNGFreePascalのマニュアルみていたら「Graphユニット」があって線を引いたり
円を描いたりできるみたいです。これってTurboPascalから引き継がれたユニット
だと思う。
問題は「Graphユニットの初期化」ってやつ。
基礎的なことが分かりません。なぜ、このユニットだけは初期化という作業が
必要なのですか?またサンプルコードをみても「何でこんな常套句が必要なのか
わからない」といったコードがあります。そもそも初期化って何????
それから「グラフポートをOpenしたらCloseせよ」って何?
文字色を変えたりするのは「Crtユニット」を使うわけで、そちらはサンプルを
見てもだいたい意味が分かるのですが・・・。
0088デフォルトの名無しさん
NGNG2. 昔はハードウェア毎に異なる(デバイス)ドライバを,アプリケーション毎に読み込んでいたから。
DOS はグラフィックボードの管理はしないのだ。
3. 古いアーキテクチャで作られた物が,現代の人にとって易しいとは限らない。
古けりゃ簡単,ってことなら古文/漢文で苦しむ人はいないよな。
0089デフォルトの名無しさん
NGNGBASICから入った人には文字列でつまずかないだけでもPascalの方がやさしい
・・・と思う
009087
NGNGエラーがでます。integerで宣言されるinitGraphで使用する変数を、shortintで
宣言するとエラーが消えてサンプルアプリができました。あとは少しずつ
手続きや関数を書き足して調べてみます。
0091デフォルトの名無しさん
NGNG>>83 TurboPascal系はレジスタ渡しで関数呼べるのでPascalのほうがマシンよりでは?
0092デフォルトの名無しさん
NGNGなんでファイルをいちいちOpenしたりCloseしたりしなくてはならないのですか?
なんでFindFirstしたらFindCloseしないといけないのとか。
なんでAllocしたらFreeしないといけないのとか。
と似たようなものですな(w
0093アライグマPascal
NGNGWindowプログラムもつくれますよ。
0095デフォルトの名無しさん
NGNGここから Turbo Pascal 5.5 がダウンロードできます。
割れではないです。
0096デフォルトの名無しさん
NGNGTurbo Pascal 5.5 との互換性がどれぐらいあるのか、
誰か説明できる人いないかな?
0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNGObject PascalはTPのほぼスーパーセット。
ライブラリは除く。
0099デフォルトの名無しさん
NGNG何これ?
0100デフォルトの名無しさん
NGNGコンパイル&実行までできました!
あとはTurbo Pascalの本買ってこよ。
Pascal そのものの本はあんまりないけど、Turbo Pascal の本はいっぱいあるし。
010191
NGNGテンプレートそろえてエディターがRADのものがあれば
FreePascalのほうがdelphiよりよさそうですね、
要は一般的なサンプルが少なくて古典的なものばかりだということなんでしょうか
GUIアプリでGLUTあたりをかますものであれば大体なんでもできそう
0102デフォルトの名無しさん
NGNGDelphiは 実行時型情報と
DLL にコンパイルして設計時にも動作するコンポーネントという概念
それをサポートするツールが組み合わさってRADになってるんだから
0103デフォルトの名無しさん
NGNG0104アライグマPascal
NGNGくどいけど、Win32環境でのプログラミングならDev-Pascalを使った方が、
素のFreePascalを使うよりFreePascal&統合開発環境である関係上多少使いやすい
とおもいます。
GUIのためにGTKをつかうひな形が用意されているのですが、GTKをまったく
知らないので私は使いこなせない状況です。
0105デフォルトの名無しさん
NGNG0106デフォルトの名無しさん
NGNG0107デフォルトの名無しさん
NGNG俺はフリパ。
同じく、FreeBSDはフリビ、
でもFreeDOSはそのままフリードス。
0108デフォルトの名無しさん
NGNGみんな7か6対応の本ばっかりで、5対応の本があんまりない。
漏れがダウンロードしたのは5だから、できれば5の本がいい。
それとも、7と5であんまり変わってないなら、7の本を買おうと思うが、そのへんどうなんでしょう。
0109デフォルトの名無しさん
NGNGは4までが対象だけど、これでは古すぎるかな
0110デフォルトの名無しさん
NGNG5.5と7の違いがよくわからん。
0111デフォルトの名無しさん
NGNG「TURBO PASCAL 5.5 OOP GUIDE」BORLAND刊」
というのを見つけた。そうだ。ボーランドの本を使えばいいのだ。
まだ売ってるのかわからんが。
0112デフォルトの名無しさん
NGNGオブジェクト指向を使わないのなら、TP4-7は大して変わらないと思われ。
0113デフォルトの名無しさん
NGNGありがとう。そんなら、7の本を買う。
0114デフォルトの名無しさん
NGNG0115デフォルトの名無しさん
NGNG言語がフリーでも意味ないじゃん。
『Oh! Pascal!/Book and Pc/DOS Disk』
Doug Cooper (著); ペーパーバック
通常4〜14日以内に発送
価格: ¥9,093
『Turbo Pascal』
Elliot B. Koffman (著); ペーパーバック
通常4〜14日以内に発送
価格: ¥9,600
手数料: +¥960
『Using Turbo Pascal 6.0 - 7.0』
Julien Hennefeld (著); ペーパーバック
通常4〜14日以内に発送
価格: ¥10,260
手数料: +¥1,026
『Turbo Pascal』
Samuel L. Marateck (著); ペーパーバック
通常4〜14日以内に発送
価格: ¥14,467
『Turbo Pascal, an Introduction to the Art and Science of Programming (The Benjamin/Cummings Series in Structured Programming)』
Walter J. Savitch (著); ペーパーバック
通常4〜14日以内に発送
価格: ¥8,933
手数料: +¥894
0116デフォルトの名無しさん
NGNGこれだけ読んで、
高いといっても5000から6000円程度だろ
とレスを付けようとして続きをみてびっくり。
それぞれ1000ページくらいの大作なのだろう。
0117デフォルトの名無しさん
NGNG無理にメリケンの本を買おうとするから高いのであって
ニポーンの本で我慢(?)すればそこまで高くはないよ
0118デフォルトの名無しさん
NGNGどの本も大昔の書籍だってこと、わかっているのかな?
なぜ Delphi ではなく TurboPascal を求める?
0119デフォルトの名無しさん
NGNG0120デフォルトの名無しさん
NGNG自分で制限可能だよ。
まあやろうとしてることはコイツらと変わらんが
Delphiで小さな実行ファイルを作ろう
http://pc.2ch.net/test/read.cgi/tech/1009080085/
0121デフォルトの名無しさん
NGNG弘法筆を選ばず。本質が見える人は GUI がついていても道を見失うことはない。
初心者であれば手軽に手に入る,最新の道具で入門をしなされ。
0122デフォルトの名無しさん
NGNG0123デフォルトの名無しさん
NGNGVCLによらない素のpascalで遊べます
コンソールが不要な SDK方式でのGUI を作りたければ、
コンソールアプリを選んだ後 {$APPTYPE CONSOLE} を自分で削除すればいいのです
0124デフォルトの名無しさん
NGNGつまりデバッガを使いたければDOSモードへ行かねばならない。
これからPascalを始めようとする人には、あまり向いていないと思うよ。
0125デフォルトの名無しさん
NGNG作るのは貴方の勝手です。ご自由に・・・
0126デフォルトの名無しさん
NGNGふむふむ、確かにFreePascalでもGraphユニットやCtrユニットが用意されているね。
Turboとの互換を考慮してとおもうけど。
GraphDeviceあたりの型を、エラーを参考にShortInt型に書き換えるだけで、きちんと
グラフィックが描ける。英語版のTP5.5をゲットしてDosプロンプトで動かすより、
こちらの方が簡単みたい。
>122
私もTPやFPをネタにコツコツとHPを作ってみようと思っています。
0127デフォルトの名無しさん
NGNGガセ。正しく環境を作れば動く。
DPMI 関連の資料をよく読んで。
0128デフォルトの名無しさん
NGNGC:>TP
:
:
C:>JP
C:>EXIT
0129デフォルトの名無しさん
NGNGUSモードじゃ日本語つかえんぞゴラァ!
0130デフォルトの名無しさん
NGNGじゃしょうがない。US モードにするしかないだろ。
0131ふむふむ(納得)
NGNGないので、日本語文字列はWriteLnなどの手続きでコンソール上に出力することしかできない。
0132124
NGNG今まで知らなかった。ご指摘ありがとう。
DOSプロンプトのプロパティで「必要に応じてMS-DOSモードを実行」を外したら動いた。
>>131
DirectVideo := False;
とすれば、Crtユニットによるテキスト出力がBIOS経由になるから、
DOS/V BIOSのおかげで、Writelnで日本語文字が出力できるようになるよ。
GraphユニットのOutTextでの日本語出力は、無理そうだね。
0133デフォルトの名無しさん
NGNG0134デフォルトの名無しさん
NGNG1) FILE-> 新規作成->その他->コンソールアプリケーションを選びます
すると
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
begin
{ TODO -oUser -cConsole Main : この下にコードを記述してください }
end.
とソースが表示されます
program Project1; uses SysUtils; はボーランドによる拡張ですから取り去ってかまいません
{$APPTYPE CONSOLE} も取り去ってかまいませんが、代わりにコンパイルオプションでコンソール
アプリである事を指示する必要があります
結局、最初に書くアプリは これでいいでしょう
{$APPTYPE CONSOLE}
begin
writeln('こんにちは');
readln;
end.
この2行を入力した後、F9 を押せば実行出来ます
0135ふむふむ(納得)
NGNGふむふむ、自分はまだGraphユニットとCrtユニットを完全に理解していなかった
ようです。サンプルコードを希望します。
自分はPC-9800シリーズ用のTP6プロフェッショナル版をもっていますが、
引っ越しのどさくさでソフトはあれど、マニュアルをすべて無くしてしまったのです。
TP6のマニュアルに書かれていたクラスの概念はとても分かりやすかっただけに、
すご〜〜〜〜く、残念です。
だれかGraphユニットとCrtユニットの詳しい解説をサンプルを使って説明して
くれませんか!!
0136デフォルトの名無しさん
NGNGDelphi IDEを使わない方法を説明します。
まず メモ帳でも好きなエディタでも、 ファイル名.pas としてファイルを作成し
begin
writeln('こんにちは');
end.
と3行入力し、保存して下さい。
コマンドラインから
DCC32 -CC ファイル名.pas として改行すれば
ファイル名.exeが作成されます
0137デフォルトの名無しさん
NGNGuses SysUtils ;が 追加された状態では、abort; Ansi/Unicode文字列処理や時間などの関数が追加されます
0138デフォルトの名無しさん
NGNGWindowsの場合、コンソールにグラフィックを表示する事は出来ません。
そこで、別窓を出してグラフィックを出すか
あるいは、BMPファイルを作成して後でビュアーで見るという方法が簡単です
Delphiのフォーム機能をグラフィック画面としてコンソールアプリから使う方法を説明します
0139デフォルトの名無しさん
NGNG新規作成でフォームを作成して下さい
そして以下のように入力して実行してみて下さい
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
Forms,//<----この行を追加
Unit1 in 'Unit1.pas' {Form1};
begin
Form1:= TForm1.Create(nil); //<<--この行以下を追加
Form1.Show;
Form1.Canvas.Ellipse(20,20,100,100);//円の描画
Form1.Caption:= 'こんにちは';
readln;
end.
実行すると、コンソールと同時にタイトルがこんにちは となった フォームが表示された筈です
このフォームはクリックに応答しませんし、他の窓に隠れると再表示もされません
が、とりあえずこれで遊ぶには十分に便利な筈です
0140124
NGNG>TP6のマニュアルに書かれていたクラスの概念はとても分かりやすかっただけに、
おお、同意。なんか執筆者のすごい熱意が感じられる文章だった。
Crtユニットを使って日本語を出力する例。
TP5.5、Win95のDOSプロンプトにて確認しました。JPモードで実行して下さい。
program test;
uses Crt;
begin
DirectVideo := False;
GotoXY(30,10);
TextColor(Red);
Write('こんにちは');
end.
2バイト目が'のコード番号と一致するような日本語文字を文字列中に入れる場合には注意。
コンパイラがその'を文字列の終わりと認識するのを防ぐため、'を一つ追加してやる必要がある。
0141デフォルトの名無しさん
NGNG0142動物アイゴー協会
NGNG0143デフォルトの名無しさん
NGNGそこで、コンソールアプリからBMPファイルを作成して表示させる方法を説明します
まず、新規作成でコンソールアプリを新しく作った後
uses
windows, //WindowsのAPIを使います
ShellApi, //ShellExecuteを使う為に
Graphics, //TBitMapを使う為に
SysUtils;
var bmp:TBitmap;
begin
bmp:=TBitmap.Create;
with bmp do try
Width :=100;
Height:=100;
PixelFormat:= pf1bit;
Canvas.Ellipse(1,1,100,100);//円を描く
Canvas.TextOut(5,5,'こんにちは');
SaveToFile('temp.bmp');
finally free;end;
ShellExecute(0,'Open','temp.bmp',nil,nil,SW_SHOW);
end.
として実行してみて下さい
このコードはコンソールを使用していませんから、コンソールアプリである必要もありませんから
{$APPTYPE CONSOLE} も取り去って大丈夫です
0144デフォルトの名無しさん
NGNGWindowsでは複数の窓があるように見せていますが、実際の表示デバイスはせいぜい1つです
他の窓に隠された部分が また表示されるのは、アプリケーションが努力しなければなりません
その為の仕掛けをメッセージループと呼びます
窓はメッセージを受信する仕掛けをもち、再描画しろというメッセージにしたがって画面を自分で
描くわけです。
また、キーボードが押された、マウスが押されたもメッセージにより処理されます。
Delphiでは application.ProcessMessages; で明示的にそのメッセージループを呼び出す事も
出来ます。コンソールアプリでapplication.ProcessMessages;を定期的に呼び出せば、作成した
フォームはマウスを受け付ける事が出来るようになります。が、それをしても >>139のように描画
処理をベタに書いたのでは 他の窓に隠れると2度と表示出来ない事にかわりはありません。
この部分をイベント駆動にしなければならないのです。
それがフォームにある OnPaintイベントです。
0145デフォルトの名無しさん
NGNGDelphi6のIDE上で F1を押せば知りたい情報は殆ど出て来る筈です
bmp.PixelFormat:= pf1bit; はモノクロビットマップを作るという意味になります
その他の多色形式はヘルプを見て下さい
ShellExecuteは 作成した temp.bmpをそのパソコンに設定された方法で
開くためのAPIです
円以外のグラフィック描画命令は TCanvas でヘルプを見て下さい
線の色の設定や線の太さは Canvas.Pen で設定します
面の 〜 は Canvas.Brush で行います
文字の〜は Canvas.Fontで行います
0146デフォルトの名無しさん
NGNGひょっとして穂積○平さん?
0147ふむふむ(納得)
NGNGサンキュー
今、FreePascalでGraphユニットを使って日本語をなんとかグラフィックと
混在表示できないか検証中です。やっぱ、outTextでは文字化けしますね。
(Win2000のコンソール画面で検証)
0148デフォルトの名無しさん
NGNGそれはもうコンソールアプリじゃないよ
そこらへんやりこむにはインラインアセンブラ使うしかなくなるしさあ
pascalの勉強ならDelphi6パーソナルで始めたらいいじゃない
0149デフォルトの名無しさん
NGNG禿同。
コンソールアプリでもない機種依存アプリでしかない。Windows が動かないほど
古いマシンでの話ならともかく Win の DOS-BOX で動かそうとしているようだから
意図がわからない。
本質的なプログラムをしたいなら、Graph がどうこうとか言ってる場合じゃないとおもうが。
0150ふむふむ(納得)
NGNG>149
私も含めてTPやFPを使っている人は、これで飯を食っているわけじゃないとおもいますけどね。
ただ、知的好奇心を満たすため、また昔を懐かしみたいがために、前記のツールでコツコツとコードを書いて
遊んでいるとおもいます。
>148
私はアセンブリ言語はサパーリわかりませんので、インラインアセンブラは未体験ですけど、
使いこなせたらおもしろそうですね。
>148
我が家には486・33MHzマシンもペン150MHzマシンもあります。再利用を考え中です。
FPですが、LinuxやDOS、OS/2、旧バージョンはアミーガでも稼働できるそうなので、
ツールになれたらそれらのOSでも楽しめそうです。(私はOS/2も持っています)
個人的にはBeOS(瀕死状態ですが)、今後発表される予定のFreeBeOSにFPが移植されたら
有り難いのですが・・・・。
0151デフォルトの名無しさん
NGNG0152148
NGNGワンダーウイッチ開発をTPで出来るように環境を整えるとかの方向なら面白いとは思うんだけど・・・
0153デフォルトの名無しさん
NGNG486の33Mを生かしたいなら kylixやればいいのに
486では開発出来ないだろうけど、作った実行ファイルは実行出来るだろうに
0154ネタsage
NGNG♪神サマありがと〜お、ボクにともだちをくれ〜て〜〜〜。
♪パスカルに〜あわせてくれて、パスカルに〜あわせてくれて
♪パスカルに〜あわせてくれて、パスカ〜ルにあわせてく〜れ〜〜て〜〜
0155デフォルトの名無しさん
NGNG>119 :デフォルトの名無しさん :02/02/02 00:00
>だってDelphiなんて、GUIだとか余計なことがイパーイついてて本質が見えないじゃないか。
ってのがあるから、「Graph/CRT でごそごそやるくらいなら Delphi つかったら?」
といっているの。いまどき SVGA どまりのグラフィクスでもないでしょ?
0156ふむふむ(納得)
NGNG♪ごめんね素直じゃなくって。夢の中なら言える。
♪思考回路はショート寸前。あなたに会いたいよ。
「美少女戦士セーラー・パスカル」
ヘジに替わってデバッグよ!
>153
kylixはFreeBSDでは動かないのではないかと思います。
私はlinuxよりFreeBSD派です。(ごめんなさい)
それより486でlinuxやFreeBSDを使うということはXはあきらめろ
ということになりそうです。
0157デフォルトの名無しさん
NGNG0158デフォルトの名無しさん
NGNGDelphi以外でPascalの勉強だろ?
0159ふむふむ(納得)
NGNGDelphiでもTPでもFPでも、とにかく手持ちの処理系を使った
Pascalの学習さ。
0160デフォルトの名無しさん
NGNG0161デフォルトの名無しさん
NGNGなんでそんなに突っかかるのか小一時間(略
0162デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNGwin2000のコンソール画面(JPモード)では文字化けします。
対策はやっぱり、旧Winと文字コードの取り扱いがちがうから無理でしょうか?
0164ヒロシ
NGNG0165アライグマPascal
NGNG昔のTurboPascalを思い出す懐かしいやつです。
今年の8月頃Openの予定です。
0166424
NGNG(SRC以外で)
ガチャポン戦士3作りたくなった
0167424
NGNGすいません、逝ってきます。
0168デフォルトの名無しさん
NGNGこの壮大な計画を遂行するため、424は立ち上がった、、、
歴史は動き始めた、、、
0169424
NGNG逝ってきます。
0170アライグマPascal
NGNGコンテンツが激貧なのでURLは秘密です。古いPascalの簡単なサンプルを
公開・保存する場にしたいと思っています。
0171デフォルトの名無しさん
NGNGNECRT.TPU という、CRT互換unitをダウンすれば、日本語だって出力可能
おいらは統合環境は使わないから、これで問題なし
0172デフォルトの名無しさん
NGNG楽しみにしているぞゴルァ。
>>171
フランスのBorlandからわけのわからないメールが届くようになるという
諸刃の剣。
0173アライグマPascal
NGNGそれともなくなったのか?
0174アライグマPascal
NGNG0175デフォルトの名無しさん
NGNG「ヘルプを見て下さい」ばかりだと、このスレ意味なしだと思いません?
コンソールアプリにこだわりながら、なおかつ、TCanvas を論じている
こと自体に無理があるのでは?
0176アライグマPascal
NGNG利用して以下のソースをコンパイル。
program test;
uses Graph;
var
GraphDriver:smallint;
begin
GraphDriver := Detect;
InitGraph(GraphDriver,30012,'');
SetColor(4);
circle(300,200,100);
readln();
CloseGraph;
end.
画面に赤い円が表示されたら成功。(懐かしいでしょ)
0177デフォルトの名無しさん
NGNG0178デフォルトの名無しさん
NGNGいまさらなつっこみで悪いんだが・・・
absolute変数があったり、
「Mem[****] := ****」とか「Port[**] := **」なんてことができたり
inline手続きがあったりするので
PascalはCよりもっと危険なのでは?
Cじゃメモリの番地を直接指定して書き込みするなんてことはできない
ポインタを介して間接的なやりかたでやらねばならないぶん、
Pascalよりも安全性はほんの少し高いとも言えないか?
Delphiはともかく、DOS時代のTurbo Pascalなんて、
ハードウェアを直接いじるような目的で使われることが多かったし、
実際、procedureの中身はアセンブラソースをasmとendで括っただけなんていう
ほとんど高級アセンブラ的なPascalの使い方をしてるソフトが
数多くまかり通ってたものだが
0179デフォルトの名無しさん
NGNG>PascalはCよりもっと危険なのでは?
なんでやねん。
危険なのは(言語を問わず)ハードを直接操作することでしょ。
高級なことやりたいんなら危険専用の命令である
inline/absolute/asm使わなければそれで十分安全性を確保できる。
それに対してCは高級・低級ともにポインタ使わざるを得ないから
高級な目的で書かれたコードですら安全とはいいかねる。
0180デフォルトの名無しさん
NGNGXXX 言語はインラインアセンブラがあるから、特権命令も記述できるので
一行でハングアップするコードがかける。危険!
ということもできそうだが、さすがにこれには同意しまい?
0181アライグマPascal
NGNGソースをもっていませんか?ベーマガに載っていた、1画面プログラムみたいなものです。
音やスプライト機能はできないと思いますが、なんとかPascalで書き直してみたいと
思っています。ここにソースをアップしてみんなで考えたら、勉強のネタとして
おもしろいと思います。
0182デフォルトの名無しさん
NGNGI=0TO212:P=PEEK(I+800):PSET(P,I),IMOD3+2
:NEXT:FORI=0TO7:VPOKE30721+I,255:VPOKE30
736+I,24:NEXT:OPEN"GRP:"AS1:SOUND6,18
2 DEFFNS=RND(1)*175+25:DEFFNR=(INT(RND(1
)*10)-5)/10:C=FNR:D=FNR:G=FNS:H=FNS:Y=99
3 LINE(E,200)-(E+20,212),1,BF:FORI=2TO4:
COLOR=(I,0,I*2-2,I*2-1):CIRCLE(G-I,H-I),
(6-I)*2,I:PAINT(G-I,H-I),I:NEXT:LINE(G,2
00)-(G+20,212),5,BF:SOUND7,183:X=120:E=G
4 S=STICK(0):A=(S>5ANDV>-8)-(S>1ANDS<5AN
DV<8):B=((S=8ORS=1ORS=2)ANDW>-8)-(S>3AND
S<7ANDW<8):V=V+A+C:W=W+B+D:X=X-V:Y=Y-W
5 VDP(24)=(Y+149)MOD255:PUTSPRITE0,(X,Y)
,10,0:PUTSPRITE2,(X,Y+B*9),ABS(B)*9,2
6 PUTSPRITE1,(X+A*14,Y+8),ABS(A)*9,1:IFP
OINT(X+8,Y+18)=5THENN=N+1:BEEP:GOTO2
7 SOUND8,-(S>0)*13-(S/2=S\2)*2:IFX>4ANDX
<238ANDY>-10ANDY<194THEN4ELSEFORI=0TO50
8 D=RND(1)*31:SOUND6,D:SOUND8,15:VDP(24)
=ABS((Y+D\3+144)MOD256):NEXT:Y=Y+(Y<0)*Y
9 PSET(80,99):PRINT#1,"GAME OVER";N+1
10 SOUND8,0:FORI=0TO255STEP.5:Y=Y+I:Y=Y+
(Y>255)*Y:VDP(24)=Y:NEXT:POKE-869,1:RUN
0183アライグマPascal
NGNGpeek、poke、sound、vdpなど、移植が難しいコマンドが目白押しですね。
参考にさせていただきます。
0184デフォルトの名無しさん
NGNGむしろBASICより簡単だ。メモリ配列に代入するだけで済む
Mem[$****] := hoge hoge := Mem[$****]
スプライトは無理だけど重ね合わせ処理で代用できるでしょ
0185デフォルトの名無しさん
NGNGその副作用は一切無視?
0186デフォルトの名無しさん
NGNGBASICのプログラムをPascalで書き直すって言ってるんだから
元と同等のことをやればよいだけだろ
BASICと同様の単純なシステム上の話じゃないのか?
WindowsだのUNIXだのの上ではもちろんそんな乱暴なことは許されないけど、
単純なシステム上ならそういう乱暴な方法でしかゲームは書けないよ
0187デフォルトの名無しさん
NGNGハードが変わったらpeek,poke(Mem)の移植性なんて皆無。
大体MemってTP専用じゃなかったか?
0188デフォルトの名無しさん
NGNGでもBASICなんてもともと移植性なんか関係無いし。
0189デフォルトの名無しさん
NGNGMSX-BASICか・・・どこから引っ張り出してきたのやら。
って優花、ベーマガのサイトに行けばダウソ出来るじゃん。
0190デフォルトの名無しさん
NGNGTPだってMS-DOSがグラフィックやサウンドの機能をサポートしてなかったから
やっぱりMem配列とかの乱暴な手段は必須だった
0191がうがう ◆gu5gIE4w
NGNG同時にBorland C++ Suite を何故か、購入しちゃって、これにBP7が
入ってまして、pascalをやりたくなったんですが
1.HP200LXぐらいのスペックだとPASCALって厳しいですか?
2.CGAですが、付属のCGA.BGIでは、遅いと思われます?
3.Cと比べてどれくらいの実行速度なんでしょうか?
今から始めるので、何も分からなくて恥ずかしいのですがよかったら
上記のことを教えてくださいまし
勉強をかねて、上から線が降りてきてそれをよけるような簡単なものと
三角関数を使ったRPN電卓を作りたいなと思います。
このスレッドが消えませんように……
0192デフォルトの名無しさん
NGNG1. 2. は知らんけど
>3.Cと比べてどれくらいの実行速度なんでしょうか?
一般論としては引数を全部スタックに積むCより
3つまで(だったかな)ならCPUのレジスタを直接使うPASCALの方が
より高速になりうる・・・と聞いたけど
0193デフォルトの名無しさん
NGNGそのまま描画性能につながる。はず
BGI とかも、速度向上のがんばりようが無いので、速いか遅いかという議論には
ならないな。描画空間の抽象化、という利点はあるけど。
実際には、ハードウェアのウェイトがいっぱいかかっているので、ある程度から
先は頭打ち。(HP200LX だと改造/改良されているかもしれないが)
0194アライグマPascal
NGNGHP200LX!!!!!!!!!!!!!!!!!
のどから足が、鼻からちんちんが(失礼)飛び出すぐらい
欲しかった・・・。あいにくお金がなくて血が出るくらい
下唇をかみしめて泣きながら家に走って帰ったのを昨日の
ように思い出します。<とても40歳が書く文章ではありませんな。
LSI-C試食版が動いているのをみたことがあります。それと
TP6(PC98版、もちろん専用ライブラリは使わない)が動いているの
もみたことがありますが、実行速度は変わらなかった気がします。
0195がうがう ◆AGuK1Awo
NGNG質問にお答えしていただきありがとうございます!!感謝です
3つまでCPUのレジスタを直接扱うというようなPASCALプログラミングって
どういう感じなのでしょうか?
(#^_^#)話分からなくて…… 逆に言えば、この手法でくむように工夫すれば
いいってことですよね?
0196がうがう ◆AGuK1Awo
NGNG>>193
質問に答えていただきましてどうもです(^-^) 感謝いたします
ふむ…… すべてはCPU次第なので、遅いから遅いのだということですね?
これは、Cに限らないと言うことでしょうか?
pascalそのものが早いのか、遅いのか知らないのでこういった質問になったんです
あるファイルを名前を変えてコピーするという程度なら早いとは思うんですが。
186マシンではきついのかなあ?
HP200LXだとライトスリープというのがありまして、コンパイルするのが遅い
MSCだと途中でシャットオフになってしまうこともあるそうです。
もちろんライトスリープですから電源を入れれば何事もなく続きを始めるんですが。
そのライトスリープをさせないアプリもちゃんと存在します。
描画空間の抽象化とは何でしょうか? お教えくださると幸いです。
無学ですいません
0197がうがう ◆AGuK1Awo
NGNG>>194
あははは(^-^) 今じゃヤフオクで3万程度で手に入りますよ。倍速8M程度を。
自分も少しずつ、ボーナスの度に買ってます。
最終的には15個欲しい……
自分の場合はRPN電卓の部分も大きいというのがあるんですけどね(^-^)
質問答えてくださいましてどうもです。LSI-Cとそんなに実行速度は変わらない
ですか! うれしいお話ですね。がんばろうと思えます!
0198デフォルトの名無しさん
NGNGPASCALコンパイラが勝手にやってくれるから気にする必要はないよ
引数が3つ(?)までの関数や手続きではそのようにコンパイルされるということ
0199がうがう ◆AGuK1Awo
NGNGそうですか(笑) だとしたらPASCALコンパイラ(Borlandのやつですね)
は、優れているということですね。
PASCALで作られた有名な作品ってご存じですか?
自分は、「WTERM」ぐらいでしょうか?
皆さんも教えてくださると幸いです
0200アライグマPascal
NGNG0201デフォルトの名無しさん
NGNGそういうこと言うと、厨房どもがわらわら集まってくるので禁止
0202がうがう ◆AGuK1Awo
NGNGあ、そうか…… APPLEでPASCALでしたね
しかも独自IP(最初に起動するときに読む奴 IPじゃなかったでしょうか
それともSIP?)で動くんですよね
IBM/PC版は、そのエミュで動くと聞きます。
エミュの上にIPがあってその上でAPPLEのPASCALで書かれたWIZ
が動くとか。
0203がうがう ◆AGuK1Awo
NGNG?? そうなんですか?
0204デフォルトの名無しさん
NGNGファミコンに移植した人から聞いた。
0205アライグマPascal
NGNGすぐに全面的にCで書き直されたけど・・。
0206デフォルトの名無しさん
NGNG0207がうがう ◆AGuK1Awo
NGNG大変勉強にもなったそうですね。
あるいは、MSXFANとかの投稿雑誌があって、MSXBASICでも
勉強になったとか……
ネットでPASCALのソースを探しているんですがなかなか(-.-;)
ゲームに参考になる画像描写(CGA)で参考になるのがないですかね?
とりあえず 植木屋 さんのウェブサイトにて CGAの参考を
ttp://plaza10.mbn.or.jp/~uekiya/hp200lx/japanese/cga.html
人のソースが一番勉強になるんだけれどもなあ 初心者には(^O^;;
0208がうがう ◆AGuK1Awo
NGNGお!あの D&Dもですか やったことはないんですが
名前だけは伺っています
そのソース見てみたいなあ
0209がうがう ◆AGuK1Awo
NGNGえ! うっそぉでしょ?
本当にぃ! それしか言葉が出てこないぐらいびっくりしました
う
すげぇなあ。 1.0位の頃でしょうかね?
0210がうがう ◆AGuK1Awo
NGNG眺めているんですが、何をどうしてどうするのかが(^O^;;
あるテクニックが何のために必要か、それをどう有効に使うか
以前のCで何が書かれているのかさえも読めない(^O^;;
Cの入門書を買ってきて一行ずつ解析していけば読めるかなあ?
どこかにCGAでPASCALゲームソース公開されてませんか?
探しているんですが見つからない(^O^;;
0211デフォルトの名無しさん
NGNGCGAは対応しているかわかりませんがGrafx2というのがあります。
http://www-msi.ensil.unilim.fr/~maritaud/sunset/grafx2.html
それと http://www.pascal-central.com/ はPascal使いであれば知らないと
似非パスカラーとして認定されてしまいます。:-)
0212デフォルトの名無しさん
NGNGすまぬ。自爆。画面モードと間違えた。(^^;
0213デフォルトの名無しさん
NGNGまぐローダ
0214デフォルトの名無しさん
NGNGNgraph
0215デフォルトの名無しさん
NGNGあと、SWAGもな >Pascalerの心得
0216デフォルトの名無しさん
NGNGアドレスはここだ>SWAG
ttp://www.gdsoft.com/swag/swag.html
0217がうがう ◆AGuK1Awo
NGNG知りませんでした(^O^;; 似非パスカラー決定?(-.-;)
教えてくださって有り難うございます
翻訳にかけると妙な日本語で(笑)
0218がうがう ◆AGuK1Awo
NGNG少しずつ読んでいこうと思います
0219がうがう ◆AGuK1Awo
NGNGめちゃくちゃ重くないですか? ここ
0220デフォルトの名無しさん
NGNG似非キース まぐぺ、まるぺ
0221超初心者
NGNGprocedure A()
…
A();B();C();
…
procedure B()
…
A();B();C();
…
procedure C()
…
A();B();C();
…
てな再帰を作りたかったんですけど、free pascalでコンパイルしたら
Error: Identifier not found B〜
などと怒られてしまいました。
pascalではCの様なプロトタイプ宣言は出来ないんですか?
それと、var a,b integerと宣言して
a:=b/2としたら
Hint: use DIV instead to get an integer result
Error: Incompatible types: got "S80REAL" expected "LONGINT"
と怒られてしまいました。
型変換はどうするのでしょう?
0222デフォルトの名無しさん
NGNG0223デフォルトの名無しさん
NGNGFreePascalにも型変換の概念はあるけど、それ以前の問題として
Pascalでは整数型除算では「/」ではなく「div」を使わないと
文句を言われます。
0224デフォルトの名無しさん
NGNGHint: use DIV instead to get an integer result
↑これをちゃんと読みましょう
0225デフォルトの名無しさん
NGNG実数は整数型変数に代入できない。
Round関数またはTrunc関数を使って整数に変換する。
だけど今のケースは>>223の言う通りdivを使うべきだ。
0226デフォルトの名無しさん
NGNG>pascalではCの様なプロトタイプ宣言は出来ないんですか?
にちゃんと答えてくれていることに気が付いているのだろうか?
0227アライグマPascal
NGNGさりげない一言「forward」に私は愛を感じました。
たぶん受け止めていただけたと思います。
0228デフォルトの名無しさん
NGNGPascalには「プロトタイプ宣言」は無い
しかし、「プロトタイプ宣言」とは言わないがそれと同じものはある
それがforward宣言だ
0229アライグマPascal
NGNG翻訳中のFreePascalの関連部分を読むことをおすすめします。URLはずっと
上のほうに書き込んでおります。(以下はその文章の抜粋です)
8.5 フォーワード宣言関数
forward手続きを使うことで実装のない関数を定義できます。関数の実際の
実装はモジュール内であとに続けなければなりません。関数はforward宣言後、
すでに実装されているかのように使われます。次はフォーワード宣言の例です。
program testforward;
procedure First (n:longint); forward;
profedure Second;
begin
WriteLn('In second.Calling first...');
First(1);
end;
procedure First(n:longint);
begin
WriteLn('Frist received:',n);
end;
begin
Second;
end.
0230アライグマPascal
NGNGprofedure×
procedure○
0231アライグマPascal
NGNGあるPascalの書籍に
(1) round(2.5*(5.5-8.9))
(2) (16.4 -10.8)/2.0 >= 1.3+6E-1
という演算の問題があったのですが、書籍の解答は
(1) -8
(2) true でした。
FreePascalでは書籍の解答道理の値を返しますが、スレの上の方にあった
HelloPascalという処理系では -9とFalse を返します。
どちらの処理系の演算が正しいのでしょうか?またどんなルールで演算を
しているのでしょうか?
0232デフォルトの名無しさん
NGNGそんな、処理系依存の重箱の隅をつつく問題を出す書籍など、捨てろ。
0233アライグマPascal
NGNG(1)はround(-8.5)と書き直すことができますよね。roundは小数点下を四捨五入
するから答えは-9になるのが当たり前と思っているのですが、違うのでしょうか。
こんな簡単な演算でも処理系依存で値が変わるのは大問題だと思うのですが、
処理系依存とはどういうことでしょうか?
0234デフォルトの名無しさん
NGNG-10 + 0.5
-9 + (-0.5)
のどちらを正解にしたい? 銀行家丸め以前の問題。
0235アライグマPascal
NGNG上はそれぞれを丸めると-10+1=-9
下はそれぞれを丸めると-9+(-1)=-10になるということでしょうか?
でもround(2.5*(5.5-8.9))の場合、括弧内から計算していくと
round(2.5*(-3.4))になり、別々に丸めても
round(3*(-3))=-9にはなりませんか?
どんなルールが働いているのでしょうか????????
0236デフォルトの名無しさん
NGNG今ほど高くなかったのだよ。というかライブラリは処理系の外に
存在するものだった。
ISO 7185 / JIS X3008 のどこにも Round 関数の仕様の話はない。
よって、処理系依存問題。
0237デフォルトの名無しさん
NGNGそんな難しい話ではなく、
-9.5 を -10 にする根拠は? -9 にする根拠は?って話。
どちらも誤差は 0.5
0238デフォルトの名無しさん
NGNGウツダシノウ
0239アライグマPascal
NGNGround(X)
実数式Xの小数点以下を四捨五入した整数値を返す。
とあるなら、その値は唯一一つしかあり得ないはずですよね。
別の解釈が入り込む余地は無いと思うのですが、
こんな単純明快な話なのにどうして処理系依存なんてことが
あるのだろう。
0240アライグマPascal
NGNG1.3+6E-1 の部分の(-1)の解釈が、単に整数値の-1と解釈するのか
前のEとの絡みで、10のマイナス1乗と解釈するのかの違いだと思うの
ですが、どうでしょうか?
0241デフォルトの名無しさん
NGNG規定するもの。
2. 正の数の丸めは Banker's Round / 銀行家の丸め問題以外には大きな問題はない。
http://homepage1.nifty.com/s_miyake/hp/jisround.htm
0242デフォルトの名無しさん
NGNG-8.5 に話を戻すと、-1 * 8.5 に置き換えてから 8.5 を「四捨五入」。最近偶数値である8に丸められた後
-1 * 8 と評価されるとすると、答えは「-8」
-8.5 を字面で「四捨五入」すると、「五入」扱いになる。
これを0方向に丸めると、答えは「-8」
これを無限大方向に丸めると、答えは「-9」
さて。.5 は境目の数なので、少し前後も出してみよう。
-8.0 -> -8.0 // これは異論あるまい。
-8.4 -> -8 の方が近いんだから -8 だろう。
-8.5 -> さぁ。どうする?
-8.6 -> -9 だよな。
-9.0 -> -9.0 // これも簡単。
0243アライグマPascal
NGNGお恥ずかしい話ですが初めてこの話を知りました。
ということはHelloPascalは「JIS丸め」を採用していない、
演算によっては誤差が大きくなりやすいということですね。
関連のURLを含めて作者に連絡してみようと思います。
0244デフォルトの名無しさん
NGNG実用上は問題ないんだけどね
厳密にしようとすると気になるかも
0245デフォルトの名無しさん
NGNGまぁ普通はそこまで気にしない/気にしてもしょうがないので「処理系依存」の振る舞い
とひとくくりにしてしまいますが。
0246デフォルトの名無しさん
NGNG2進で表現すると
5.5 101.1と 誤差無くもてるけど、8.9=1000.1110011001100110011 と誤差無く持てない
0247デフォルトの名無しさん
NGNG銀行家丸めはコンピューターが無い頃からの技法だよ。
0248デフォルトの名無しさん
NGNGが届いたのでまたPascalで遊んでみたいと思います。
0249デフォルトの名無しさん
NGNG昔の物だからといって、機能が少ないからといって、優しいとは限らないんだよ?
0250デフォルトの名無しさん
NGNGじゃーキミも三平方の定理使うのやめなよ。
0251デフォルトの名無しさん
NGNG遊ぶんだったら、趣向は人それぞれ。
おれも宿題スレみて生DOSアプリを作ってみたくなったよ。
0252アライグマPascal
NGNG報告したところバグらしいとのことでバグフィックスをする
とのことでした。
0253デフォルトの名無しさん
NGNG0254デフォルトの名無しさん
NGNG;は文と文を分離するためのものだからです。
0255デフォルトの名無しさん
NGNGよく理解できました。ありがとうございました。
0256丁稚Pascal
NGNG今はまずPascalをある程度できるようになりたいので、
このスレでいろいろ課題を出してもらえるとうれしいのですが・・・。
0257デフォルトの名無しさん
NGNG0258丁稚Pascal
NGNG何の言語から入るかは意見のあるところとは思いますが
色々と手を出すよりもまずは一つのものを――
と考えているので、よろしくお願いします。
0259アライグマPascal
NGNG「正の整数aとb(a>=b)の最大公約数(GCM)を求めるプログラムを書け。
aまたはbがゼロ以下の場合は適当にエラーメッセージを出力せよ。」
解法のヒント(ユークリッドの互除法をつかう)
まず大(a)を小(b)で割った余りrを求める。
次にaをbに、bを余りrに置き換える。
これをr=0となるまで繰り返す。最後の被除数がGCMとなる。
0260アライグマPascal
NGNGサイエンス社 定価(本体2111円+税)
上の本からの出題です。この本は個人的におすすめです。
0261丁稚Pascal
NGNG0262丁稚Pascal
NGNGvar a,b,c,r:integer;
begin
writeln('自然数を二つ入力しる!');
readln(a,b);
while (a<0) or (b<0) do begin
writeln('自然数っつただろうが(゚Д゚)ゴルァ!!');
readln(a,b);
end;
if a<b then begin
c:=b;
b:=a;
a:=c;
end;
repeat
r:=a mod b;
a:=b;
b:=r;
until r=0;
writeln('最小公約数=',a);
end.
0263丁稚Pascal
NGNGこれくらいで一時間か・・・ちと情けない。
直したほうが良い箇所とかありますか?
0264デフォルトの名無しさん
NGNGメインではそれを呼ぶように変更してはどう?
それから最小公約数は1だよ
最大公約数・最小公倍数でWeb検索してみたら
0266丁稚Pascal
NGNGvar a,b,c:integer;
function a_gcm(x,y:integer):integer;
var r:integer;
begin
repeat
r:=x mod y;
x:=y;
y:=r;
until r=0;
a_gcm:=x;
end;
begin
writeln('自然数を二つ入力しる!');
readln(a,b);
while (a<0) or (b<0) do begin
writeln('自然数っつただろうが(゚Д゚)ゴルァ!!');
readln(a,b);
end;
if a<b then begin
c:=b;
b:=a;
a:=c;
end;
writeln('最大公約数=',a_gcm(a,b));
end.
0267丁稚Pascal
NGNG0268デフォルトの名無しさん
NGNG0269丁稚Pascal
NGNGvar a,b:integer;
function a_gcm(x,y:integer):integer; //一組の自然数の最大公約数を求める
var r,z:integer;
begin
if a<b then begin
z:=y;
y:=x;
x:=z;
end;
repeat
r:=x mod y;
x:=y;
y:=r;
until r=0;
a_gcm:=x;
end;
begin
writeln('自然数を二つ入力しる!');
readln(a,b);
while (a<0) or (b<0) do begin
writeln('自然数っつただろうが(゚Д゚)ゴルァ!!やりなおし!!');
readln(a,b);
end;
writeln('最大公約数=',a_gcm(a,b));
end.
0271デフォルトの名無しさん
NGNGz:=y;
y:=x;
x:=z;
end;
0272デフォルトの名無しさん
NGNG最初に予め計算した結果と何個か比較させるようにするといい
if a_gcm(555,9875)!=5 then writeln('NG');
0273デフォルトの名無しさん
NGNGfunction gcd_1(m,n:Integer):Integer;
begin
gcd_1:=0;
if m=0 then exit;
if n=0 then exit;
while m<>n do begin
while m>n do m:=m-n ;
while n>m do n:=n-m ;
end;
gcd_1:=m;
end;
0274アライグマPascal
NGNGprogram gcm(input,output);
var
a,b,r : integer;
begin
writeln('Enter a:'); readln(a);
writeln('Enter b:'); readln(b);
if (a>0) and (b>0)
then begin
repeat
r:=a mod b ; a:=b ; b:=r ;
until r=0;
writeln('gcm = ',a)
end
else writeln('ERROR: a and b must be positive.')
end.
0275丁稚Pascal
NGNGやってしまった・・・。
>>272
なるほど、次からはテストコード入れるようにします。
>>273
参考になります。
>>274
自分の
r:=x mod y;
x:=y;
y:=r;
よりも、
r:=a mod b ; a:=b ; b:=r ;
のように一行に書いてしまった方がいいんですかね?
これは好み?
0276アライグマPascal
NGNG私は全て一行一文主義です。
0277デフォルトの名無しさん
NGNGhttp://web.mit.edu/taoyue/www/tutorials/pascal/history.html
0278デフォルトの名無しさん
NGNG平易な英文だから
「英語はちょっと・・・」という人もトライしてみるといいね
この辺の経緯を知らなかったDelphiユーザーなら
ますます好きになること請け合いだよ
0279丁稚Pascal
NGNGありがとうございます。
今まで一行一文だったし、読み易い(自分としては)ので
これからも一行一文でいきます
0280デフォルトの名無しさん
NGNGCよりラクチンでいいな。
0281デフォルトの名無しさん
NGNGord('R') で82 になるやつ。
0282デフォルトの名無しさん
NGNG0283デフォルトの名無しさん
NGNGのテキスト読んだときに集合とか順序型、部分範囲型
とか書かれていると「ハァ?」なんだろうなあって思う。(w
0284デフォルトの名無しさん
NGNG文字列に関してはCが馬鹿すぎるよね
よくあんな言語で業務用アプリを作るもんだと思ってたもの
C++は文字列用のクラスがあるからまだましだけど・・・
0285デフォルトの名無しさん
NGNG(゚Д゚)ハァ?
って思ったよ、最初は。でも便利だね。
0286デフォルトの名無しさん
NGNG理解できたら本当に便利だよね。
0287丁稚Pascal
NGNG配列で定義してるの?レベルが低くてすいません(^-^;
やっぱ他の言語も少しは勉強していかないとだめかな・・・
0288デフォルトの名無しさん
NGNGchar *p が文字列ポインタ(var p:PChar;)相当 (type PChar=Char^;)なんだけど
p="ABCD"; と文字列を代入してるかのように表現出来ます。
というかします
そして文字列"ABCD"は5文字の文字配列と等価です。
文字の最後は必ず #0 です。 これは Cでは'\x00' と書きますが
こういう表現方法をAsciiZとか呼びます
DelphiではこのAsciiZ方式と親和性が高くなるよういろいろな工夫がされています
0289デフォルトの名無しさん
NGNG0290デフォルトの名無しさん
NGNGfor letter := 'A' to 'Z' do
write (letter)
こういう書き方がOKと聞いてはじめはびっくりした。
しかし、よく考えてみると、文字コードが入っているだけなので、納得した。
0291デフォルトの名無しさん
NGNG何か変。
>p="ABCD"; と文字列を代入してるかのように表現出来ます。
> というかします
これは初期化のときだけ。
初期化のときに「char* p = "abcd"」とすると、文字列の長さの分(此処では5)だけの領域を「確保」し、この場合なら"abcd\0"で初期化をします。
代入のときには出来ません。
代入をしたいときは、標準ライブラリその他の関数を使うとか、一文字ずつ操作するとか(配列と同じです)。
(C++ならstd::strungという文字列クラスが標準で存在します)
> 文字の最後は必ず #0 です。 これは Cでは'\x00' と書きます
'\0'とかくのが普通。
'\x00'はコードが0になる文字で、'\0'は文字列の終わりにくる特殊な文字。
「結果的には」同じだけど(ASCIIの場合?)。
0292デフォルトの名無しさん
NGNG「初期化」というのは、宣言のときの代入です(違うけど)。
Cでは変数を「型名 変数;」として宣言しますが、
「型名 変数 = 初期値;」とすることで、変数の定義と同時にその値を設定することも出来ます。
'\x__'は、xのあとに16進数の値を入れて、コードを直接指定します。
0293まあ一応
NGNGchar* p = "abcd"
はポインタだから配列とは違うぞ。と。
確保されるのはcharへのポインタとabcd\0だぞ。と。
char p[] = "abcd"
とは違うぞ。と。
(下はp="efgh"とかはできないが上はできる)
0294デフォルトの名無しさん
NGNGところで課題出してほしいの?
0295デフォルトの名無しさん
NGNG文字列を格納する片方向リスト構造を構築し、
任意の個数のデータを入力させ、最後に、その一覧を
通常ソート(頭文字がA→Zとなるように)及び
逆ソート(終端文字がA→Zとなるように)で出力せよ。
0298デフォルトの名無しさん
NGNGどの程度の問題を要求しているのか分からないけど、
「指定したファイルを、バイナリ形式で(
16バイト分を1行として、16進数で)表示せよ」 とか。
バイナリエディタみたいに。
00000 00 32 FF 55 23 56 F3 4F 93 F2 00 34 1A B3 34 CD
00001 ...
00002 ...
...
と言う風に表示。
でもって、それをテキストファイルに出力。
0299デフォルトの名無しさん
NGNGそろそろJavaに移るか。
0300デフォルトの名無しさん
NGNGCとPascalはいとこ同士みたいなもんだからね〜
思想的には正反対の部分もあるけど
おっと、300ゲトー、ズサ
0301デフォルトの名無しさん
NGNGCだとぐじゃぐじゃして何がなんだか、書いた本人しかわからんことも多い。
Perlよりはましだが。
Pascalはどうかいてもキレイになるようなしくみがあるんだろうな。
なんでCに負けたんだ?
0302デフォルトの名無しさん
NGNGhttp://web.mit.edu/taoyue/www/tutorials/pascal/history.html
↑これを参照のこと
少なくともWindowsアプリを作る道具として見れば、C(≠C++)には勝ってるね
0303デフォルトの名無しさん
NGNGみためなら、Javaも大して変わらんと思うがナー
本当に違った世界を味わいたいなら、LISPなどお勧めしておきたい。
つーか、一度はやっておくといいよ。
0304デフォルトの名無しさん
NGNG0305Delフサギコ ◆zE1iiRdQ
NGNGミ,,゚Д゚彡 < 何がやれるのか自体がわからなかったので
U つ \飽きました。
@ミ ミ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∪''∪
言語とは難しいですね。
0306デフォルトの名無しさん
NGNGアマゾンでJavaの本、注文したけど、届くまで1ヶ月かかるから。
それまでの間、Pascal の勉強するつもり。
もし時間がそれでも余ったら、VBとDelphiの勉強する。
本は買ってあるから。
0307デフォルトの名無しさん
NGNGpascalの中で、UNIXコマンド使う方法教えてください。
0308307
NGNG0309デフォルトの名無しさん
NGNG0310デフォルトの名無しさん
NGNG0311デフォルトの名無しさん
NGNG0312デフォルトの名無しさん
NGNG0313デフォルトの名無しさん
NGNG0314デフォルトの名無しさん
NGNG0315デフォルトの名無しさん
NGNG0316デフォルトの名無しさん
NGNGdelphiは扱ったことがないので純粋なpascalの本を探しています。
0317デフォルトの名無しさん
NGNGとりあえず図書館で探してみてはいかがでしょう。
答えになってないですけど。
0318困ったさん
NGNGどうもうまくかけません。誰か教えてください。
0319困ったさん
NGNG0320デフォルトの名無しさん
NGNG数学の問題
0321デフォルトの名無しさん
NGNGJisu = 5; // 次数(これは5次の場合)
var
tako: array[0..Jisu]of Real; // 多項式
niji: array[0..2]of Real; // 二次式
ans: array[0..Jisu-2]of Real; // 答え
for i := Jisu-2 downto 0 do begin
ans[i] := tako[i+2] / niji[2];
for j := 2 downto 0 do
tako[i+j] := tako[i+j] - ans[i]*niji[j];
end;
これで、ans に商となる多項式、 tako に剰余となる1次式が入るかな。
ゼロ除算とかのエラーは考えてないので、その辺よろしく。
0322困ったさん
NGNG0323デフォルトの名無しさん
NGNG0324デフォルトの名無しさん
NGNGkyasuto
0325デフォルトの名無しさん
NGNG0326デフォルトの名無しさん
NGNG0327デフォルトの名無しさん
NGNGRound関数
0328デフォルトの名無しさん
NGNGhttp://biz.ascii24.com/biz/news/article/2002/06/20/636664-000.html
0330デフォルトの名無しさん
NGNG使ってるひと居ませんか?
Code worrierは既にpascalの対応が終了していて、
本家(あめりか?)で最終pluginがでてるみたいなんですけど、
これって日本語版の最新Code worrierで動くのでしょうか?
OSはMac9です。
よろしくおねがいします。
0331デフォルトの名無しさん
NGNG使えたよ。
ただしVer.7までだけどね。
それとCarbonは駄目っぽ。
0332デフォルトの名無しさん
NGNG仕方ないから書庫から持ってきてもらった。
もう需要が無いんだね。
まだ出てから10年も経っていない本だって……
0333デフォルトの名無しさん
NGNG開発環境があるみたいだね。
開発環境じゃなくて、Palmで動くPascalの処理系があるとうれしいかも。
Pascalの勉強用に。
でも、グラフィティでソースコード入力するのもちょっと面倒か。(w
0334330
NGNG日本語版は最新が7みたいだからこれで逝けるわけですね。
Carbonはとりあえず必要ないです。
ありがとー
0335デフォルトの名無しさん
NGNGビルドする時にBuild Allを選択すればCARBONも使えるようになります。(人に指摘されるまで気付かなかった)
0336330
NGNGで、CW7日本語版アカデミックをゲトして
Pascal Pluginつっこんだら、とりあえず処理はできてる模様。
だけど、目的のコードはbuild出来ない罠。
実はNIH-ImageをソースからMakeしてるんだけど、
type mismach
SFPutFile(〜)
とか、いろいろとおこられるよヽ(`Д´)ノウワァァン!!
0337デフォルトの名無しさん
NGNG1.62ならCWP2でMakeしたのを持ってる。たしかあれからファイルマネージャあたりは
激変したから、大変じゃない?
でも褌EDITがウプデートされるくらいだからな...
0338330
NGNGとりあえず手始めにそのままのをやってみようかと。
そのまま使うだけなら配布されてますしね。
(´-`).。oO(古いCWをとりよせたほうが早いのかなぁ)
0339337
NGNG古いヘッダならADCのサイトにあるような。あ、けど合うのをさがすのがたいへんだね。
0340330
NGNGなんとかNIH-image(1.62)がmakeできたよ。一見ちゃんと動いてるみたいだけど、どうだろう。
PascalもCWもはじめてなんだけど、それ以前にMacの初心者なのが辛いトコロ。
AppleEventを効かすと刺さるんだけど、これって切っちゃっていいものなんだろうか…
ところで、>>1にGUI不可って書いてあることに今気づいたよ。
スレ違いスマソ。
親切な方、誘導きぼんぬ。
0341デフォルトの名無しさん
NGNGDAT落ちは阻止じゃ。
0342デフォルトの名無しさん
NGNGんだ
0343デフォルトの名無しさん
NGNGえ? ここ何処の板? 過去ログ読め?
ショボーン
0344デフォルトの名無しさん
NGNG0345デフォルトの名無しさん
NGNG0346デフォルトの名無しさん
NGNG0347デフォルトの名無しさん
NGNGhttp://home.planet.nl/~mike.wiering/mario/
TurboPascal5.5・6.0・7.0でスーパーマリオを作ってる。
まだソース見てないけど、ちょっと面白そうだ。
0348デフォルトの名無しさん
NGNGPhilips’ Automatical Sequence Calcurator
の略だったなんて初めて知ったよ
0349デフォルトの名無しさん
NGNGジャンプしながらファイアボールを撃つと、
フルスクリーンに関らずシステムメニューが出てしまう…
このキー配列どうにかならないものか…
0350デフォルトの名無しさん
NGNGソースファイルあるんだから、変更できそうだけどな。
生憎TPがないや。本家に行ってDLしてこようかな。
0351デフォルトの名無しさん
NGNGこのスレでリンクしてある「Object Pascal/Delphi(Kylix) プログラミング入門」
はDelphiでの使用に限定しているようなので汎用的なものを……
0352デフォルトの名無しさん
NGNGObject Pasca lは Turbo Pascal/Delphi でしか使っていないのだから、汎用的と言っても意味ないと思う。
標準 Pascal ならあるけど、文字列型も分割コンパイルもない「教育言語」だから、今更覚える必要も無いとも思われ。
0353デフォルトの名無しさん
NGNGボーランドがLinux用に出してるもう一つの製品でも使えるよ。
0354デフォルトの名無しさん
NGNGhttp://www.freepascal.org/
compatible with TP 7 as well as most versions of Delphi
0355352
NGNGあ、Kylix はそうでしたね。失念しておりました。
CodeWarrior と Freepascal は知りませんでした。私は最近の動向をよく分かっていない
ようです(というか、Delphi で事足りているから、追いかける気がしないだけ)。
あと、標準化の中には「ISO Pascal」ってのもあったと言うことを思い出しました。Borland
はこの規格の裁定に入っていないから、気にもしていないけど。
それはそうと、「Object Pascal というのは紛らわしいから?Delphi Language に変える」
という話もあるようだけど、Kylix もあるとしたら、なおさら紛らわしいような気もするんだけ
ど...
0356デフォルトの名無しさん
NGNGPascal Language Reference
Pascal Library Reference
Error Reference
を持っている人居ない?
ObjectPascalを使ってみようと思ってCodeWarriorCDを探してみたのですが見つからないのです。
Pascal Compilers Ref.pdfによるとCodeWarriorPro5のDocumentationフォルダの中にあるはずなんだけど、
いくら探してみ見つからないんです。
Sherlock2で検索かけてもPascal Compilers Ref.pdf以外は見つからなくて……。
Pro7にはPascalのDocumentなんて元から入っていないし……
0357デフォルトの名無しさん
NGNG原文の方しかないらしく、送って来たのは英語……。
しかも200頁超や300頁超でした。
はぁ、頑張って訳すか。
0358アライグマPascal
NGNGすみませんageます。
0359デフォルトの名無しさん
NGNGVar r : record
case byte of
0 : ( i : Longint );
1,9: ( a : extended);
(1) : ( b :array[0..9] of byte );
end;
とかくとき、
iやa,bなどは変数ということは分かるのだけれどその前に書く0や1,9がなんなのか良く分からない。
0360デフォルトの名無しさん
NGNG番号はどの構造をとるかっていう構造識別番号みたいな奴で、byte型なわけだ。
無名だから使ってないみたいだけど、定義の時は必ず適当に決めなきゃならんのかも?
0361デルファイの名無しさん
NGNGcase TAG: byte of
0 : ( i : Longint );
1,9: ( a : extended);
(1) : ( b :array[0..9] of byte );
end;
のように、タグフィールドを入れられるのですが、これは省略可能なのです。
この場合、TAGが0ならaとbにアクセスするとエラーになるPascal実装もあった…かな?
(DelphiだとTAGは単なるメンバ以上の意味を持ちませんが)
0362デフォルトの名無しさん
NGNGそれで先頭のアドレスをそろえているのか。
持っているPASCAL入門の本は可変部の説明がなおざりだったんで何の事か良く分からなかったよ。
0363デフォルトの名無しさん
NGNG0364デフォルトの名無しさん
NGNG0365デフォルトの名無しさん
NGNGC出身者が書くとそうなりがちなのかも。
0366デフォルトの名無しさん
NGNGCにはvoidがある。
そんなソースを書くのはDQNだけ。
0367デフォルトの名無しさん
NGNG0368デフォルトの名無しさん
NGNG> 単にprocedure(手続き)を宣言するのが面倒臭かったのでは?
意味わからん。function の方が面倒と思うが...。
0369デフォルトの名無しさん
NGNGif A then B else C
A && B || C
0370デフォルトの名無しさん
NGNGでも英語できないから難しい。だれか邦訳してくれ言語リファレンス。
0372デフォルトの名無しさん
NGNG0373デフォルトの名無しさん
NGNG0374デフォルトの名無しさん
NGNGTPとか、Pascalのがタマーにあったりしてうれしい。
あとは、大学に忍び込んで生協にあったりなかったり。
0375デフォルトの名無しさん
NGNG確か{ }で囲まれた部分はコメント部分で、コンパイル時には無視される部分だと記憶しているのだけれど。
{$I PascalOverrides.p}や{$unused ( inCallRef, inUserData ) }などのようにコメントにしては不自然な気がしてならない。
他にも
{$IFC UNDEFINED __TRANSLATION__}
{$I Translation.p}
{$ENDC}
なんて記述がある。
0376デフォルトの名無しさん
NGNG0377デフォルトの名無しさん
NGNGヘルプ嫁。
0378デフォルトの名無しさん
NGNGしかし、コマンドラインでオプションを指定するとそのソース全部に一括してそのオプションが適用されてしまう。
コンパイラ指令としてソース中に記述すれば部分的な適用もできるし、IFなどの制御構造を使った複雑な指定もできる。
例えば、コマンドラインで「 -$O+ 」と指定すると、それはそのプログラム全体が最適化オプションが適用されてしまうが、
ソース中に「 {$O+} 」と書いて指定すれば手続き一つだけについて最適化オプションを適用することもできる。
0379375
NGNGコンパイラ疑似命令かぁ。
どうりでPASCAL入門の何所にも書かれていないわけだ。
0380デフォルトの名無しさん
NGNG0381デフォルトの名無しさん
NGNGIF文だけを用いたプログラムと
中間状態を用いたプログラムを書いてくれませんか?
0382デフォルトの名無しさん
NGNGBEGIN
IF a < b THEN IF a < c THEN IF a < d THEN GetMinimum := a
ELSE GetMinimum := d ELSE IF c < d THEN GetMinimum := c
ELSE GetMinimum := d ELSE IF b < c THEN IF b < d THEN GetMinimum := b
ELSE GetMinimum := d ELSE IF c < d THEN GetMinimum := c
ELSE GetMinimum := d
END;
0383デフォルトの名無しさん
NGNGBEGIN
IF a < b THEN b := a;
IF c < d THEN d := c;
IF a < d THEN GetMinimum := a
ELSE GetMinimum := d
END;
0385デフォルトの名無しさん
NGNG0386デフォルトの名無しさん
NGNG0387デフォルトの名無しさん
NGNGfunction intersection(S1,S2:list):list;
var s,p:list;
begin
interlist(S);p:=S1↑.next;
while p≠nil do begin
if search(p↑.item,S2)≠nil then insert(S,p↑.item);
p:=p↑.next;
end
intersection:=S
end
と言うプログラムが本に載ってたんだけど、これってどういう手順で共通集合を出してるかわかんないです。
分かる人いたら、解説キボンヌ
0388デフォルトの名無しさん
NGNGこりは Pascal 言語の形を借りたアルゴリズムの説明コードだから、説明してくれと
言われても、このコードを読んで。としかいえないような。
集合 (a,c,d,f) と (b,c,f,g) の共通部分を取得するときに、人間ならどうやるか。
ってことをそのまま実装しているだけだぞ。
0389387
NGNGbegin以下がどのような手順によってS1,S2の共通部分を取得してるかわからないんス。
p:=S1↑.nextってとこはpにS1のどの値を代入?
0390デフォルトの名無しさん
NGNGpが指す値(item)と同じ値のがリストS2に在るかどうか調べる(search)
もしなければ最後まで行ってしまうのでnilになる。
あったら、その値をSにくっつける。
以下、S1の末尾に行くまで繰り返す。
こんなところかな。
0391387
NGNG解説サンクスベリーマッチョです
S1の先頭の要素をpに入れてから、ループになりますよね?
ループの条件はpが空集合でないときで、ってやっていって、S1はいつ先頭の要素から、先頭の次の要素に変わってるのかが分からないです。
0392デフォルトの名無しさん
NGNG0393392
NGNG【[データ本体][次の要素へのポインタ]】
これが一次元に繋がってるのが線型リスト。
[先頭をさすポインタ]
↓
→【[データ1][要素2へのポインタ]】
↓
←←←←←←←←←←←←←
↓
→【[データ2][要素3へのポインタ]】
↓
←←←←....←←←←←
↓
→【[データn][nil〔終端〕]】
知ってたらスマソ。
0394デフォルトの名無しさん
NGNG0395デフォルトの名無しさん
NGNG>ループの条件はpが空集合でないときで
じゃなくて、pが指す先が存在するかどうかってこと。
392さんの図で指すものがなくなったらend
0396392
NGNG0397392
NGNG【[データ本体][次の要素へのポインタ]】
みたいな構造体を指し示すタイプの変数だ。
もっと詳しくいえば、その構造体の存在するメモリ上のアドレスを保持している。
このタイプの変数は、その変数の後ろに「↑」をつけることによって
そのレコードの内容にアクセスできる。
※コーディング時には「↑」は「^」を使う。
ポインタ p が例えば2番目のレコードのアドレスを保持しているなら
p^.item と書くことによって
2番目のレコードの item フィールドを参照しているのと同じ結果になる。
(整数が入っているなら writeln(p^.item); などと書ける。)
p にはポインタ型の価を代入できる。
p := (3番目の要素のアドレス)
みたいに代入すれば、今度は
p^.item で3番目の要素の item フィールドを参照できる。
【[データ本体][次の要素へのポインタ]】
この構造体の[次の要素へのポインタ]というフィールドも、またポインタ型だ。
この値で p の値を更新すれば
p := p^.next;
p を使って次のレコードを参照できる。
こんなふうに使っていくのが線型リスト。(本読んだ方がいいと思うけど)
0398デフォルトの名無しさん
NGNG0399デフォルトの名無しさん
NGNG0400398
NGNG0401399
NGNG印刷して^は見にくいので↑になっていると思ふ
Pascalが生まれた頃は2バイト文字なんて一般的じゃ無かった筈だし
0402398
NGNG0403デフォルトの名無しさん
NGNG0404デフォルトの名無しさん
NGNG0405387
NGNGとても分かりやすくて感謝してます。
function intersection(S1,S2:list):list;
var s,p:list;
begin
interlist(S);p:=S1↑.next;
while p≠nil do begin
if search(p↑.item,S2)≠nil then insert(S,p↑.item);
p:=p↑.next;
end
intersection:=S
end
において、pの必要性がわかりません。
p:=S1↑.next;の部分を消して、以下pをS1としても駄目なんでしょうか?
0406デフォルトの名無しさん
NGNG言ってることよく分からんよ。
0407デフォルトの名無しさん
NGNG線形リストはリスト全体を保持しておくために先頭のレコードを指すポインタが必ず必要です。
この値を変更して途中のレコードを指すようにしてしまうと
それ以前のレコードを参照する手段が完全に失われてしまいます。
S1 これなら全て参照可能
↓
【データ|next】→【データ|next】→【データ|next】→【データ|nil=終端】
S1を変更した場合 S1
↓
【データ|next】→【データ|next】→【データ|next】→【データ|nil=終端】
↑
このレコードが参照不能になる
disposeしない限りレコードはメモリ上に残っていますから
参照不能なメモリブロックがメモリ上に残るという
まずい事態になります。(メモリリーク?)
線形リストの処理は
先頭を示すポインタはそのままに、
別なポインタ変数を用意して
その値を変更して順次リストをたどっていきます。
で、405のような処理を書いた場合は
一度きりなら動くかも知れないが
以降、このリストを参照することができなくなる、というのが結論かな。
0408補足
NGNGその場合でも常に全体を参照できる様、
例えば先頭にレコードを追加する場合は
変更後の先頭のレコードをさすようにポインタを変更します。
先頭のレコードを削除する場合は
次のレコードをさすようにポインタの値を変更します。
ところでプログラム中の4行目のp:=S1↑.next; は
もしかしたら p := S1 ではないのかと。
S1の一番はじめのレコードが無視されているような気がします。
0409デフォルトの名無しさん
NGNGつまり、pはS1の値を保持するためにあると言うことかな?
>もしかしたら p := S1 ではないのかと。
確かにそんな気がします。
S1の先頭にダミーセルがあることにしてるのかなあ?
0410407 & 408
NGNGfor i:=1 to 10 do
if a[i] <= then xxxx;
のiがP、aがS1とか。(かなり違うが)
価を自在に変えながらリスト中のレコードを次々と指し示していく役割をするポインタ(P)と
全体を保持しておくために常に先頭を指すポインタ(S1)は
役割が違うと考えた方がいいかも。(追加、削除を伴わない処理の場合)
0411ああ
NGNG今私は数学系の学部に在籍しておりまして、研究上アルゴリズムや素因数分解
等をコンピュータ上で行わなければならない必要性が出てきました。
時間の関係上、手っ取り早くそのような計算が自在にできるようになりたいのですが、
当方、残念ながらコンピュータはネットする程度でプログラムやC言語、UNIX等の知識は
限りなく0に近いです。。何からはじめればよろしいでしょうか。御指導願います。
0412ああ
NGNG0413デフォルトの名無しさん
NGNGpはいわゆるイテレータというやつで、
S1はリストの先頭を保持するという役割があるので
たとえS1でpを代用できてもするべきじゃないです。
0414デフォルトの名無しさん
NGNG2: Got SHORTSTRING, expected LONGINT
どなたかこのエラーメッセージのわかる方いらっしゃいますか?
0415デフォルトの名無しさん
NGNG0416デフォルトの名無しさん
NGNG0417デフォルトの名無しさん
NGNG0418デフォルトの名無しさん
NGNGよくわかりません。
0419デフォルトの名無しさん
NGNG0420デフォルトの名無しさん
NGNG中身を比較したのちポインタを書き換える。それだけ……
基本情報処理の本のリストに関する部分を読めば直に分かる。
0421デフォルトの名無しさん
NGNG対象をポインタで持っているのなら、ヒープソートなんかで木構造を一時作って、
それを再度リスト構造に戻すのが良いかも。
汎用的に作るのなら、ソート関数は作り込まず、外部のソート関数を呼び出すよ
うにすればよいし。
0422
NGNG0423デフォルトの名無しさん
NGNG0424
NGNG窓って言うか…何て言ったらいいんだろう?
Delphiでコンソールアプリケーションを作って実行したらコマンドプロンプトが起動するじゃないですか。
それを閉じたいのですが無理なんでしょうか?
0425デフォルトの名無しさん
NGNG0427デフォルトの名無しさん
NGNGごめん、(return) はなんとなくノリで。
DOS 窓の終了と同じ雰囲気で。
0428デフォルトの名無しさん
NGNGDelphiはDelphi板で聞くのが良いよ。
0429デフォルトの名無しさん
NGNGExitは関数や手続きを抜けるだけじゃない?
もちろんprogram .. begin .. end のレベルで実行すればプログラム自体を
抜けるけど。
どこでも即座に終了させたかったらHaltを使うべし。
0431デフォルトの名無しさん
NGNGどなたか教えていただけないでしょうか?
0432デフォルトの名無しさん
NGNG0433431
NGNG0434デフォルトの名無しさん
NGNG餅炒る。
モチ要る。
0435デフォルトの名無しさん
NGNGif (数字) {
スタックにpush;
} eles if(演算子) {
スタックから二つpopして演算;
結果をスタックにpush;
} else {
error;
}
0436IP記録実験
NGNGhttp://qb.2ch.net/test/read.cgi/accuse/1042013605/
1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0437デフォルトの名無しさん
NGNG全板IP記録に追い込まれた今の気持ちをどうぞ。
0438デフォルトの名無しさん
NGNG0439デフォルトの名無しさん
NGNG0440デフォルトの名無しさん
NGNG0441IP記録実験
NGNGhttp://qb.2ch.net/test/read.cgi/accuse/1042013605/
1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0442デフォルトの名無しさん
NGNG逝き遅れの妹発見
0443デフォルトの名無しさん
NGNGタイプミス
スマソ
0444デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 138720人 発行日:2003/1/9
年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。
そんなわけで、年末に予告したIP記録ですが実験を開始しています。
「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0445デフォルトの名無しさん
NGNG0446デフォルトの名無しさん
NGNG0447デフォルトの名無しさん
NGNG0448デフォルトの名無しさん
NGNGいつか全板で強制表示になるのだろうか?
スクリプトくめばどこの板だって荒らせるだろうし
0449デフォルトの名無しさん
NGNG0450デフォルトの名無しさん
NGNGそれは当然考えてはいますが、小ネタやちょっとした意見を書き込むときにもそれを
意識しなくてはならないというのはしんどい
0451デフォルトの名無しさん
NGNG0452デフォルトの名無しさん
NGNG奴ら何しでかすかわからない凶悪な連中だからな。
ログってひろゆきしかみれないのか?
削除人が見れたら問題・・・以前削除に絡んで強請をした奴もいるらしいし
0453デフォルトの名無しさん
NGNG0454デフォルトの名無しさん
NGNGウェー ハッハッハ
0455デフォルトの名無しさん
NGNGだったら、全板強制IDにして暗号キーだけ保存しておけばいいんじゃないの?
0456デフォルトの名無しさん
NGNG書き方がネタっぽすぎw
0457デフォルトの名無しさん
NGNG在日のアサピーが自ら2CHにブラクラ貼ったと自白www
調子に乗ってアタック開始、しっかりログ取られて通報すました。
祭り中です。
0458デフォルトの名無しさん
NGNG0459デフォルトの名無しさん
NGNG0460デフォルトの名無しさん
NGNG0461デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 139038人 発行日:2003/1/10
なにやら、連日メルマガだしてるひろゆきです。
そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。
重くなって落ちたりしてもご愛嬌ってことで。。。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0462デフォルトの名無しさん
NGNGまあいいか。。。
悪いことをする気はなかったど、なんだか
夢がなくなるな。
なんつーか、手口のきれいな銀行破りが
捕まっちゃったみたいな気分。
0463デフォルトの名無しさん
NGNG今までの2ちゃんみてりゃ一目瞭然。
匿名のかさをきて暴言はいてる奴らが減っていいかも。
0464デフォルトの名無しさん
NGNG0465デフォルトの名無しさん
NGNGhttp://live2.2ch.net/test/read.cgi/news/1041867442/
0466デフォルトの名無しさん
NGNG犯人が17歳以下なら話は別だが
0467デフォルトの名無しさん
NGNG0468デフォルトの名無しさん
NGNG253 >>どうも昔から、下級審の裁判官は余計なことを書きたがる。
お前ら判決文を読んだのか? 被告がISP責任法を根拠に削除義務違反はないと主張したから書いてるんだよ。
http://courtdomino2.courts.go.jp/kshanrei.nsf/$DefaultView/2075F93E3210745849256BED0030F3EF?OpenDocument
0469デフォルトの名無しさん
NGNGここまで話題性の在るサイトだし。
IP取ってるんだから今までは『訴えても意味無い』って諦めてた
人たちも訴えるようになるかもね。
基本的に訴えられるのは書き込みした人だろうけど、
その様な場所を提供したって事実に変わりは無いから
今まで以上に2chも訴えられるかも…。
推論スマソ
0470デフォルトの名無しさん
NGNG0471デフォルトの名無しさん
NGNG0472デフォルトの名無しさん
NGNG0473山崎渉
NGNG0474デフォルトの名無しさん
NGNGfreeパスカルとの違いは何かあるんですか?
使える文法が違う、みたいな
0475デフォルトの名無しさん
NGNGはぁぁぁ。あと、1週間以内で生理・・・。
何事にもむかついてたまらないっ!
生理前って、ブルーになったり、いらいらしたり。。。
ほんと勘弁してって感じ。
0476山崎渉
NGNG0477デフォルトの名無しさん
NGNG0478デフォルトの名無しさん
NGNG0479デフォルトの名無しさん
NGNGconst {定数}
BUF_SIZE = 32768;{ Buffer Size = 32768 (8000h) }
Ver: string[3] = '1.0';
定数の事かと…
var {変数}
argc: integer;
argv: string;
i,k,l: integer;
0480山崎渉
NGNG0482デフォルトの名無しさん
NGNGMac用だがここで紹介されているThinkPascalってどうよ?
少しやってみたが、英版なのでエディタで日本語が表示できん・・・
0483デフォルトの名無しさん
NGNG0484デフォルトの名無しさん
NGNG別途コード戦士が必要みたい。
でもそれだったら最初からコード戦士でやった方が良い罠。
0485デフォルトの名無しさん
NGNGこれでいけるのではないでしょうか。
Carbonized Port of THINK Pascal TCL
http://pascal-central.com/carbon-tcl.html
0486デフォルトの名無しさん
NGNG0487デフォルトの名無しさん
NGNG0488デフォルトの名無しさん
NGNGhexcode: array[0..15] of char = ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
function HexStrB(num:byte):string;
begin
hexstrB:=hexcode[lo(num) shr 4 ]+hexcode[lo(num) and $f] ;
end;
ten := ' ';
num := 0;
repeat
writeln(HexStrB(buf[num]) + ten + HexStrB(buf[num+1]) + ten + HexStrB(buf[num+2]) + ten + HexStrB(buf[num+3]) +
ten + HexStrB(buf[num+4]) + ten + HexStrB(buf[num+5]) + ten + HexStrB(buf[num+6]) + ten + HexStrB(buf[num+7]) +
ten + HexStrB(buf[num+8]) + ten + HexStrB(buf[num+9]) + ten + HexStrB(buf[num+10]) + ten + HexStrB(buf[num+11]) +
ten + HexStrB(buf[num+12]) + ten + HexStrB(buf[num+13]) +
ten + HexStrB(buf[num+14]) + ten + HexStrB(buf[num+15])));
inc(num,$10)
until (num = $200);
0489デフォルトの名無しさん
NGNG0490デフォルトの名無しさん
NGNG0491デフォルトの名無しさん
NGNGEiffelをお薦めしよう。
0493デフォルトの名無しさん
NGNG0494デフォルトの名無しさん
NGNGPascalを勉強する価値がないとしたらそれは
実用的では無いからではなく時代遅れだから。
昔は教育用言語として教えられてはいたけど
今ではJavaとSchemeに取って代わられたよ。
0495デフォルトの名無しさん
NGNG0496デフォルトの名無しさん
NGNG新型パソコンでEMSメモリ使用可能なものがあったら教えてください。
0497デフォルトの名無しさん
NGNG0498デフォルトの名無しさん
NGNGDOS5.0の時とかXMSをEMM386でEMSに化けさせてたと記憶してるけど。
0499デフォルトの名無しさん
NGNG497さん498さんレスありがとうございます。
>DOS 上で動かすか、エミュレータ上で動かせば。
ハードの問題なのでどちらの方法でも動かないのでは?
システムコマンダーでWinとDosのデュアルブートにするつもりなのですが
0500デフォルトの名無しさん
NGNG間を取ってWindows3.1とかどうだ?
って言うかVMWareでも使った方が楽ちんな予感。
0501デフォルトの名無しさん
NGNG昔やった記憶があるが具体的には忘れた。
ただ楽するなら、500(おめ!)さんの
言うようにVMWareでも使った方がいい。
0502デフォルトの名無しさん
NGNGPascalって実用性が無いんですか?
CGIをやるのに適してるって聞いたんだけど・・・
0503デフォルトの名無しさん
NGNG0504デフォルトの名無しさん
NGNGPure Pascalじゃなくて有償版Delphi/Kylixなら高機能なCGIも作れないでもない
0505デフォルトの名無しさん
NGNGアホがいます。
0506デフォルトの名無しさん
NGNG0507デフォルトの名無しさん
NGNG何でもかんでもライブラリがないと何もできないかわいそうな人がいます。
0508ななしへたぐらま ◆XcB18Bks.Y
NGNGCのscanfに相当する機能を実現する関するのライブラリって
どこかにありませんでしょうか.
以前自作したのですが作りが下手なのか処理が重すぎて….
テキスト解析はちゃんと本を読んで勉強しないとダメかな.
0509デフォルトの名無しさん
NGNG> Cのscanfに相当する機能を実現する関するのライブラリって
> どこかにありませんでしょうか.
scanf のソース見てポーティングすればいいとおもうけど。
可変引数の扱いをどうするかが問題かと思うが。
0510デフォルトの名無しさん
NGNGオープン配列とかで何とかならない?
0511山崎渉
NGNG0512ななしへたぐらま ◆XcB18Bks.Y
NGNGレスが遅くなってごめんなさい….
scanfのソースは探してみます.ありがとうございます.
ちなみに可変引数は前に作ったときは配列型で対応していました.
var指定が出来なかったのでポインタを渡す仕様にしていました.
0513デフォルトの名無しさん
NGNGまたpacked array[0..7] of booleanを1バイトに詰め込んでくれたり、set of 0..256が書けたりするのも…。
どれも実装が面倒なんだろうか…
0514bloom
NGNG0515デフォルトの名無しさん
NGNGってことはCharがWideCharになるDelphi.NETではset of 0..65535が可能に!?
0516513
NGNGJIS規格書が会社なんで確認できないな。
基底型は任意の順序型だと思っていた。
0517デフォルトの名無しさん
NGNG実用性がないとかまことしやかに言われていますが、そんなことはないです。
CGI は、言語が標準入力と標準出力をサポートしていれば、どんな言語でも可能です。
0518デフォルトの名無しさん
NGNGGNU Pascal は Borland Pascal 7.0 という「標準のようなもの
(quasi-standard)」だけでなく、ISO 7185 Pascal Standard を完全に
サポートしている唯一のコンパイラです。
0519デフォルトの名無しさん
NGNG適用範囲を限定すればJIS PASCALでも実用性が見いだせるということですね
逆に何らかの拡張を施さないと適用範囲は広がらないと。
0520513.
NGNGありがとう。
危うく自前でコンパイラ作りそうだったよ。
GNU PASCAL検討してみます。
0521デフォルトの名無しさん
NGNGpacked array[0..7] of booleanを1バイトに → 出来る。
set of 0..256が書けたり → set of 0..2047までOK。 (256byte)
THINK Pascal
packed array[0..7] of booleanを1バイトに → 不可
set of 0..256が書けたり → set of -32768..32767までOK。
0522デフォルトの名無しさん
NGNGJIS Pascal と厳密にやると、分割コンパイルができないなど不便はありますが、
JIS/ISO 互換でやりたいなら、Turbo Pascal や Delphi のようなものを使って、
分割コンパイルは拡張機能を利用し、コード自体は、できる限り JIS/ISO 標準で
書くということなら、ISO C 言語程度の実用性は出てきます。
Turbo Pascal や Delphi が完全に ISO/JIS に準拠しているわけではありませんが、
かなり標準 Pascal の文法をサポートしています。
この本は、Turbo Pascal や JIS/ISO 標準 Pascal その他の文法に差異があるところに
注釈が入っていてよい本です。
演習PASCALとその応用
http://www.saiensu.co.jp/books-htm/ISBN4-7819-0507-2.htm
0523デフォルトの名無しさん
NGNG手元の Linux に入っていた GNU Pascal 2.95.4 でやってみましたらできるようです。
サンプル・ソース:
program iso(input, output);
var
a : packed array[0..7] of boolean;
b : set of 0..65535;
begin
writeln('hello');
end.
gpc -o iso iso.p
とやったら、
iso.p:5: warning: integer set size limited to 65535 elements from low bound
iso.p:5: warning: use `--setlimit=NUMBER' to change the limit at compile time
と出たので、
gpc --setlimit=65536 -o iso iso.p
としたら、エラーも警告もなくコンパイルできました。
動作は未確認ですが (^^
ちなみに、GNU Pascal は cygwin を使えば Windows でも動きます。
0524動画直リン
NGNG0525デフォルトの名無しさん
NGNG確か標準ってオープン配列で
procedure A(const B: array[L..H] of Integer);
なんて構文も使えませんでしたっけ?
0526513.
NGNGありがとう
最近の処理系は制限が少しずつ取れてきてるのですね
packed set of -maxint..maxintはどうだろう。
コンパイル出来ても実行は出来なくて当然だとは思うが…
CのビットフィールドとPASCALの詰めあり構造型の性質がそっくりなのは偶然?
0527デフォルトの名無しさん
NGNG2 バイトで、0..31 は 4 バイト。これじゃだめですかね。
オプション指定もあるのかもしれませんが。
0528デフォルトの名無しさん
NGNGGNU Pascal でのことです。
0529デフォルトの名無しさん
NGNGhttp://www.gnu-pascal.de/gpc/index.html
0530513.
NGNG多分それは各要素に不定値を表すビットが含まれているんじゃないかと。
0531デフォルトの名無しさん
NGNG0532デフォルトの名無しさん
NGNG単に2byte単位でしか割り当て出来ないだけのような
0533513.
NGNGそういわれればそうだな。はやとちりでした。
実行環境に適切な境界迄余分なバイトが詰められるのは構わないです。
0534デフォルトの名無しさん
NGNG0535デフォルトの名無しさん
NGNG0536521
NGNG>>526
>packed set of -maxint..maxintはどうだろう。
>コンパイル出来ても実行は出来なくて当然だとは思うが…
maxintが32767なのでTHINK Pascalでコンパイル&実行できます。
集合はもともと1bit扱いなのでpackedがついてもつかなくても
変数のサイズは同じです。
エラトステネスのふるいで素数を求めるプログラム、
set of 0..maxint (32767)でコンパイル&実行できました。
最後の3つの素数 = 32717 32719 32749
0537デフォルトの名無しさん
NGNGエラトステネスのふるいって、集合型でどうやるんですか?
0 から n までの配列を用意して、素数なら true、合成数なら false にしていく、
というものだと思うんですが。
0538別人
NGNG配列で A[i] → 集合で i in A
A[i] := True → Include(A, i)
A[i] := False → Exclude(A, i)
Adaなんか開き直ってBoolean配列に集合演算の能力持たせてるし。
0539デフォルトの名無しさん
NGNGはじめに[2,3,4,5,6..maxint]という集合を用意しておいて
nの倍数を集合から除去していくだけ。
0540デフォルトの名無しさん
NGNGコンパイル・コマンド: gpc --standard-pascal --setlimit=65536 -o primenumber primenumber.p
program primenumber(input, output);
const
n = 65535;
var
prime : set of 0..n;
i : integer;
j : integer;
begin
prime := [0..n];
for i := 2 to n do
if prime >= [i] then
begin
j := i + i;
while j <= n do
begin
prime := prime - [j];
j := j + i;
end
end;
for i := 2 to n do
begin
if prime >= [i] then
writeln(i);
end
end.
0541デフォルトの名無しさん
NGNGprogram primenumber(input, output);
const
n = 65535;
var
prime : set of 0..n;
i : integer;
j : integer;
begin
prime := [0..n];
for i := 2 to n do
if prime >= [i] then
begin
j := i + i;
while j <= n do
begin
prime := prime - [j];
j := j + i;
end
end;
for i := 2 to n do
begin
if prime >= [i] then
writeln(i);
end
end.
0542デフォルトの名無しさん
NGNG&ensp;の嵐で何が書かれているのかさっぱりわからん。
0543デフォルトの名無しさん
NGNGあれ、そうですか。私 Opera なんですけど、大丈夫です。
ブラウザ依存なんでしょうか。すみません。
0544デフォルトの名無しさん
NGNGIE 6 では大丈夫です。
0545デフォルトの名無しさん
NGNG0546513
NGNGもし定義できるのならinteger型の範囲は遙かに越えてしまうな
で、更に(有限)整数上の加法と一致するように型T上の加法をうまく定義して…(略)
普通はintegerの配列で実現する多倍長整数とは一風変わった整数(環)が出来そう
これをリストに持たせてもっと大きな数に対する〜のふるいが…
工夫しないとメモリ不足になりそうだな
或いはset of -maxint..maxintを基数2の固定小数点表現とみなすのも面白そうだ
体調が回復したらやってみよう
0547デフォルトの名無しさん
NGNG0548山崎渉
NGNG0549山崎渉
NGNGピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0550デフォルトの名無しさん
NGNGAppleのObject Pascalレポートの名前が書いてあるので、
やっぱObjectPascal="object"型のあるPascal、でいいらしい。
だからどうした、と言われると困るが
0551デフォルトの名無しさん
NGNG0552デフォルトの名無しさん
NGNG0553デフォルトの名無しさん
NGNG0554デフォルトの名無しさん
NGNG10人分の学生の成績データを打ち込み、
次に10点区切りでヒストグラムを出力するプログラムを書こうとしています。
現在ヒストグラムの作り方がちとわかりません。どんな形のヒストグラムでもいいのでプログラムソースを教えてもらえないでしょうか?
0555デフォルトの名無しさん
NGNGif (点数 => 10) and (点数 < 20) then ヒストグラム[2] := ヒストグラム[2] + 1;
...
と並べて書くとか。
0556デフォルトの名無しさん
NGNG学校の課題だろうと思うんで、ここでいきなり答えを書くのはちょっとね。
自分でどこまでやったん?
0557デフォルトの名無しさん
NGNGVAR
data: ARRAY[1..5] OF INTEGER;
i, j: INTEGER;
BEGIN
data[1] := 0; data[2] := 1; data[3] := 4; data[4] := 2; data[5] := 1;
FOR i := 1 TO 5 DO
BEGIN
Write('Fraction ' + IntToStr(i) + ':');
FOR j := 1 TO data[i] DO
Write('*');
WriteLn;
END;
END.
0558デフォルトの名無しさん
NGNGプログラムの流れとしては
(1)データの入力
(2)集計
(3)ヒストグラムの出力
に分かれるわけだが。
0559デフォルトの名無しさん
NGNG0560デフォルトの名無しさん
NGNGなかなかエレガントな使い方があるものだね
感心しますた
0561デフォルトの名無しさん
NGNGどなたか、教えていただけませんか。
0562デフォルトの名無しさん
NGNG取り敢えず「手塚治虫」で検索しとけ。
0563デフォルトの名無しさん
NGNGカードゲームなら実際のカードを使って一人遊びすれば必要な構造が見えてくるぞ。
0564デフォルトの名無しさん
NGNG0565名無し@沢村
NGNG取りあえずじゃねーんだよ!!
おまいはタンスとかあってなっとらんぞ!!!
http://jbbs.shitaraba.com/computer/7294/
0566デフォルトの名無しさん
NGNG本田 守さん
--------------------------------------------------------------------------------
名前
本田 守/ほんだ まもる
ハンドル
Mr.あねさん
ホームページ
http://www2.neweb.ne.jp/wd/wonder/
http://hp.vector.co.jp/authors/VA015412/
MESSAGE
プログラムの勉強をはじめて1年とちょっとになります。まだまだ高度なものを作るには程遠いですが、先だっては某社のプログラミングコンテストに入賞させていただきました。
--------------------------------------------------------------------------------
S O F T W A R E
--------------------------------------------------------------------------------
Windows95/98/Me/アミューズメント
●KIKU おど〜る
音楽CDをかけるとキャラクターが踊ります
0567デフォルトの名無しさん
NGNG0568デフォルトの名無しさん
NGNG0569デフォルトの名無しさん
NGNG0570ななしへたぐらま ◆XcB18Bks.Y
NGNGあの漫画の題名はトランプのそれとは無関係だそうです.
…じゃなくて,どうしてプログラミングを教えている学校の先生は
生徒の理解度を無視してこういう課題を出すのか理解に苦しみます.
とりあえず>561はじゃんけんゲームは作れますか?
0571561
NGNGもちろん作れません
何かヒントでもいいんでおねがいします。
0572デフォルトの名無しさん
NGNGゲームのルールをよく吟味して場にある有形、無形のものを列挙してみんさい
0573デフォルトの名無しさん
NGNG勝敗を判定する関数と
手に持ったカードを表示する関数と
入力を受け付けてカードをとるか終了するか決める関数を書けばいい。
0574デフォルトの名無しさん
NGNG0575デフォルトの名無しさん
NGNGhttp://plaza16.mbn.or.jp/~satchel/omanko_marumie/
これはタマラン…(´Д`;)ハァハァ
0577ななしへたぐらま ◆XcB18Bks.Y
NGNG簡単なゲームプログラムを解説したサイトか入門書を見つけてみて.
やりたい処理をプログラムというカタチにするというのは一番基本的な能力であり,
一つや二つのヒントで解決する問題ではありません.
でもこれさえクリアすればプログラミングは半分マスターしたようなものです.
0578デフォルトの名無しさん
NGNG「無限デック使ってます」って言えばカードの残り考えなくてもすむかも。
(ハートのAが10枚出てきても知らんふり。)
0579山崎 渉
NGNG__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0580デフォルトの名無しさん
NGNG0581デフォルトの名無しさん
NGNG0582デフォルトの名無しさん
NGNG0583デフォルトの名無しさん
NGNGここの練習1なんですが、どのように回答するのがスマートなんでしょうか。
学生番号用のソート手続きをもうひとつ加えて場合分けするのはあまりよくないような気がするんですが、
他に思い浮かばないんです。
0584デフォルトの名無しさん
NGNG0585デフォルトの名無しさん
NGNG引数は点数でソートするか学生番号でソートするかを示す。
「student_record」と「ソートの引数」を引数にとる関数をつくる。
返り値は点数か、学生番号。
この関数をつかってソートをつくる。
あんまり効率よくなさそうだけど。
0586デフォルトの名無しさん
NGNGfunction CompareBango(var S1, S2: student_record): Boolean;
って比較する関数を適当に作って。
var
Compare: function(var S1, S2: student_record): Boolean;
begin
if 点数でやるなら then
Compare:=CompareTensu
else
Compare:=CompareBango;
あとはCompareで比較してソートで良いと思うよ。
end;
0587デフォルトの名無しさん
NGNG作成講座ページ紹介してください。
あと質問なんですが、これだけでも作れますか?ブロック崩し(505対応版)
win98(HSPダウンロード済み)
0588デフォルトの名無しさん
NGNGHSPじゃ無理。
DoCoMo Net - 製品・サービス - i-mode - iアプリコンテンツの作成について
http://www.nttdocomo.co.jp/p_s/imode/java/index.html
0589583
NGNG>>585と>>586の手法は同じではないですよね。
かなり参考になりました。
ですが、585さんの
>ソート用の手続きをつくる。
>引数は点数でソートするか学生番号でソートするかを示す。
これを具体的にどうしたらよいのかぜんぜんわからないんです・・・
例題だと、
if student[i].score < student[j].score then begin
で点数で比較してますよね。
これを点数だけではなく番号でも比較できるにするためにはどうしたらいいのでしょうか。
0590デフォルトの名無しさん
NGNG...
if hoge(student[i], x) < hoge(student[j], x) then begin
って書いて、hogeも書く。
0591デフォルトの名無しさん
NGNG比較部分を関数にするだけだって
function CompareTensu(var S1, S2: student_record): Boolean;
begin
CompareTensu:=(S1.score < S2.score);
end;
function CompareBango(var S1, S2: student_record): Boolean;
begin
CompareBango:=(S1.id < S2.id);
end;
で>>586のようにCompareTensuとCompareBangoのどっちか使いたい方をCompare変数に入れる。
どっちの比較方法を使うかはコマンドラインオプションで切り替えたりすると良い。
例えば
Compare:=CompareTensu;
for I:=1 to ParamCount do
begin
if ParamStr(I)='/b' then
begin
Compare:=CompareBango;
Break;
end;
end;
でコマンドラインに/bを付ければCompareが番号で比較、付けなければ点数で比較になる。
あとは
if Compare(student[i], student[j]) thenに変えて終わり。
Delphiで動作確認済み
0592デフォルトの名無しさん
NGNG(x = Bango and student[i].id < student[j].id) then begin
ってベタに書いてもいいし。
条件式を関数にまとめて
if x = Tensu then Result := student[i].score < student[j].score
else if x = Bango then Result := student[i].id < student[j].id
else Result := false;
とか。(case文忘れてしまったよ)
0593デフォルトの名無しさん
NGNGかなりよくわかりました!
ここは本当にすごい人が来るんですね。
驚きました。
0594デフォルトの名無しさん
NGNG動的な関数を作りたいなと思って
Pascalの上で実現してしまったとかならすごいと思うけど。
0595デフォルトの名無しさん
NGNG0596デフォルトの名無しさん
NGNG本気で何がなにやら・・・。
0597デフォルトの名無しさん
NGNGbegin
if n = 1 then
.... from から to へ一枚写す
else begin
hanoi(n-1, from, via, to);
hanoi(1, from, to, via);
hanoi(n-1, via, to, from);
end
end;
0598596
NGNGなんだかエラーが沢山出るんですけど、貼り付けるだけじゃ駄目なのでしょうか。。。
厨ですみません。
0599デフォルトの名無しさん
NGNG.... from から to へ一枚写す
のところをきちんとかかないとダメ。
hogeを文字列にして
移動を表示するようにするとか。
writeln(from + 'から' + to + 'へ移動');
Pascalの細かいところ忘れたんで正しいかどうか解らないけど。
再帰するにはforwardとか要るような気もするな。
0600山崎 渉
NGNG0601山崎 渉
NGNG│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0602デフォルトの名無しさん
NGNG標準的なpascalで、basicでいう
cls;
locate(10,10);
print "OK?";
みたいなのは出来ますか?
0603デフォルトの名無しさん
NGNGっていうのは後戻りできない上に上書きしてしまうから無理だな。
cursesみたいに1画面分の2次元配列を取ろうかともおもたけど、画面の大きさを取る方法はJIS-PASCALにはない。
処理系依存の機能を仮定しないと無理っぽい。
0604デフォルトの名無しさん
NGNGあ、そっか。画面の大きさが分からないから、
1ページ分書き直してスクロールアップ
するのも無理だ。うーむ。
0605デフォルトの名無しさん
NGNGprogram curses(input, output, ScreenWidth, ScreenHeight);
var
ScreenWidth: integer;
ScreenHeight: integer;
Screen: packed array[1..256, 1..256] of char; {こんだけあったら大抵間に合うでしょ}
procedure cls;
procedure locate(x: integer; y: integer);
procedure print(packed array[u..v] of char);
procedure reprint;
ってどう?
0606デフォルトの名無しさん
NGNGでも、画面の大きさを取得するのに、処理系毎の
工夫が必要。つーか、無理な場合もありそうな予感。
それよりも、独自に拡張して、cls, locateなどを
処理系毎に作るのが良いような気がしてきた。
・・・でも、それやってると、キリがないし、
実力の範囲を超えそうです。
0607デフォルトの名無しさん
NGNG実体は各処理系に移植されたC言語のcursesライブラリを呼び出すだけ。
外部ライブラリの実装方法に規格上、規定はないのでやりたい放題。
cursesが移植されていない処理系はライブラリの仕様を公開してユーザーに任す。
というのは駄目?
0608デフォルトの名無しさん
NGNGで、var s:string[255]; という状態で、
1行ずつreadln(f,s); で読んでいくとして。
もしも1行の長さが255バイト以上だったら、
どうなるんでしょう。
アホな質問ですみません。
0609デフォルトの名無しさん
NGNG0610デフォルトの名無しさん
NGNGどうしたら良いのでしょう?
0611デフォルトの名無しさん
NGNG無いならChar単位で読むとか。
0612デフォルトの名無しさん
NGNGDev-pascalはどうやってアンインストールするのでしょうか?
リードミーに載ってないんですが・・・。
0613デフォルトの名無しさん
NGNGvar
f: text;
s: string[255];
begin
while not eoln(f) do
read(f, s);
readln(f);
end
0614610
NGNGDelphiの無限とも言える長さの文字列は、
便利で良いですねぇ。しかも、CommaTextで
自動的にCSVを切り分けてくれるし。(日本語対応で)
でも、今はちょっと長い文字列は無理みたい。
というか、やりたいのはCSVの読み込みなんですけど、
ひょっとしたら1行を一度に読み込むんじゃなくて、
1文字ずつ分析して、項目を切り分けながら
読み込む方が良いのかな?
ひょっとして、アルゴリズムって、公開されてる?
0615 ◆R/rLuLKeEI
NGNG>ひょっとして、アルゴリズムって、公開されてる?
理論的には有限オートマトン、正規表現、字句解析、構文解析などを検索すれば、いいんじゃないかな。
CSV形式をうまく構文(文法)に書き下す事が出来れば、ある程度形式的にプログラムに落す方法があるよ。
0616デフォルトの名無しさん
NGNGC#のでよければ。なんとなくは分かると思うよ。
http://onigiri.s3.xrea.com:8080/csharp/index.php?%5B%5BTips%2FCVS%A4%F2%CA%AC%B3%E4%A4%B9%A4%EB%5D%5D
そだね、CSVごときに有限オートマトンとか大袈裟だったな。
で、これは日本語対応?
0618デフォルトの名無しさん
NGNG0619デフォルトの名無しさん
NGNG0620デフォルトの名無しさん
NGNGANSIエスケープシーケンスを使う
0621610
NGNGおおっ!忘れていたが、何か画期的なアイデアに思える。(w
と、思ったが、調べてみたらこう書いてあった。
>どの文字列をエスケープシークエンスとして解釈するかは
>ソフトウェアによって千差万別であり、統一された規格の
>ようなものが存在するわけではない。
(T^T)
>>615,616
ありがとうございます。それをきっかけに調べてみます。
0622 ◆R/rLuLKeEI
NGNG>ソフトウェアによって千差万別であり、統一された規格の
>ようなものが存在するわけではない。
なのに、「ANSI【アメリカ規格協会】」を冠しているのが不思議。
0623620
NGNG0x1b(ESC)で始まる文字列をコンソールに送ることで
画面、コンソールの位置、文字の色等を制御するもの。
0624デフォルトの名無しさん
NGNGs/コンソールの位置/カーソルの位置/
0625610
NGNGC#の>616のコードは読めなかったので、
適当に考えてやってみた。だけど、""→"に
するのとか、漢字コードのチェックとか
やってないし、変なCSVを回避するのも
できないし、拡張性が無いコードになって
しまっている。
0626デフォルトの名無しさん
NGNG0627デフォルトの名無しさん
NGNGANSIエスケープシーケンスも知らないコテハンか。
時代だな。
>ANSIエスケープシーケンスも知らないコテハンか。
>時代だな。
時代ですね。
ANSIエスケープシーケンスは全く知らないわけでもない。
しかし、ここ何年も直接記述したことがないので、すっかり忘れてた。
>>602
Cマガジン1992/5, p.36, Table7(古っ!)によると、全画面消去のESC[2Jとカーソル位置指定のESC[m;nHは当時のどのPCでも共通のようだ。
MINIX本第2版図3-36やhtermでもこの二つは共通でした。
しかし、psterm-fast端末のカーソル位置指定は0x4m;n;などと全然違っていたりする(linuxのtermcapより)。
と、慌てて調べても後の祭。
0629610
NGNGCだとbreak,continueとかで、loopを跳んだり、
文をキャンセルするので、全然参考にならん。
0630デフォルトの名無しさん
NGNG0631610
NGNGbreak, continueが使えるか使えないかで、全然変わるよ。
とりあえず、フラグを追加して、似たような動作を確保。
""→"にするのも出来たし、"なし文字列のスペースを
取り除くのも出来た。変なCSVでなければ、概ね基準通り
切り分けられるようになった。
0632デフォルトの名無しさん
NGNGえっ…
ひょっとして、DelphiやFreePascalにあるSystem.Breakは、独自拡張!?
0634 ◆R/rLuLKeEI
NGNG>無理じゃん。
>break, continueが使えるか使えないかで、全然変わるよ。
break文、continue文はラベル無しgoto文といわれるように、これらは等価なラベル有りgoto文に変換可能です。
>>632
DelphiやFreePascalのBreak、Continueが手続きであることの方が吃驚!
知らなかった私も低脳かえ?
PASCALで大域ジャンプ以外にgotoを使うのは邪道っぽい。
ちなみに、うちのはGNU Pascal。
ただし、JIS-PASCAL(X3008-1990)の範囲内で考えている。
0637610
NGNG確保した場合、メモリー確保に失敗したら
OSErrで分かるんだけど。
標準pascalのnewでメモリー確保に失敗したら
どうなるの?というか、その判別方法は?
>標準pascalのnewでメモリー確保に失敗したら
>どうなるの?というか、その判別方法は?
JIS-PASCAL(X3008-1990)には何の記述もない。
必ず成功するかのようにも読める。
というわけで、その判別方法はない。
1.2 規定外事項
(1) 特定のデータ処理システム又は処理系が処理できるプログラム及び
データの大きさ又は複雑さの限界並びにそれらの限界を超えた場合の措置。
0639デフォルトの名無しさん
NGNG・continue はループの先頭に戻る
・breakはループを脱出
でいいの?
だったらTHINK Pascalでは
・ループ(for,while,repeat)の先頭に戻る → cycle
・ループ脱出 → leave
だけど。
他に関数・手続きからの脱出 → exit(関数/手続き名)
というのもある。入れ子になった関数/手続きから一気に抜ける事も出来る。
0640 ◆R/rLuLKeEI
NGNG0641610
NGNGほんとだ・・・あった・・・。サンクス
標準Pascalの本を見ながらやってたので、気づかなかった。
THINK Pacal入門の後ろの方に、ちらっと載ってた。
あとこれでCとの違いといえば、case文の挙動が
ちょっと違う事くらいか。
0642デフォルトの名無しさん
NGNGtarouという名前の変数か、
tarouという添え字の配列を作って、
tarou[rika]:=100;
とか代入するには、どうすればいい?
0643デフォルトの名無しさん
NGNG0644デフォルトの名無しさん
NGNGname:='tarou';
kamoku:='rika'
tensuu[name,kamoku]:=100;
kamoku:='eigo'
tensuu[name,kamoku]:=90;
とかは?
0645デフォルトの名無しさん
NGNG拡張構文使っていいならやりようはあるけど。
0646デフォルトの名無しさん
NGNG似たようなことは出来ない?
つまり、プログラム自体は一定で、
データの構造次第で変数を増やしたり
減らしたり、参照したり、したい。
いっそ、独自のスクリプト言語を
Pascalで作る方法を考えた方がいいか・・・。
0647デフォルトの名無しさん
NGNGtype Tensuu = record Name, Kamoku: string; Tensuu: Integer end; の配列かリンクリストでいいのでは?
SetTensuu(list, name, kamoku, 90); みたいに使えるアクセサ関数を用意しとけば不便ってこともないでしょ。
Delphiなら、配列プロパティとかカスタムバリアントで構文上連想配列作れるけど
0648デフォルトの名無しさん
NGNGで、純正 PASCAL には「連想配列」はありません。
配列の引数として許されるのは列挙可能な型のみです。列挙不可能な数学的実数を表現している実数型も使用できません。
だいたい、純正 Pascal には文字列型すらないんだし....
連想配列を実現するコードを自分で書くことになります。
それを使って
647 さんの
>Delphiなら、配列プロパティとかカスタムバリアントで構文上連想配列作れるけど
ってことを実現することができるでしょう。
0649デフォルトの名無しさん
NGNGvar hairetu: array [0..maxNum] of integer;
の maxNumが変数であるのは許されないもんね。
まあ、この程度ならリストで代用できるから良いけど。
BasicでいうDIM文が懐かしい・・・。
>>648
>連想配列を実現するコードを自分で書くことになります。
どこかに、転がってないでしょうか。
"pascal 連想配列"でググッても、rubyやPHPが出てくる。
それと、連想配列って英語ではなんて言うの?
0650デフォルトの名無しさん
NGNG0651デフォルトの名無しさん
NGNGassocitation arrayは載ってない。当然か・・・。
探していたら、こんなのを見つけた。
PASCAL ファンのための CGI プラットフォーム 「Reims」
ttp://member.nifty.ne.jp/ymagami/Reims.html
こいつの言語仕様を参考に、associationやlongstringが
標準のPascalでも使えるようなルーチンを作るか。
・・・って、自分にできるか?(^^;
もっと偉い人が作った奴、どっかに落ちてないかなぁ。
0652デフォルトの名無しさん
NGNGだけど、これはMacの、しかもコードウォーリアー用みたい。
少し書き換えればTHINK Pascalでもいけるみたいだけど。
スレ違いになりそうです。失礼しました。
0653デフォルトの名無しさん
NGNG連想配列って、やってることはデータベース検索なんだから、
type
Item = record key : string; val : integer end;
Items = array[1.1000] of Item;
みたいにして
for Ind = 1 to 1000 do Items[Ind].Key = SearchKey then
のように一致したキーを探すことになる。
毎回、全数検査すると遅くなるからハッシュを使うとか、速度向上の手法はいくらでもあるけど、本質は検索だ
0654652
NGNG結構高度なことをやっている様子。
追加、削除、検索など、一通りのルーチンは
揃っているみたい。使い方を解析せねば。
0655レイホウ@6歳
NGNGfor($i = 0; $i < @mob; $i++){
next if ($mob[$i] eq ""); ←何も無かったら次いく
$mobname[$i] = $stuff[2] if ($stuff[1] eq $mob[$i]);
last if ($stuff[1] eq $mob[$i]); ←見つかったら終了
}
これと同じ事をすればいい(↑はperlだけどな)
perlとしては↑間違ってる
えいめ〜ん
0656デフォルトの名無しさん
NGNG0657デフォルトの名無しさん
NGNG宿題?
0658デフォルトの名無しさん
NGNG整数を三つ読み込む。
次に
最小値を見つける。そして出力。
最後に
最大値を見つけ、それを出力。
簡単でしょ
0659デフォルトの名無しさん
NGNG0660デフォルトの名無しさん
NGNG0661でたらめ
NGNGvar
a, b, c, max, min: integer;
begin
read(a);
max := a;
min := a;
read(b);
if b > max then
max := b;
if b < min then
min := b;
read(c);
if c > max then
max := c;
if c < min then
min := c;
writeln('max', max);
writeln('min', min);
end.
0662デフォルトの名無しさん
NGNGvar
a, b, c, max, min : integer;
function sgn(si : integer) : integer;
begin
if si < 0 then sgn := -1 else if si = 0 then sgn := 0 else if si > 0 then sgn := 1;
end;
begin
read(a); read(b); read(c);
case sgn(a - b) of
-1, 0 : case sgn(b - c) of
-1, 0 : begin min := a; max := c; end;
1 : case sgn(a - c) of
- 1, 0 : begin min := a; max := b; end;
1 : begin min := c; max := b; end;
end;
end;
1 : case sgn(b - c) of
-1, 0 : case sgn(a - c) of
-1, 0 : begin min := b; max := c; end;
1 : begin min := b; max := a; end;
end;
1 : begin min := c; max := a; end;
end;
end;
writeln('max=', max);
writeln('min=', min);
end.
0663662
NGNG0664でたらめ
NGNGbegin
case si of
0:
si := 0;
otherwise
begin
sgn := si div abs(si);
end;
end;
end;
0665でたらめ
NGNGfunction sgn (si: integer): integer;
begin
case si of
0:
si := 0;
otherwise
sgn := si div abs(si);
end;
end;
0666でたらめ
NGNGtype
MMXtype = object
vmax, vmin: integer;
procedure init;
procedure setValue (val: integer);
function max: integer;
function min: integer;
end;
procedure MMXtype.init;
begin
vmax := -32768;vmin := 32767;
end;
procedure MMXtype.setValue (val: integer);
begin
if val > vmax then vmax := val;
if val < vmin then vmin := val;
end;
function MMXtype.max: integer;
begin max := vmax; end;
function MMXtype.min: integer;
begin min := vmin; end;
var MMX: MMXtype;a, i: integer;
begin
new(MMX);
MMX.init;
for i := 1 to 3 do
begin read(a); MMX.setValue(a); end;
writeln('max=', MMX.max);
writeln('min=', MMX.min);
end.
0667662
NGNGType TChoice = function(a, b : integer) : integer;
var
Func : array[boolean] of TChoice;
a, b, c : integer;
function First(a, b : integer) : integer;
begin First := a; end;
function Second(a, b : integer) : integer;
begin Second := b; end;
function fmax(a, b : integer) : integer;
begin fmax := Func[a >= b](a,b); end;
function fmin(a, b : integer) : integer;
begin fmin := Func[a <= b](a,b); end;
begin
Func[false] := Second; Func[true] := First;
read(a); read(b); read(c);
writeln('min=', fmin(fmin(a, b), c));
writeln('max=', fmax(fmax(a, b), c));
end.
0670でたらめ
NGNGvar
a, b, c: integer;
begin
read(a); read(b); read(c);
writeln('max=', ((((a + b) + abs(a - b)) div 2 + c) + abs(((a + b) + abs(a - b)) div 2 - c)) div 2);
writeln('min=', ((((a + b) - abs(a - b)) div 2 + c) - abs(((a + b) - abs(a - b)) div 2 - c)) div 2);
end.
0671デフォルトの名無しさん
NGNG読み込んでソートして一番上と一番下を見る
0673でたらめ
NGNGでもこれって、>667の
>writeln('min=', fmin(fmin(a, b), c));
>writeln('max=', fmax(fmax(a, b), c));
の派生みたいな物ですよ。
ただ、公式にあてはめただけです。
0674でたらめ
NGNGconst
maxint = 32767;
minint = -32768;
var
index: array[minint..maxint] of boolean;
を使う方法も考えたけど、
メモリーが足りない(?)とかで
配列が確保できずに断念したっス。
0676デフォルトの名無しさん
NGNG一クラス分の身長を実数型で入力し、最高と最低を求めるプログラムを作成せよ。
さらに示された入力データでトレース表を書きなさい。
(A)最初に人数を入力し、人数分の処理をする場合(for)
(B)身長に0が入力されたら、終了する場合(while)
実行結果例
人数 制御変数 身長 最高 最低
6 1 178
2 165 165.0
3 197 197.0
4 168
5 175
6 183
こんな問題です。
特に、入力された人数分を変数に入れる方法と、トレース表に出力する方法が分かりません。
0677デフォルトの名無しさん
NGNG小学校の宿題か?
0679デフォルトの名無しさん
NGNG問題が実数型で入力せよとなっているので・・・。
配列はあやふやです・・・。
0680でたらめ
NGNGじゃあ、どうしよっかなー
0681でたらめ
NGNG配列を宣言すれば無駄がないけど、Pascal
はできないもんね。
(B)も(A)もそうだけど、人数の最大が決まっ
てるか決まってないかで、全然変わるけど。
その辺は、どうなんだろうね?
0682デフォルトの名無しさん
NGNGvar i,n,max,min :integer;
sin:array[1..100] of integer;
begin
write('人数は?');
readln(n);
for i:=1 to n do
begin
writeln(i,'人目の身長を入力してください');
readln(sin[i]);
end;
max:=sin[1];
min:=sin[1];
for i:=2 to n do
begin
IF sin[i]>max then max:=sin[i];
IF sin[i]<min then min:=sin[i];
end;
writeln('人数 制御変数 身長 最高 最低 ');
writeln(n);
for i:=1 to n do
begin
write(' ',i,' ', sin[i] );
IF sin[i]:=max then
write(' ',sin[i]);
IF sin[i]:=min then
write(' ',sin[i]);
end;
end.
0683でたらめ
NGNGほとんどできてるじゃん。
>IF sin[i]:=max then
>write(' ',sin[i]);
>IF sin[i]:=min then
>write(' ',sin[i]);
ここ、「:=」じゃなくて「=」だ。
それと、この次に、
writeln;
の1行を入れる必要がある。
0686でたらめ
NGNG実数型って比較が難しいの?
0687662
NGNGおお、表示位置のずれは気づかなかった。という
ことで、そこも直す必要があるぞ。>>682
>>686
10進と2進の変換誤差(浮動小数点の場合)と計
算誤差があるから、等号比較だと偽になる場合
が考えられる。あと、有効桁数の問題も気にとめ
ておく必要が出る場合もあるし。
まあ、今回みたいに変数に入れた物を代入する
場合なんかは等号比較が出来る場合が多いけ
ど、代入を計算と見なした場合は一度倍精度に
してから単精度に戻すなどの処理が入って値が
変わる可能性があることを頭に入れておいた方
が破綻しづらくなります。
と言うことで私は整数型で実装出来るものは整数
型で実装するようにしています。
0688でたらめ
NGNGそうか。誤差か。普段そこまでシビアな計算って
したことないんで、気にしなかった。
うちも整数型がほとんどです。
今回の場合、まさか身長で小数点以下2桁以上が
必要になることはないので。入力した数値を
×10して整数型で保存・計算。表示の時に
÷10して実数型(例だと下一桁)っぽく
表示するのではあかんのやろか。
この処理、逆に面倒?誤差が大きくなる?
0689662
NGNG私もその方が良いと思ったので「実数型にする必要があ
るんだ?」と聞いたんだけど... でも「問題が実数型で入力
せよ」という事らしいから、実数型にする必要があるみた
いですね。
それとも「入力が実数型」を受け付けると言うことだけで
良いのなら内部は整数で扱う方がプログラム的には楽
ですね。
計算することを考えるのなら、小数点以下2桁くらい取っ
ておいた方が安全かも。
0690でたらめ
NGNG入力さえ実数型なら、ええんちゃう?
処理まで実数型とは書いてないもんな。
>>682
考えることは同じやね。うちも最初は小数点以下
2桁と思ったけど、例が下1桁だったので、表示
するときの手間を考えて下1桁って書いてた。
そんなわけで。>682は、課題完了だな。
0691682
NGNGあとですね、>>676のwhile文のほうがあって身長に0を入力した場合に入力が終わるプログラムなんだけど、
そうすると出力のときに身長に0が出てしまうんですよ。どうすればいいですか?
0693でたらめ
NGNG入力 1〜2回繰り返し
戻る
repeat
入力 1〜2回繰り返し、3回目に0を入力
0以外は戻る
最後の入力は無効
で、ええんちゃうか。
そうすると問題は、のっけから0を入力された
場合のエラーセーフだけど。ま、やってみそ。
0694デフォルトの名無しさん
NGNGbegin
一つ目を入力;
while i>0 do begin
出力;
入力;
end;
end.
たぶん不合格。
ん?0を「入力した」場合に「入力が」終わる?
0695でたらめ
NGNGそか。repeatはuntilで、whileは違うか。
ま、気にするな。(w
0696でたらめ
NGNGvar next:boolean;
...
next:=true;
while next do
begin
入力
if a=0 then next:=false;
その他のチェック
end;
0697デフォルトの名無しさん
NGNG0699デフォルトの名無しさん
NGNGwhile true do で if 〜then break すればいいんじゃ?
0701でたらめ
NGNG0702デフォルトの名無しさん
NGNG0704デフォルトの名無しさん
NGNG0705662
NGNGrepeat - until を使った方が素直に組めるのに。
どうしてもwhileでやらなきゃならないのなら、入力
関数でも作って以下のようにするか...
function 身長入力関数(var 身長) : boolean;
begin 入力処理 end;
while 身長入力関数(身長) do
身長追加処理;
>>701
その通り、breakは無いです。元が教育用言語
だから、抜け道は作らないような構文になって
いるんですよね(caseのelse、otherwiseも無い)。
0706でたらめ
NGNG「課題」なんだから仕方ないよ。
Cだと、入力しつつ比較が出来るから、
関数を作る必要はないんだよね?確か。
breakが無いのはまだいいけど、
caseのotherwiseも標準にはないの?
これないと辛い。つーか、無理。
THINK Pascalはある。
0707662
NGNGいや、課題だからこそ変な制約を付けることなく作ら
せるのがよい。まあ、一定の方向に仕向けるためだ
ろうけど、それでプログラミング嫌いになったら教育
の価値無し。
otherwise(Delphiではelse)は無い。と言うかcase
を使う時点で出てくる要素は判っているはずだから、
全て列挙しろと言うことでしょう。otherwiseに入れら
れた処理を「あとで分類し直す」なんて事になったら
結構大変だというのは想像が付きそうだけど。
0708676
NGNGProgram en9a(input,output);
var i,n :integer;
max,min :real;
sin:array[1..100] of integer;
begin
write('人数は?');
readln(n);
for i:=1 to n do
begin
writeln(i,'人目の身長を入力してください');
readln(sin[i]);
end;
max:=sin[1];
min:=sin[1];
writeln('人数 制御変数 身長 最高 最低 ');
writeln(n);
0709676
NGNGrepeat
IF sin[i]>max then max:=sin[i];
IF sin[i]<min then min:=sin[i];
write(' ',i,' ', sin[i]);
IF sin[i]=max then write(' ',max:3:1);
IF sin[i]=min then write(' ',min:3:1);
writeln;
i:=i+1;
until i<>1;
for i:=2 to n do
begin
IF sin[i]>max then max:=sin[i];
IF sin[i]<min then min:=sin[i];
write(' ',i,' ', sin[i]);
IF sin[i]=max then write(' ',max:3:1);
IF sin[i]=min then write(' ',min:3:1);
writeln;
end;
end.
0710676 Bのほう
NGNGvar i,n :integer;
max,min :real;
sin:array[1..100] of integer;
begin
n:=1;
i:=1;
writeln(i,'人目の身長を入力してください');
readln(sin[i]);
while sin[i]<>0 do
begin
i:=i+1;
writeln(i,'人目の身長を入力してください');
readln(sin[i]);
n:=n+1;
end;
max:=sin[1];
min:=sin[1];
writeln('人数 制御変数 身長 最高 最低 ');
writeln(n-1);
0711676 Bのほう2
NGNGrepeat
IF sin[i]>max then max:=sin[i];
IF sin[i]<min then min:=sin[i];
write(' ',i,' ', sin[i]);
IF sin[i]=max then write(' ',max:3:1);
IF sin[i]=min then write(' ',min:3:1);
writeln;
i:=i+1;
until i<>1;
for i:=2 to n-1 do
begin
IF sin[i]>max then max:=sin[i];
IF sin[i]<min then min:=sin[i];
write(' ',i,' ', sin[i]);
IF sin[i]=max then write(' ',max:3:1);
IF sin[i]=min then write(' ',min:3:1);
writeln;
end;
end.
0712でたらめ
NGNG整数型なんですけど・・・
小数入力しても、小数点以下が
切られてない?
(試してないので分からんけど)
0713デフォルトの名無しさん
NGNG0714デフォルトの名無しさん
NGNG出来ない・・・・
0715デフォルトの名無しさん
NGNGちゃんとコンパイルして実行して動くかどうか確認し
て(もしくは不明点が見つかって)からアップしてくれ。
おまえのソースを全てチェックするほど暇じゃないん
だ。そっちのソースを直すより自分で全て書いた方
が早そうだし。
>>714
環境(対象コンパイラ、機種、OS等)の必要情報が
判らないとコメント付けようがないぞ。
0716デフォルトの名無しさん
NGNG例どうりに動いたと書いてあるよ。
0717デフォルトの名無しさん
NGNGフリーパスカル CPAD win2K
0718デフォルトの名無しさん
NGNGとても例どうりに動くとは思えんが、本人がそう言っている
のならそれでいいや。
>>717
確かFreePascalはTurboPascalの構文が使えるんじゃな
かったでしたっけ?それならshrで行けます。下記参考。ち
なみに左シフトはshl。
var
a, b : byte;
begin
a := 8;
b := a shr 1; (* シフトしたいビット数 *)
writeln(a, ' ', b);
end.
0719デフォルトの名無しさん
NGNGなんか配列使えって
言われちゃったので配列で無理やり作ってみた。
program sifuto(input,uotput);
type
suuji = array[1..10] of char;
var
a : suuji;
x,y,n : integer;
begin
begin
write('10文字入力');
readln(a);
end;
write('いくつずらす?');
readln(x);
for y:= 11-x to 10 do
write(a[y]);
for n:=1 to 10-x do
write(a[n]);
writeln()
end.
0720デフォルトの名無しさん
NGNGprogram sinnsuu(input,output);
type
suuji = array[1..4] of integer;
var
a : suuji;
c, ans : integer;
d : integer;
begin
Write('Decimal : ');
Read(d);
c := 0;
while d <> 0 do
begin
c := c + 1;
ans := d mod 2;
d := d div 2;
a[c]:=ans
end;
for c:= 4 downto 1 do
write(a[c]);
writeln()
end.
配列メンドイ
なんか中途半端に理解した。
0721デフォルトの名無しさん
NGNG0〜15の10進数しか変換できない。
0722718
NGNG俺、配列使えなんて一言も言ってないんだけど。
何か良く分かんない(理解出来ないやり取りの)
所に来てしまったようなので、落ち着くまでしばら
く黙っていることにする。
0723でたらめ
NGNG配列使え、っていう。
0724718
NGNG課題は課題で良いんだけど、「他の人に分かって
もらう書き方」ってのがあると思うんだ。特にこうい
う場では。それと「自分で出来るだけ努力する」っ
てのも大事だし。
それをしないでソース垂れ流し(それもちょっと?の)
されるんで、もう私には理解不能。だからこの件
(と思われるもの)には黙ることにしました。
0725でたらめ
NGNG2で割ればいいんじゃないの?
0726デフォルトの名無しさん
NGNGマイナスの値を右シフトと2で割ることをしてみれば、
違いが分かると思う。それと、算術計算とビット操作
はやっぱり別の話だから。
0727でたらめ
NGNGでも、ビット操作なんてアセンブラでも使わない
限り必要ないんじゃないかと思うけど。
Cならいざしらず、Pacalでは意味ないよねぇ。
課題じゃしょうがないけど。
0728デフォルトの名無しさん
NGNGだってグラフィックフォーマットとか通信プロトコルなんかで
「ビットで状態を表す」物って結構多いから、ビット操作がで
きないと辛い場合って結構あるよん。
そういう時までアセンブラを持ち出すのはちょっと大仰だと
思う。高級言語でサクサク組めた方が何倍もカンタン。
0730デフォルトの名無しさん
NGNG0731デフォルトの名無しさん
NGNG0732デフォルトの名無しさん
NGNGa=cでもええのか?
>>731
b=cの可能性はあるな
そういう意味じゃない?
0733デフォルトの名無しさん
NGNG等しくはならんが気休めにどうぞ。
0734デフォルトの名無しさん
NGNG0735デフォルトの名無しさん
NGNGaとbとcがいずれも異なる値であることを
確認すればいいの?
にしては、配列を使うって・・・意味不明。
0736デフォルトの名無しさん
NGNG意味を取ろうとするから意味不明。気にしなければOK。
課題を出している方はまともな課題を出していて、ここで
聞いているのの頭が「意味不明」なだけのような気がする
(もしくは本気で訊いていないのか)。今までの経緯から
すると。
意味が通る訊き方をすれば、それなりに答える気になる
のに。
0737デフォルトの名無しさん
NGNG0738デフォルトの名無しさん
NGNG画面を再構成させる方法は存在するのでしょうか?
存在するのでしたら教えてください。
学校の宿題を作ってるとき、再構成しないと見栄えが悪いもので…
0739デフォルトの名無しさん
NGNG再構成ってどんなこと? 宿題と言われてもこっちは何も
分かっていないんだと言うことを理解して、詳しく説明し
てくれないと何の手助けも出来ないんだが。課題の内
容をこと細かく説明する必要は無いんだけど、「どんな
ことをやろうとして、どうなってしまったから、こうしたい」
くらいの説明がないと何とも。
あと、コンパイラ依存? それとも汎用? OSに関わりのあ
る(と思われる)場所は無いのかな?
見栄えを求めるとしたらどのレベル? 事によると宿題の
域を大幅に超えるかもしれないので、どれくらいの事を
したいのか分からないと答え辛いかも。
0740デフォルトの名無しさん
NGNGまるで
「僕のお小遣いで買いに行ける一番美味しいケーキはどれ?」
っていう質問に答えるようなものだな。
0741738
NGNG質問の仕方すらよくわかってません(/_<。)
delphi6のコンソールで、文字列がずらずらと繰り返えされ
見難くなるので、画面の文字をいったん全部消去する
方法を教えてもらいたいのですが…
正直どう説明すればいいのかすら分かりません(-_-;)
0742デフォルトの名無しさん
NGNGDelphi6と言うことはWin32コンソールもしくはDOS窓に
なるのか。OSによって対応は違いますね。
16ビット系(Win95からMEまで)なら「ANSIエスケープ
シーケンス」が使えると思うのですが、32ビット系(NT
から2000,XPまで)はこれが使えないので「いちいちコ
ンソールと文字モードのサポートにあるAPIで制御」す
るか、改行で区切って綺麗に見せて出力するかしか
無いですね。
0743738
NGNGそうですか…きっぱりあきらめることにします。
初心者の馬鹿な質問に答えて下さいまして本当にありがとうございました
0744デフォルトの名無しさん
NGNGpageコマンドは?
(A)コンソールに対して
writeln('abc');
page;
writeln('xyz');
こうすると(THINK Pascalの場合)
(abcが表示された後、画面消去するので)
コンソールにxyzだけが表示される。
(B)ファイルに対して
var f:text;
..
writeln(f, 'abc');
page(f);
writeln(f, 'xyz');
こうするとabcとxyzの間に(改ページ)が挿入される。
一般的なPascalの教科書に出ているコマンドだよ。
0745デフォルトの名無しさん
NGNGdelphiのコンソールじゃ出来ないんじゃない?
0746デフォルトの名無しさん
NGNG残念ながらBorlandのPascal言語系(Delphiだけで
なくTurboPascalから)はPageはサポートしていな
かったりする。
0747744
NGNG0748デフォルトの名無しさん
NGNG0749デフォルトの名無しさん
NGNGhttp://www.slis.keio.ac.jp/~anakata/filearea/filearea.html から
Win32Crt.pas (w32crt03.lzh) を落として、解凍後、Win32Crt.pasを
Libフォルダにコピーする。
古いユニットなので、Delphi6では未定義の識別子 : 'KeyEvent' という
エラーが出るから、KeyEventという文字列を全てEvent.KeyEventに
置き換える。
これで、TurboPascalのCRTユニット風の関数が使えるようになる。
GotoXY, WhereX, WhereYがゼロオリジンなので、互換性を考えれば
ソースをいじったほうがいいかもしれない。
0750749
NGNGprogram Project2;
{$APPTYPE CONSOLE}
uses
Windows, SysUtils, Win32Crt;
var
f, b: Integer;
begin
for b := 0 to 15 do
begin
ClrScr;
for f := 0 to 15 do
begin
TextColor(f);
TextBackground(b);
gotoXY(f * 2, f);
Writeln('Test String [', WhereX, ',', WhereY, ']');
Sleep(1000);
if KeyPressed then
Exit
end
end
end.
0751デフォルトの名無しさん
NGNGa[i]の順位 r を求めるプログラムを書いてください。
ただし、順位=(自分より大きいものの個数+1)です。
また、プログラム中に使用する名前の型、属性、意味内容を明示し、
実際の実行例もお願いします。
0752デフォルトの名無しさん
NGNGx := 1;
for i := 0 to n-1 do
if a[i] > a[r] then x := x + 1;
0753デフォルトの名無しさん
NGNG>実際の実行例もお願いします。
それくらいは自分で考えた方が良いぞ。属性ってそもそも何?
0754デフォルトの名無しさん
NGNG>n個の値 a[0] , a[1] , ・・・ , a[n-1] が与えられているとき
この「与えられているとき」ってのを見る度に悩むんだな。
サンプルをどうしよう?って。
programなら、入力ルーチンを作るか、ファイルから読み込むか、
constで適当な値を作るか。
procedureやfunctionだけ作るとしても、pascalでは配列を
関数には渡せないよね?
それとも、a[0]...っていうグローバル変数があるものと
してもいいけど、それも美しくないし。
0755デフォルトの名無しさん
NGNGポインタで渡せば?
0756デフォルトの名無しさん
NGNGいや…渡せるけど
procedure A(B: array[C..D] of Integer); みたいな。
Delphiならprocedure A(B: array of Integer); で範囲はLow/Highで取る。
0757デフォルトの名無しさん
NGNG>>756
そのC..Dが変数でもできたっけ?
>>755
ポインタで渡すのが確実か。確かに。
0758デフォルトの名無しさん
NGNG渡せるぞ。ちゃんと宣言すれば。以下参照。
Type
TIntArray = array[LO..HI] of integer;
var
A : TSomeArray;
procedure DoSomething(B : TIntArray);
として(LOとHIは定数で適当に宣言されているとする)、
DoSomething(A);
とすればちゃんと呼び出せるぞ。
>>756
手続き宣言の場所で直接配列を宣言すると、処理系に
よっては「違う型と見なされて配列を渡せない」事態にな
る可能性があるぞ。これは実装依存らしいから、絶対大
丈夫だとか絶対ダメだとか言えないのが面倒。
>>757
変数はダメです(処理系によっては大丈夫かも)。標準で
は定数しか受け付けません(というか実行時に大きさが
決まる配列自体が使えないはず)。
0759756
NGNGいや、私が言いたかったのはオープン配列。
規格はよく知らないけど、ものの教科書では
procedure A(B: array[C..D] of Integer);
で、任意の長さの配列を渡せるらしい。C..Dには実引数の添え字範囲が入る、らしい。
(もっとも、対応しているコンパイラは知らないけどね)
追記しているようにTP系(FreePascal/Delphi)では同じ機能はあっても構文が違う。
0760デフォルトの名無しさん
NGNG正しいと思う。見て、おぼろに思い出した。
だけど、わざわざ型を指定するのって、面倒なんだよね。
0761デフォルトの名無しさん
NGNGあー、オープン配列は使ったことがなかったので、完全に
忘れていました。書かれて初めて「そういうのがあったっけ
なぁ」という感じ。
私はオープン配列を使うような場面ではTListを使うので使っ
たことがありません。オープン配列を使わなきゃならないよ
うな手続きなんかも書かないし。
0762デフォルトの名無しさん
NGNGhttp://www.lysator.liu.se/c/bwk-on-pascal.html
誰か Why Pascal is My Favorite Programming Language を書いてください。
0763デフォルトの名無しさん
NGNGいいじゃん、放っておけば。大体用途の違う言語を
比較して「こっちが好きだ」って書いているような人
にろくなのはいないから。
分かっている人は「その言語はそういう用途には向
かない」とか「そういうことを目的として設計された言
語ではない」と書くと思う。
0764デフォルトの名無しさん
NGNGif (hoge)と括弧を書くよりは
if hoge thenと書くほうが好きだ。
好きなところってそこしか思い浮かばなかった。
嫌いなところばっかり浮かんで来る・・・。
0765デフォルトの名無しさん
NGNGC系の言語でこれらの概念を持ってるのがサッパリ無いのはどういうことか
0766デフォルトの名無しさん
NGNG0767デフォルトの名無しさん
NGNG英単語を入力して、そのつづりを逆順にした文字列を作りなさい。
実行例
英単語は? beautiful
逆順にしたつづりは lufituaeb
できそうだと思ったんだけど挫折・・・
0768デフォルトの名無しさん
NGNGvar
I, J : Integer;
begin
J:=Length(S);
SetLength( Result, J);
for I:=1 to J do
Result[i]:=S[J+1-I];
end;
実行してないんで動くかどうかはシラネ
0769デフォルトの名無しさん
NGNGvar st : string; i : integer;
procedure swap(var a, b : char);
var t : char;
begin
t := a; a := b; b := t;
end;
begin
readln(st);
for i := 1 to length(st) div 2 do
swap(st[i], st[length(st) - i + 1]);
writeln(st);
end.
こんな感じ?
0770デフォルトの名無しさん
NGNG0771デフォルトの名無しさん
NGNG0772デフォルトの名無しさん
NGNGxx xx xx xx
-- -- -----
A B C
A... アイテムコード
B... 強化パラメータ ( 9C < 0 < 64 )
C... 使用回数 ( 00 01 < E8 03 < 00 00 )
※00 00 : 無制限
これどういういみでつか??
0773デフォルトの名無しさん
NGNGfunciton ReverseString(S : String) : string;
var i : integer;
begin
for i := length(S) downto 1 do
result := concat(result, S[i]);
end;
これで良い気がする。
0774768
NGNGでも
>function Concat(s1 [, s2,..., sn]: string): string;
>説明
>Concat 関数を使うと,任意の数の文字列を結合できます。各パラメータは文字列型の式です。結果はすべての文字列型パラメータ>の結合です。
>次に示すように,正符号演算子(+)を使っても Concat 関数と同じ結果が得られます。
>S := 'ABC' + 'DEF';
>参考正符号演算子の方が Concat よりも処理が速くなります。
正符号演算子では文字列の加算の「度に」文字列分のメモリの確保と開放が行われてる(と思う)ので
前もってメモリを確保してある>>768のほうが速いと思われます。
(文字列が長くなるに従って差は大きくなると思います。
つまり、
速度を求めるなら>>773氏の方法より>>768のほうがよろしいかと。
実際に試してないんで知らないけど。
添字の計算部分の差で負けたりして(w
0775デフォルトの名無しさん
NGNGうーん、確かに速度的には遅くなるかもしれないけど、
この関数をそんなに頻繁に使うとは思わないので、な
るべく単純な形の方が分かりやすいような気がする。
あと、以下の形にすると、日本語に対応するのも楽。
function ReverseString(S : string) : string;
var
0776775
NGNGfunction ReverseString(S : string) : string;
var i : integer;
begin
for i := 1 to length(S) do
result := concat(S[i], result);
end;
0777デフォルトの名無しさん
NGNGfunction reverseString (a: string): string;
begin
if length(a) <= 1 then
reverseString := a
else
reverseString := concat(reverseString(omit(a, 1, 1)), a[1]);
end;
omitは omit(文字列,位置,文字数) で指定した部分を削除した文字列を返す,
THINK Pascal の組み込み関数。
0778デフォルトの名無しさん
NGNG単純さを求めるとなると手っ取り早い日本語対応は
function ReverseString(S : widestring) : widestring;
では?(w
>>776
>result := concat(S[i], result);
result := S[i] + result;
むしろこちらのほうが単純(直感的)かと。
ただconcat関数に慣れてないだけかも知れんが…
0779デフォルトの名無しさん
NGNG文字列連結に「+」が使える事にかえって驚く。
resultというのもDelphi独自の規格だよね。
0780デフォルトの名無しさん
NGNGwidestringを使うのは環境にだいぶ依存しそう
ですけど(確かに単純と言えば単純だけど)。
concatを使うのはあくまで私のやり方ですので、
+の方が分かりやすければそちらで問題ありま
せん。
0781デフォルトの名無しさん
NGNGTurbo Pascalからの仕様ですね。
0782デフォルトの名無しさん
NGNG問
正の整数を読み込み、30桁の数になるまでそれを2倍、2倍にしていき、
30桁の数になったら出力する。
桁数ってどうだっけ・・・
0783デフォルトの名無しさん
NGNG{$APPTYPE CONSOLE}
var bignum : array [1..30] of Integer;
function keta: Integer; var i : Integer; begin
i := 30; while (bignum[i] = 0) and (i > 1) do i := i - 1;
keta := i; end; { keta }
procedure nibai; var i : Integer; begin
for i := 1 to 30 do bignum[i] := bignum[i] * 2;
for i := 1 to 29 do begin
bignum[i+1] := bignum[i+1] + bignum[i] div 10;
bignum[i] := bignum[i] mod 10; end;end; { nibai }
procedure print; var i : Integer; begin
for i := 30 downto 1 do Write(bignum[i]);end; { print }
procedure init; var i : Integer; begin
for i := 2 to 30 do bignum[i] := 0; bignum[1] := 1;end; { init }
begin init; while keta < 30 do nibai; print; end.
0784デフォルトの名無しさん
NGNGvar i : Integer;
begin
Read(i);
bignum[1] := i;
for i := 1 to 29 do begin
bignum[i+1] := bignum[i] div 10;
bignum[i] := bignum[i] mod 10;
end;
end; { init }
0785デフォルトの名無しさん
NGNGprogram ensyu(input,output);
const msg ='英単語の綴りを逆順にします。';
var engword,downword:string[30];
Len,i :integer;
begin
writeln(msg);
write('英単語は?');
readln(engword);
Len:=length(engword);
for i:=Len downto 1 do
begin
downword:=downword+engword[i];
end;
writeln('逆順にした綴りは',downword,'です。');
readln;
end.
0786デフォルトの名無しさん
NGNGvar
i, j : integer;
c : char;
begin
i := 1;
j := Length(S);
while i < j do begin
c := S[i];
S[i] := S[j];
S[j] := c;
i := i + 1;
j := j - 1;
end;
ReverseString := S;
end; { ReverseString }
0787デフォルトの名無しさん
NGNGfunction ketaketa(e : extended):integer;
begin
while true do begin
e:=e*2;
if log10(e)>=30 then break;
end;
ShowMessage(FloatToStr(e));
end;
0788デフォルトの名無しさん
NGNGbegin
while log10(e) < 30-1 do
e:=e*2;
ShowMessage(FloatToStr(e));
end;
0789デフォルトの名無しさん
NGNGvar
i : Integer;
begin
for i := 1 to Ceil((30-1 - log10(e)) / log10(2)) do
e := e * 2;
ShowMessage(FloatToStr(e));
end;
0790デフォルトの名無しさん
NGNGbegin
ShowMessage(FloatToStr(e * power(2, Ceil((30 - 1 - log10(e)) / log10(2)))));
end;
0791デフォルトの名無しさん
NGNGbegin
ShowMessage(FloatToStr(e * power(2, Ceil((30-1)*log2(10) - log2(e)))));
end;
0792デフォルトの名無しさん
NGNGvar
n : Integer;
begin
n := 1;
while e >= 10 do begin
n := n + 1;
e := e / 10;
end;
keta := n;
end;
procedure ketaketa(e : extended);
begin
while keta(e) < 30 do
e := e * 2;
ShowMessage(FloatToStr(e));
end;
0793デフォルトの名無しさん
NGNGextendedって30桁まであるのか?
0794782
NGNGprogram enshu(input,output);
const K=30;
var i,j,m,v, :integer
n :array[1..K]of integer;
begin
write('出発の値は?');
readln(m);
if m >0 then
begin
.............
while m<>0 do
begin
.............
end;
J:=J+1;
・・。
0795782
NGNGbegin
for i:=K downto J do
n[i]:= 2*n[i];
for i:=K downto J do
begin
...............
end;
if n[i-1]<>0 then j:=j-1
end;
for i:=1 1 to K do
write(chr(n[i]+Ord('0')));
writeln
end;
readln
end.
スマソ全然わかんないです・
0796デフォルトの名無しさん
NGNGconst K= 30;
var i,j,m : integer; {var i,j,m,v, : integer}
n : array[1..K]of integer;
begin
write('出発の値は?');
readln(m);
if m >0 then
begin
j := K;
while m<>0 do
begin
n[j] := m mod 10;
m := m div 10;
j := j - 1;
end;
J:=J+1;
0797デフォルトの名無しさん
NGNGbegin
for i:=K downto J do
n[i]:= 2*n[i];
for i:=K downto J do
begin
n[i-1] := n[i-1] + n[i] div 10;
n[i] := n[i] mod 10;
end;
if n[j-1]<>0 then j:=j-1 { if n[i-1]<>0 then j:=j-1 }
end;
for i:= 1 to K do { for i:=1 1 to K do }
write(chr(n[i]+Ord('0')));
writeln
end;
readln
end.
0798デフォルトの名無しさん
NGNG前にあったブラックジャックを作ってみた。
つくりかけだけど。
0799デフォルトの名無しさん
NGNG「・・・」の部分を埋めて作るように言われましたが、全然・・・。
氏名(全角7文字)、数学、英語の得点(100点満点)からなる個人データが保存されているファイルからデータを入力してそれぞれの合計点を計算し、合計点の大きい順に整列して表示するプログラムを作りなさい。
実行例 得点データを合計点順に整列します
データファイル名は? SEISEKI.DAT
氏 名 数学 英語 合計
あああああああ 100 59 159
いいいいいいい 80 80 160
・・・
program seiretu(input,output);
const nmax=100;
type index=1..nmax;
Person=record
name:string[14]
math,eng:0..100;
total:0..200;
end;
0800799
NGNGPersonarray=array[index] of person;
procedure sort(n:index;var x:personarray);
procedure exchangeperson(var A,B:person);
var temp:person;
begin
・・・
end;
var i,j:index;
begin
for i:=1 to N-1 do
for j:=N-1 downto 1 do
・・・
end;
var num:o..nmax;
i:index;
Student:personarray;
Infile:text;
Filename:string[80];
begin
・・・
end.
0801デフォルトの名無しさん
NGNGせめて、自分が考えたものを書くとかしたほうが。
0802デフォルトの名無しさん
NGNGprogram seiretu(input,output);
const nmax = 100;
type index = 1..nmax;
Person = record
name : string[14];
math,eng : 0..100;
total : 0..200;
end;
Personarray = array[index] of person;
procedure sort(n : index; var x:personarray);
procedure exchangeperson(var A,B : person);
var temp : person;
begin
temp := A; A := B; B := temp;
end;
var i,j: index;
begin
for i:=1 to N-1 do
for j:=N-1 downto i do
if x[j+1].total < x[j].total then
exchangeperson(x[j+1], x[j]);
end;
0803デフォルトの名無しさん
NGNGi : index;
Student : personarray;
Infile : text;
Filename : string[80];
begin
Write('データファイル名は?');
Readln(Filename);
i := 1;
Assign(Infile, Filename);
while not eof(Infile) do begin
Readln(Infile, Student[i].name, Student[i].math, Student[i].eng);
i := i + 1;
end;
num := i - 1;
sort(num, Student);
for i := 1 to num do
Writeln(Student[i].name, Student[i].math, Student[i].eng,
Student[i].total);
end.
0805デフォルトの名無しさん
NGNGうん、私もそう思う。課題をそのまま丸写ししたのは、無視するか
どこが分からないか聞き直すのが良いと思う。
0807デフォルトの名無しさん
NGNGちょっとスレ違いだけど、質問。
THINK Pascalで、「アプリケーションはそのままで、
ライブラリで機能拡張するもの」は作れますか?
具体的には、「HyperCardとXCMD/XFCN」や
「フォトショップとプラグイン」
「MacOSと機能拡張やコントロールパネル」
みたいな関係のもの。
できるとしたら、大雑把に言って、どうやるんですか?
0808デフォルトの名無しさん
NGNGいや、別に何も考えずに教えてくださいといってるわけではないんですよ。
クラスみんなですごく悩みながらやってて、どうしても分からん問題だけ聞いてるんです。
ただ、これからは途中のわかるとこまで書き込むように心がけます。
これは言い訳なんですけど、授業では何もパスカルのこと教えないのにやたら難しい問題ばかり出す先生なので・・・
0809デフォルトの名無しさん
NGNG出来ないかも。
やり方は多分『(1)コードリソースを作って(2)それをメモリ上に読み込み、(3)それを呼び出す』
という手順でやっているのだと思う。(68Kの場合)
で、3番目の“呼び出し”はC言語なら出来るんだけど
THINK Pascalだとハンドルを関数/手続き扱いしなければならないのでかなり難しいと思う。
(コードリソースの作成はTHINK Pascalでも出来る。)
色々やってみた結果CodeWarrior Pascalで
fPtr = function (a,b:integer):integer;
こんな感じで関数を型定義してやったらできた。
しかし、これをTHINK Pascalに持ってくると文法違反でコンパイルが通らなかった。
0810809
NGNGプラグイン側の関数は2数の和を返す関数。
type
fPtr = function (a,b:integer):integer; {←ここがTHINKでNG。型は必要に応じて変える}
fHdl = ^fPtr;
var
plugHdl: fHdl;
plugin: fPtr;
c: integer;
procedure loadPlugin; {とりあえずファイル名、リソースタイプ、IDは決め打ち}
var
iFileRef, iErr: integer;
begin
iFileRef := OpenResFile('pl1'); {プラグインファイルを開く}
plugHdl := fHdl(Get1Resource('MyPL', 128)); {メモリ上に読み込み}
iErr := FSClose(iFileRef);
end;
begin
loadPlugin; {プラグインをファイルから読み込む}
hlock(handle(plugHdl)); {ハンドルロック}
plugin := plugHdl^; {一旦ポインタに移し替えないとダメっぽい}
c := plugin(3,6); {関数呼び出し。プラグインは2数の和を返す関数}
0811デフォルトの名無しさん
NGNGどうしても分からん問題だけ聞くのは良いんだけど、こっちは
どうしても分からなん問題かどうかなんて判断付かないし、問
題だけ書かれたら「ただ丸投げしている」と思われても仕方が
ないだろう。
あと、「分かるところまで書き込む」んじゃなくて、「分からない
ところだけ抜き出す」事をしてくれ。元の問題も分からず、ここ
まで分かりましたと書かれても答えようがないし、問題と分かっ
たところを書かれると「こっちが分からないところを探し出す作
業」をしなければならん。
分からないところを抜き出す作業が面倒と言うことはないと思
うが、「分からないところを抜き出す作業をミス」したり、間違っ
て解釈したりするかもしれん。それでお互い時間と数レスを費
やすかもしれないと思うと面倒くさい。
0812デフォルトの名無しさん
NGNG2進法、8進法、16進法の表現に変換するプログラムを書いてください。
ただし、入力する10進法の数は(16^4)-1=65535までです。
また、実際の実行例もお願いします。
0813デフォルトの名無しさん
NGNGといって見るだけ
0814デフォルトの名無しさん
NGNG**進法というのは分かっているのか? 分かっているとしたら
どこが分からないんだ? 分からないところだけを聞き直して
くれ。
あと、実行例くらい自分で実行して作ってもいいだろ。おん
ぶにだっこじゃ身につかんぞ。
0815807
NGNGいろいろ試していただいたようで、ありがとうございます。
ハンドルを関数型で確保するのが無理、って事ですね。
仕方ないですね。型にうるさいのは仕様ですから。
型を指定しないで、普通のハンドルなりポインターで確保
して、いきなりそのアドレスをinlineでコールしたら・・・
って思ったけど、それだと変数の受け渡しが出来ませんね。
0816デフォルトの名無しさん
NGNG今までの課題よりも簡単に思えるけど。
0817デフォルトの名無しさん
NGNGvar
x: integer;
s: string;
begin
if (base <> 2) and (base <> 8) and (base <> 16) then
base := 16;
s := '';
repeat
x := n mod base;
if x < 10 then
s := chr(ord('0') + x) + s
else
s := chr(ord('A') + x - 10) + s;
n := n div base;
until n <= 0;
hoge := s;
end;
0818デフォルトの名無しさん
NGNG萎え
0819デフォルトの名無しさん
NGNGまたおまえか
0820809
NGNGできました!
最初、引数・返り値を同じにしたダミーの関数を作って
その関数を実行時に機械語の絶対ジャンプで上書きするというのをやってみたんですが
デバッガ(Lights Bug)で追うと、きちんと上書きされているにも関わらず
平然と元の関数を実行してるんですね。(失敗)
で、動作をMacs Bugで追ってみたところ、
どうやら関数のアドレスを取得すると
ジャンプテーブルのアドレスが帰ってくるみたいです。
で、普通に関数コールするとジャンプテーブルをショートカットして
元の関数がダイレクトに呼び出されているようです。
そこで関数を引数にした手続きを別に作成し、
そこから関数を呼び出してみたところ、
うまいこと、プラグインの関数が呼び出されました。
[通常の関数コール]→[目的の関数]
[関数、手続きを引数とした関数コール]→[ジャンプテーブル]→[目的の関数]
なお、inline関数の場合、関数のアドレス取得自体が出来ませんでした。(コンパイル時にエラー)
どこかにひとつ、その関数が作られるわけではなく
コードの随所にそのバイト列が単純に埋め込まれるようになっているからだろうと思います。
0821809
NGNGtype
funcOverWriteT = record {関数書換用の型}
opCode: integer; {JMP命令オペコード用領域}
operand: longint; {JMP先絶対アドレス用領域}
end;
funcOWPtr = ^funcOverWriteT;
var
fp: funcOWPtr; {ダミー関数アドレス保持}
h: handle; {プラグインアドレス保持}
c: integer;
function dummy_Func (a, b: integer): integer; {ダミー関数。形式はプラグインと合わせる}
begin
dummy_Func := 1 + a + b - 3 + 4;
end;
procedure Plugin_Caller (function f (a, b: integer): integer); {Plug-in呼び出し用手続き}
begin
c := f(3, 6);
end;
begin
h := loadPluginManual; {プラグインアドレス取得。>>810の手続きを関数にしたもの}
hlock(handle(h)); {プラグインのハンドルロック}
fp := funcOWPtr(@dummy_Func); {ダミー関数のアドレス取得}
fp^.opCode := $4ef9; {68KのJMP命令を上書き}
fp^.operand := ord4(h^); {プラグインの絶対アドレスを上書き。ハンドル→ポインタを忘れずに}
c := dummy_Func(3, 6); writeln(c); {失敗。ジャンプテーブルを経由しないので元の関数が呼ばれる。}
Plugin_Caller(dummy_Func); writeln(c); {プラグイン呼び出し成功!!}
0822デフォルトの名無しさん
NGNGなんと!!できましたか!!すばらしい。小生の
知識不足からまだ理解も、再現も出来ていませんが、
希望が持てました。がんばってみます。
0823812
NGNGありがとうございました。
実行例もお願いします。
0824デフォルトの名無しさん
NGNG自分の所で実行してみなよ。
それが実行例。
0825807,815,822
NGNG>>820,821
動きました。
Plugin_Callerを書き換えて変数を渡せるように
しても、ちゃんと動きました。
ありがとうございました。
0826812
NGNGのプログラムの意味解説をお願いします。
0827デフォルトの名無しさん
NGNGお前やる気あんの?
全部分からない訳じゃないだろ?
分からないとこを聞けよ。
漠然とした要求をするな
0828デフォルトの名無しさん
NGNGこれでも良さそう
const
STR16='0123456789ABCDEF';
・・・略
repeat
x := n mod base;
s := concat(STR16[x + 1], s);
n := n div base;
until n <= 0;
・・・略
0829デフォルトの名無しさん
NGNG解説するまでもない明解なプログラムだぞ。>817は。
0830デフォルトの名無しさん
NGNG意味って>>812のことじゃないの?
0831デフォルトの名無しさん
NGNG5÷2=2...1
2÷2=1...0
1÷2=0...1
10=1010
この意味が分からなければ、
調べ直した方がいい。
0832812
NGNG>hoge(n, base: ): string;
>s: string;
hoge,n,base,string はどういう意味ですか??
>(base <> 2) and (base <> 8) and (base <> 16)
これはどういう意味ですか。
>base := 16;
>s := '';
>n mod base;
n mod baseとはどういう意味ですか。
>s := chr(ord('0') + x) + s
>s := chr(ord('A') + x - 10) + s;
chr,ordはどういう意味ですか。
>n div base;
これはどういう意味ですか。
>until n <= 0;
>hoge
ここもまるでわかりません
お願いします
0833デフォルトの名無しさん
NGNGちっとは、Pascalの教科書を読んでおいでよ。
さすがにそれは、不勉強すぎです。
0834デフォルトの名無しさん
NGNGちょいと812さん、mod divが分からないなんて…
ぶっちゃけpascalなんにも知らないと違います?(;´▽`A``
0835812
NGNGそうなんです。
私は数学科で、pascalは何も知らないんです。
コンピュータの教科書に詳細な説明はないんです。
わかるのは
function,var,integer,if,then,elseといったものぐらいです。
そこであらためて
817の意味解説をお願いします。
0836デフォルトの名無しさん
NGNGPascalの教科書を図書館で借りて読め。「分からないから
教えてくれ」というのは先生にしか言っちゃいけない言葉だぞ。
0837デフォルトの名無しさん
NGNGhttp://directory.google.com/Top/Computers/Programming/Languages/Pascal/Tutorials/
0838817
NGNGbaseが2,8,16以外だったらbaseを16にしてる。
n mod baseで一の位が分かる。
数値から文字への変換。'0'の次が'1'、'A'の次が'B'
n div baseは整数の割り算。base進数で一の位を削る
0になったら終了。関数の返り値をsにする。
0839デフォルトの名無しさん
NGNG>812にはさっぱり意味不明だろう。
pascalの教科書を探して読んで来ない限り、
どこまでいっても全く無駄。
教科書じゃなくても、pascalの初歩のページでも
せめて探して読んできなよ。
0840デフォルトの名無しさん
NGNGttp://grape.c.u-tokyo.ac.jp/~makino/kougi/jousho/pascal_memo.html
0842809
NGNGあ、できましたか。よかったですね。
0843デフォルトの名無しさん
NGNGを561234)にするにはどのようなプログラムにすればいいですか?
0844デフォルトの名無しさん
NGNG0845デフォルトの名無しさん
NGNGそんなやつに答える事はないと思うけど。>>ALL
0846デフォルトの名無しさん
NGNG0847デフォルトの名無しさん
NGNG0848デフォルトの名無しさん
NGNGfunction hoge(x, n: integer): integer;
const
k = 1000000;
var
i, j: integer;
begin
x := x mod k;
j := 1;
for i := 1 to n mod 6 do
j := j * 10;
hoge := (x mod j) * (k div j) + x div j
end;
0849デフォルトの名無しさん
NGNGえっ、?
>>hoge(n, base: ): string;
>>s: string;
>hoge,n,base,string はどういう意味ですか??
function分かってるんじゃなかったの?
しかも抜き出し方がおかしすぎだろう
>function hoge(n, base: integer): string;
これで何で分かる「単語」だけを消すかなぁ
>hoge(n, base: ): string;
ここでintegerを抜いて意味が分からないとは・・・レベル高杉(藁
ほんと基本から学んできてね?
というより、分からない単語があったら
まず
せめて
最低限
ヘルプで調べてね?
あかん、、突っ込みどころ大杉
根負けするわ
0850デフォルトの名無しさん
NGNG自分の実行環境を持ってないのか?
0851デフォルトの名無しさん
NGNGDOSならturbo pascal
macならTHINK Pascal
debianならgpc
linuxならKylix
ぜ〜んぶ無料
0852デフォルトの名無しさん
NGNGコードを書いてコンパイルしてとにかく試せ。
処理系が見つからなくてCへのコンバータ使ってたころもあったなあ。
0853デフォルトの名無しさん
NGNGttp://www.ics.kagoshima-u.ac.jp/edu/proen1/index.html
0854デフォルトの名無しさん
NGNG0855デフォルトの名無しさん
NGNGコードリソースからToolBoxのルーチンを使うには、
コードリソースのプロジェクトに何を入れれば良い?
0856デフォルトの名無しさん
NGNG・Runtime.libを外してかわりにRSRCRuntime.Libを入れる。
・Interface.libはそのまま。
0857856
NGNGこれでダメって事?
0858デフォルトの名無しさん
NGNGアプリしか作った事が無いので、
その一般的な手順を知らなかった・・・(^^;
あとで試してみます。ありがとう。
0859デフォルトの名無しさん
NGNGデータを生成するとする。
type
myPtr = ^myList;
myList = record
next: myPtr;
Word: string[255];
end;
のようなリスト形式だから、順番にデータを読みだせる。
disposeも順番にできる。
この手続きをライブラリ化したとして、
disposeをライブラリ外のメインルーチン側に任せるのは
お行儀としてはいかがでしょう? あぶない?
ライブラリに、読み出しやdisposeのルーチンを含める
べきでしょうか?
0860デフォルトの名無しさん
NGNG使う使わないは別として、一揃いの機能はライブラリにもって
いて欲しいというのが普通じゃないかな。ライブラリ側としては
堅牢に作っておけば、それで問題ないわけだし。あと、リスト追
加(メモリ確保も含む)、削除、ソート、検索なども入れておけば、
わざわざライブラリ外で操作しようと思わないだろうし。
もしリスト形式(というかデータ形式)を「ライブラリ外から隠す」
ようなコンパイラの場合は「ライブラリで処理すべき」だと思い
ます。そうすれば「メモリ保護機能を付け加える」というような
場合でも、インターフェイスさえ変えなければ、同じ感覚で使う
ことが出来ますから。
0861デフォルトの名無しさん
NGNGA、B、Cに数値が移動していく問題なのですが
A B C
100 0 0
という状態から
A B C
70 30 0
A B C
49 48 3
上記のように
AからBには30%、BからCには10%分ステップごとに移動していくようには
どのようなプログラムを書けばよろしいのでしょうか?
御教授の程よろしくお願いします。
0862デフォルトの名無しさん
NGNGbegin
repeat
x = a * 30 div 100;
y = b * 10 div 100;
a = a - x;
b = b + x - y;
c = c + y;
until loop_end;
0863861
NGNG重ね重ね失礼を承知の上で2,3お聞きしたいことがあるのですが
上のプログラムではABC3個の値の移動ですが
自分で移動する個数を指定したり(10と入力すればA〜Jまでの数値の移動)
Aから右に数値が移動していくと同時に、Cからある割合で左に数値を返していく
A B C
100 0 0
A B C
70 30 0
A B C
52 39 9
(右へは30%、左へは10%という感じです)
というプログラムはどう書けばよろしいのでしょうか?
よろしければ教えていただけると嬉しいです。
0864デフォルトの名無しさん
NGNG右へ移動する分を蓄えるのと左の分を蓄えるのと用意して計算する。
Pascalで動的確保はどうやるか知らない。
0865デフォルトの名無しさん
NGNG0866デフォルトの名無しさん
NGNGnewでメモリーを確保しながら、つないで行く事かな。
これなら、メモリーの許す限り、いくつ増えても大丈夫。
あ、でも、標準のpascalだと、メモリー確保できたかどうかは
検出できないんだっけ。
ただ、最大何個か決まってるなら、配列でそれだけの数を
確保しちゃってある方が、プログラムは簡単だわな。
0867863
NGNGアドバイスをどうもありがとうございました。
配列を用いてといているのですが、
『右へ移動する分を蓄えるのと左の分を蓄えるのと用意して計算』
という部分がどう記述していいのかよくわからないのです。
右から戻ってくる値はdowntoを用いて計算すればいいのでしょうか?
また、蓄えた値を足したり引いたりして解を求めるということは
ABC…といった場所の値が常に変化してしまうので
変化した値を常に用いて左右に移動する値を求める
という部分の記述がどうにもわかりません。
どうか御教授の程よろしくお願いします。
0868デフォルトの名無しさん
NGNGコードが出てくればどの程度の知識があるのかも予測できるし。
0869デフォルトの名無しさん
NGNGhoge[0]にa,b,c...が入り
hoge[1]に右からと左からを入れる
最後にhoge[0]に足す。
0870デフォルトの名無しさん
NGNGわざわざ二次元配列にするより、一次元配列を2つ作った方が
分かりやすいと思うんだけど。
0871デフォルトの名無しさん
NGNG0872デフォルトの名無しさん
NGNG私に言わせると「わざわざ二次元配列にする必要ってあるのか」
になるんだけど。
値を保存する配列と計算用の配列は分けた方が分かりやすいと
思うんだけど。
0873デフォルトの名無しさん
NGNG配列は2ついるね。失礼。
2次元配列は意味ないね。確かに。
0874デフォルトの名無しさん
NGNG問題をもう少し整理してくれ。
1. 移動率は場所によって変わるのか? >>861だとA->Bは30%、B->Cは10%になっている。
2. >>863で左右に移動する場合、上記1と左右の移動率の関わりは?
3. 左右端の処理はどうするのか?
あと、移動率は定数か変数のどちらかもはっきりしないし。
ここいらへんがちゃんと定義されていないと、プログラムを書こうにも書けないぞ。
0875861,863,867
NGNG>>874
そうでしたすみませんでした。
1は
移動率は場所によって変動です。
2は
移動率なんですが右方向へは(n/50)、左方向へは(n/100)といったようにN番目の場所により移動率が変化。
3は
左端は右隣に移動と右隣からの移動、右端は左隣からの移動と左隣への移動です。
移動率は変数です。
0876デフォルトの名無しさん
NGNG0877875
NGNG→ → → →
�@ �A �B ・・・ �I
← ← ← ←
�@に適当な値を与えると
まず�@から�Aに移動、次に�@から�Aに、�Aから�Bに、�Aから�@に、その次は・・・
といった様に数値が移動していく。
また、移動率は右方向には(n/50)、左方向には(n/100)というように、位置Nの値を
用いて設定する。
これにより、各場所での定常値を求めるプログラムを作成しなさい。
というようなことが書いてあります。
0878デフォルトの名無しさん
NGNG右が n/50, 左が n/100 だと足して1になりませんが、ここはホントはなんてかいてあった?
0879デフォルトの名無しさん
NGNGconst
N = 10;
var
foo: array [1..N] of integer;
procedure move;
var
i, right, left, temp: integer;
begin
right := foo[1] div 50;
for i := 2 to N do begin
left := foo[i] * i div 100;
foo[i-1] := foo[i-1] - right + left;
temp := right;
right := foo[i] * i div 50;
foo[i] := foo[i] + temp - left;
end;
end;
0880デフォルトの名無しさん
NGNG「移動率は位置Nの値を用いて設定する」ってのがよく分からない
なぁ。Nは何を表していて、その場所との関係はどうなっているの
かをはっきりさせないとプログラムは組めないと思うんだけど。あと
「右方向には(n/50)」のnって何を表しているの?
あと、数値は実数にするのか? それとも整数で良いのか? もし整
数なら除算の余り部分の処理はどうするのかが問題ですね。
0881877
NGNGアドバイスをどうもありがとうございました
>>880
説明が足らず申し訳ありませんでした。
NというのはN番目ということです。
図の�@〜�Iのことです。
「右方向には(n/50)」、「右方向には(n/100)」のnはNと同じです。
�@から�Aに移動する時は(1/50)、�Aから�Bに移動する時は(2/50)、・・・
�Hから�Iに移動する時は(9/50)ということです。
数値は実数です。
0882デフォルトの名無しさん
NGNGなんだ算出可能なら簡単じゃん。私は場所によって特定値
(左右別)になるのかと思って「場所別、左右別の配列」を
用意しなければならないかと思っていました。
で、ここまではっきりすれば簡単に組めるのでは。日本語ア
ルゴリズムだとこんな感じ。
{ 事前に元量配列に量をセットしておく}
for 遷移回数ループ do begin
計算配列を0クリア
for 最初の要素から最後の要素まで do begin
左右の漏れ率計算
左右の漏れ量、残り量計算
計算配列に漏れ量と残り量を加える
end;
元量配列に計算配列を代入
{途中結果の出力(遷移回数,元量配列)}
end;
{最終結果出力(元量配列)}
移動する個数を可変にする場合は、配列宣言を大きくセット
しておいてその一部だけを使うとか、動的配列を使う(処理
系が許せば)などの方法があります。
注意点は最初の要素と最後の要素は片方にしか漏れ出さ
ないことです。あとは自分で組めるでしょ。
0883881
NGNGtype foo=array [1..100] of real;
var data:foo;
i,j,n:integer;
right,left,temp:real;
begin
write('移動する個数は?');
readln(n);
data[1]:=100;
j:=0;
repeat
right:=data[1]/50;
for i:=2 to n do begin
left:=data[i]*i/100;
data[i-1]:=data[i-1]-right+left;
temp:=right;
right:=data[i]*i/50;
data[i]:=data[i]+temp-left
end;
j:=j+1
until j=100;
for i:=1 to n do begin
writeln(i,'番目の定常値は',data[i]:5:3,'です。')
end.
0884883
NGNG得られた値に変化が見られないのですがなぜなのでしょうか?
また、左右に移動する確率をrandomを用いて得ようと思い
簡単なプログラムでどのような乱数が返ってくるのかを
試したところ毎回同じ値しか帰ってこないのはなぜなのでしょうか?
0885デフォルトの名無しさん
NGNG0886883
NGNGもっと果てしない回数を繰り返して得られるものだと思っていたので…
type x=array [1..5] of real;
var data:x;
a,n:integer;
begin
for n:=1 to 5 do
data[n]:=random;
for n:=1 to 5 do
writeln(data[n])
end.
こんなプログラムでいつも同じ乱数しか返ってこないのですが
違う乱数を得るにはどうしたらいいんでしょうか?
0887デフォルトの名無しさん
NGNG0888883
NGNGありがとうございました
0889883
NGNG待ち行列と考えると
右に移動していく値は人の到着の確率
左に移動していく値はサービスをうけ列を離れていく確率
になるのではないかと思うのですがどうでしょうか?
0890883
NGNGvar data:foo;
i,j,n,k,m:integer;
right,left,temp:real;
begin
write('行列の全人数は?');
readln(n);
write('何ステップ?');
readln(k);
write('窓口の数は?');
readln(m);
{初期値の設定}
data[1]:=1;
j:=0;
repeat
{最初に人がが到着する確率}
right:=data[1]*・・・;
{移動}
for i:=2 to n do begin
{窓口でのサービス提供}
if i<=m then begin
{サービス終了率}
left:=data[i]*・・・;
data[i-1]:=data[i-1]-right+left;
temp:=right;
right:=data[i]*・・・;
data[i]:=data[i]+temp-left
end
0891883
NGNGelse begin
{途中放棄率?}
left:=data[i]*・・・;
data[i-1]:=data[i-1]-right+left;
temp:=right;
right:=data[i]*・・・;
data[i]:=data[i]+temp-left
end;
end
j:=j+1
{決められたステップ数まで}
until j=k;
for i:=1 to n do
writeln(i,'番目の定常値は',data[i]:5:10,'です。')
end.
待ち行列に用いて行列の定常値を求めるには
こんな感じにすればいいんでしょうか?
0892883
NGNG(AのN乗÷N!)÷(Σ AのX乗/X!)
X=0〜N
この式の左側は記述できたのですが
右側はどうやって記述したらいいのでしょうか?
0893デフォルトの名無しさん
NGNGあと0からってのがおかしいと思うが
0の階乗なんてないし
0で割ったらダメでしょ
括弧の結びどころがみにくい
Σ(A^X / X!)
こう解釈していいか?
Σの上下につく数字も明示してくれ
下手っぴでずれてもいいからさ
X=1からNまでってところか?
0895883
NGNGtype hako=array [1..100] of real;
hako2=array [1..100] of real;
hako3=array [1..100] of real;
var box:hako;
box2:hako2;
box3:hako3;
n,b,x,y,z,temp:integer;
ue,a,seki,total,kotae,goukei:real;
begin
write('Nは?');
readln(n);
write('Aは?');
readln(a);
seki:=1;
for b:=1 to n do begin
seki:=seki*a;
box[b]:=seki
end;
x:=0;
y:=1;
z:=0;
repeat
x:=x+1;
y:=y*x;
temp:=y;
z:=z+1;
box2[z]:=temp
until z=n;
ue:=seki/y;
0896デフォルトの名無しさん
NGNGbox3[b]:=box[b]/box2[b];
total:=0;
for b:=1 to n do
total:=total+box3[b];
goukei:=total+1;
kotae:=ue/goukei;
writeln('求める値は',kotae:5:3,'です。')
end.
こんな感じであってますか?
0897883
NGNG(A^N/N!)/(Σ((A^X)/X!)) Xは1からNまでで
やっぱりX=0の時も値を求める必要があるみたいなので
1を加えてみたのですが、どうでしょうか?
0898デフォルトの名無しさん
NGNG0899883
NGNGΣ {a/(n-a)}^m/(n-m)!*s^(m-s) m=s〜nまで
nCmはコンビネーションです。
a,n,sにはこちらから値を与えて解を求める問題なのですが
どう記述したらよろしいでしょうか?
お願いします
0900デフォルトの名無しさん
NGNG0901デフォルトの名無しさん
NGNG配列2に5,4,3,2,1と入れ替えるにはどうしたらいいですか?
0902デフォルトの名無しさん
NGNGarray2[i] := array1[High(array1) - i];
0903デフォルトの名無しさん
NGNGありがとうございました
0904デフォルトの名無しさん
NGNG0905デフォルトの名無しさん
NGNGbox2=array [1..100] of longint;
var hako:box1;
hako2:box2;
i,n:integer;
p,q,r:real;
begin
p:=0;
q:=1;
r:=0;
repeat
p:=p+1;
q:=q*p;
r:=r+1;
hako[r]:=q
until r=10;
for i:=Low(hako) to High(hako) do
hako2[i]:=hako[High(hako)-i];
for n:=1 to 10 do
writeln(hako2[n])
end.
上のプログラムのようにリピートを用いた記述で
配列の入れ替えを行うと0しか戻ってこない場合はどうしたらいいですか?
0906レイホウ@6歳
NGNGこれを
until r=100;
とやってみなさい
0907デフォルトの名無しさん
NGNGありがとうございました。
0908レイホウ@6歳
NGNGやってみたら
for n:=90 to 100 do writeln(hako2[n]);
こうだな
それか
box1=array [1..10] of longint;
box2=array [1..10] of longint;
↑これ
0909デフォルトの名無しさん
NGNGrealで宣言すると100!の階乗でも求められるのに
配列(realで宣言)に入れてしまうとエラーが出てしまうのはなぜですか?
0910デフォルトの名無しさん
NGNG1) 配列は本当に実数型ですか?
2) 初期化していますか?
3) 小さな値(2!、3! など)でもそうなりますか?
0911デフォルトの名無しさん
NGNGコード書けょ
配列なのにhoge:=kaijou(100);
みたいなことやってるんじゃないの?
hoge[0]:=kaijou(100);
0912909
NGNGvar hako:box;
a,b,c,d:real;
begin
a:=0;
b:=1;
c:=0;
write('数値入力');
readln(d);
repeat
a:=a+1;
b:=b*a;
c:=c+1;
hako[c]:=b
until c=d;
writeln('答えは',hako[c],'です。')
end.
これで、
Error: Type mismatch
Error: Incompatible types: got "S64REAL" expected "LONGINT"というのが
hako[c]のところにでてしまいます
0913デフォルトの名無しさん
NGNGLONGINT を期待してはるのに S64REAL 型の変数がやってきたんや。
0914デフォルトの名無しさん
NGNGコンパイルエラーが出なくなるまでキャストし続ける。
何でもいいからよさそうな型でキャスト。
912 のコードなら
hako[ byte(c) ]:=b;
でどうだろう。
0915デフォルトの名無しさん
NGNGvar
a, b: real;
c, d: integer;
で。
0916デフォルトの名無しさん
NGNG指数分布に従う乱数を発生させるにはどうしたらいいですか?
0917デフォルトの名無しさん
NGNGってことか?
いや、分布だから大きい数がめっちゃ出やすいってことか?
0918デフォルトの名無しさん
NGNGbegin
Result := -Ln( Random );
end;
0919デフォルトの名無しさん
NGNGアルファベット順にするのはソート関数でいいとして、文字列の配列(?)っていうのが分からない。
たとえばA[i](char)って配列を用意したとして、英単語を
my
may
と入力した場合は、
A[1]='m' A[2]='y' A[3]='m' A[4]='a' A[5]='y'
となるような気がするんですが、これじゃあソート出来ないですよね?
A[1]='my' A[2]='may'
として、さらに一文字ずつ比較していくにはどうすればいいですか?(分かりづらいとは思いますが)
0920デフォルトの名無しさん
NGNGarray[1..100] of string;
って定義は可能?
0921デフォルトの名無しさん
NGNG試しにやってみたら
warning: missing string capacity - assuming 255
と出ましたが、これ出てきても出来ます?
0922デフォルトの名無しさん
NGNGtype Str255:string[255]
とか定義して、
array[1..100] of Str255
しちゃえば良いのでは?
(って、昔のマック風みたい)
0923デフォルトの名無しさん
NGNGでも今度は、stringで定義した文字列で、アルファベット順に順序を比較していく方法が分かりません。
0924デフォルトの名無しさん
NGNGtype
TargetType = array[1..100] of integer;
と定義しているとき、
procedure Sort( var TargetData : TargetType );
という関数を実装出来ますか?
これが出来るなら、文字列ソートも容易でしょう。
0925デフォルトの名無しさん
NGNG「アルファベット順に順序を比較」ってことは、与えられた二つの文字列に順序をつける。
という操作と同義。
type
CompareResult = (sGREATER, sEQUAL, sLESS);
function CompareString( s1, s2 : string ) : CompareResult;
という関数を作り、任意の文字列間に順序を定める。
もし使っている処理系が文字列間比較をサポートしているのなら、
if s1 > s2
みたいに書いてしまえばよい。大きいか小さいか、等しいかの3通りあるので間違えないように。
文字列間比較をサポートしていない処理系の場合は「アルファベット順」の定義に基づき
一文字ずつ比較。
0926デフォルトの名無しさん
NGNG0927デフォルトの名無しさん
NGNG0928デフォルトの名無しさん
NGNG0929げんげんげんげん
NGNGをもつ乱数を発生させるプログラム誰か教えてください!!
お願いいたします。
0930デフォルトの名無しさん
NGNGExp(x * Ln(n));
//n>0のときのみ
0931デフォルトの名無しさん
NGNG0932デフォルトの名無しさん
NGNG0933デフォルトの名無しさん
NGNG0935デフォルトの名無しさん
NGNGなんか番号間違えまくってないか?
0936デフォルトの名無しさん
NGNG1つも間違ってない
0937930
NGNG0938デフォルトの名無しさん
NGNG0939デフォルトの名無しさん
NGNGなんか、次スレたってるぞ
0940デフォルトの名無しさん
NGNGPascal の言語が一通りわかれば良いのですが。
0941デフォルトの名無しさん
NGNGPascalって言っても方言から拡張まで何でもありだから、対象の開発環境によってまるっきり違いそうな気がする。
それに言語仕様といっても厳密に書き出すと膨大な量になるから、あまりやっているところはないんじゃないかな。
一通りということなら、入門サイトでも見たらどうかな?
私は本(WirthのPascal本)から入ったのでサイトを紹介することはできないけど。
0942デフォルトの名無しさん
NGNGここで検索すればJIS標準Pascalの仕様書がPDFで閲覧できるはず。
適当に弄ればPDFのDLもできる。
0943942
NGNGトップページから「JIS検索」たどってくれ
0944デフォルトの名無しさん
NGNGその後のオブジェクト指向方面の拡張はAppleのとBorlandので違うもんねぇ。
gpcはBorlandに近いんだっけ?
0945デフォルトの名無しさん
NGNGどうもです。
いま直接関係しているのが Pascal の方言なので、サイトとかを見て回ってみます。
0946デフォルトの名無しさん
NGNGiniファイルのようにキーがたびたび変更される場合を扱いたいのです
0947946
NGNG忘れてください
0948デフォルトの名無しさん
NGNG「キーがたびたび変更されるのでそれに対応する」んじゃなくて「キーがたびたび変更されないように(もしくは変更されても簡単に対応できるように)プログラミングする」のが良いと思う。
キーを作るプログラムが他のだと手の出しようもないけど、自分で作るのならデータ構成、プログラミングで対応できそうな気がする。
0949デフォルトの名無しさん
NGNG大学の授業で先週からpascalやってるんですけどわけがわからなくなってるんで
家でpascalの勉強をしたいんですけどどうすれば自宅のパソコンで使えるようになるんですか?
OSはウインドウズXPなんですけど。
CDとかで売ってたりするんですか?
>>1のサイトでダウンロードしてもインストールすることができないし
何をどうすれば自宅のパソコンでpascalが使えるようになるんですか?
0950デフォルトの名無しさん
NGNG大学の授業ってんならgnu-pascal(gpc)当たりが正当かと思うが、
borlandのサイトからdelphiの無償版が落とせる。
またFreePascal(fpc)というのも割りとメジャーだ。
ttp://www.freepascal.org/
ttp://www.jp.freepascal.org/mirror/fpc/download.html
0951デフォルトの名無しさん
NGNG>>950が言う通りだと思うけど、その教授に自習したいから処理系教えれ!って聞くのがいいんじゃなかろうか?
学校のマシンが何かのUnix系の端末でgpcってオチが一番ありそうな気はするけども。
Cygwinあたりを突っ込んで(SFUとかU-WinとかMinGWとかでも構わんかもしれんけど)自力でgpcを入れるとかなのかな?
後、大学生なら
ttp://www.pascal-central.com/
あたりとりあえず眺めてみるのもお勉強になるかもね。
って、情報系でもなんでもなくてマジわけわかんね〜〜〜〜〜!!!とかだとこういう情報過多なサイトは遠慮しとくベキ?
0952デフォルトの名無しさん
NGNGBloodshed Software - Dev-Pascal
http://www.bloodshed.net/devpascal.html
0954大学生
NGNG二分法でfor文を使って求めるプログラム、
さらに二分法で求めたものを再帰的手続きにより求めるプログラムを
テストで出されるそうなのですが、まったくわかりません・・。
なんとか助けていただけないでしょうか??
よろしくお願いします!!!
0955デフォルトの名無しさん
NGNG以上
0956デフォルトの名無しさん
NGNG0957デフォルトの名無しさん
NGNGfunction 再帰で開平を求める関数(c: real);
function 実際の再帰で開平を求める関数(範囲の最低値, 範囲の最高値: real);
var 二分点: real;
begin
二分点 := (範囲の最低地 + 範囲の最高値)/2;
if (二分点 * 二分点) < c then result := 実際の再帰で開平を求める関数(二分点, 範囲の最高値)
else (二分点 * 二分点) > c result := 実際の再帰で開平を求める関数(範囲の最低値, 二分点)
else result := 二分点;
end;
begin
実際の再帰開平を求める関数(0, c)// 初期値は 0 から c までとする。
end;
0958デフォルトの名無しさん
NGNGLD A−Aをレジスターに格納する
ST A−レジスターの中身をAに格納
AD A−レジスターの中身とAを足して、レジスターに格納
SB A−レジスターの中身とAを足して、レジスターに格納
ML A−レジスターの中身とAを掛けて、レジスターに格納
DV A−レジスターの中身をAで割って、レジスターに格納
接尾辞表現で ABC*+DE-/(普通に書いたら(A+B*C)/(D-E))と入力して
上の指示表現を使って答えを解いていくための別のプログラムを書くとしたら
LD B
ML C
ST TEMP1
LD A
AD TEMP1
ST TEMP2
LD D
SB E
ST TEMP3
LD TEMP2
DV TEMP3
ST TEMP4
と表示できるようなプログラムをpascalで作りなさい。という内容です。
ヒント 式を順にスタックに入れていって、
最初のBC*はop2:=c;op1:=b;として、取り出していくそうです
人助けだと思ってお願いします(ToT)/~~~
0959デフォルトの名無しさん
NGNGとはいうものの、処理系手に入れるまで待ってね。
0960デフォルトの名無しさん
NGNG1→2→3→4→5→6→7→8→9→α→β→γ→δ
* + − /
A B C C X X Y D E E Z Z W
A B B A A Y D D Y Y
A A Y Y
4: (B * C -> X) => (LD B / ML C / ST TEMP1)
6: (A + X -> Y) => (LD A / AD TEMP1 / ST TEMP2)
α: (D - E -> Z) => (LD D / SB E / ST TEMP3)
γ: (Y / Z -> W) => (LD TEMP2 / DV TEMP3 / ST TEMP4)
0961デフォルトの名無しさん
NGNG0962デフォルトの名無しさん
NGNG現在、Pascalによるプログラムが実用されている所ってあるんですかね。
どっかの工場のPCで動いてるとか。
0963デフォルトの名無しさん
NGNG君の知らない「あそこ」で動いている。
秘主義務があるので具体的な内容は話せない。
0964デフォルトの名無しさん
NGNGこれもPascalみたい。
体験版あるみたいなのでPascal詳しい人試してみて意見聞かせてほしいです。
0965デフォルトの名無しさん
NGNG> 当時は Borland(現 Inprise)の Turbo Pascal が人気のコンパイラでした。私も一時はそればかり使っていま
> した。しかし,世の中は ANSI C に移ろうとしていた頃です。私はまむしさんより一歩先に Turbo Pascal を捨
> てて Turbo C に移行しました。
ttp://oku.edu.mie-u.ac.jp/~okumura/compression/1988.html
0966デフォルトの名無しさん
NGNG私はngraphを現役で使っています。
0967デフォルトの名無しさん
NGNG研究室のMS-DOS機ですか?
0968966
NGNGあとアドインプログラム書くのでコンパイラも時々動かしてます。
0969デフォルトの名無しさん
NGNGPascalは詳しくやってないのでよくわかりません。二分探索木の問題で
type tree = @node;
node = record;
element:integer;
left,right:tree;
end;
で2分木のデータ型treeを定義しているのですが、これはC言語で書くと
struct node{
int element;
struct node *right,*left;
};
struct node *tree;
といった感じのイメージでいいのでしょうか(Cの方の文法も間違ってるかも…)。
0970デフォルトの名無しさん
NGNGあ、Pascalの方の2行目recordと4行目treeの後ろにセミコロン;はありませんでした。
すみません。
0971デフォルトの名無しさん
NGNG0972デフォルトの名無しさん
NGNGPascalではどう書けばいいのでしょうか?
0973デフォルトの名無しさん
NGNGif p=nil then begin
new(p);
with p do begin
(穴埋問題) :=x;
left :=nil;right :=nil;
end
end
ってのがあったんですが、with p って何ですか?
0974デフォルトの名無しさん
NGNGpがtree型ならそいつの指すnode型のブツをゲットする必要があるから例えば
p^.element
だな。Cの
(*p).element
に相当する書き方。
withの意味は自分で調べれよ。それで分からないところだけ質問しる。
ところで、そこの「with p」は「with p^」 が正しいと思うがどうか。
0975969=970=972=973
NGNGありがとうございます。問題文を見直した所、with p と書かれています。問題の間違いですかね?
with文についてググったのですが
「Pascalでレコードのメンバーを扱うには「レコード名.メンバー名」という書式を使うが、
レコード名をある程度省略する方法がある。それにwithを使う。
withの内部では「メンバー名」を書くだけで、そのレコードのメンバーが参照できる。」とありました。
例えば穴埋問題の部分には(p^)のelementメンバにxを代入したいわけですが、
ここは「(p^).」を付けずに element := x; と書ける、ということですか?
書けるとしたら、p^.elementと書くのは間違いとなるのでしょうか?
0976上とは別人
NGNGwith p or with p^も、Delphiなんかじゃrecordへのポインタに直接"."を続けられるから間違いとも言い切れ無さげ…
あと、withは、名前を探す順番を変えるだけなので、p^.elementももちろん書ける…私の知ってるPascalであれば…
0977デフォルトの名無しさん
NGNGありがとうございました。
@については、ここ数年分見ましたが、同様の問題では全て@node;のような書き方をしていました。
別な方言なんでしょうね。
0978デフォルトの名無しさん
NGNGPASCALのJIS規格では「@」は「^」の代替表現なので、とりあえず
どっちで書いても同じです。Delphiでは意味が違いますが。
「with p」は規格としては「with p^」でないとまずいでしょう。
もちろん「with p」と書ける処理系は存在するかもしれませんが,
すくなくとも GNU Pascal ではだめでした。
0979デフォルトの名無しさん
NGNG0980デフォルトの名無しさん
NGNG0981デフォルトの名無しさん
NGNG0982デフォルトの名無しさん
NGNGレス数が950を超えています。1000を超えると書き込みができなくなります。