[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 09:01 / Filesize : 272 KB / Number-of Response : 983
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Pascal の初心者用の質問・相談所



1 名前:デフォルトの名無しさん [02/01/02 01:46]
Pascal の初心者用の質問・相談所
コンソールのみ。GUI は扱いません。
「Cをやったけど難しいので、やっぱりPascalからぼちぼちやるぅ」という人向け。

コンパイラダウンロード
www.vector.co.jp/vpack/filearea/win95/prog/pascal/index.html

ちなみにDelphiは
「モナーの *やさしい* Delphi質問スレ」
pc.2ch.net/test/read.cgi/tech/1003113413/

199 名前:がうがう ◆AGuK1Awo [02/03/02 12:21]
>>198
 そうですか(笑) だとしたらPASCALコンパイラ(Borlandのやつですね)
は、優れているということですね。
 PASCALで作られた有名な作品ってご存じですか?

 自分は、「WTERM」ぐらいでしょうか?

皆さんも教えてくださると幸いです



200 名前:アライグマPascal [02/03/02 12:36]
ゲームだったら,三大古典RPGの一つ「ウィザードリィ」ですね。

201 名前:デフォルトの名無しさん mailto:sage [02/03/02 13:23]
>>200
そういうこと言うと、厨房どもがわらわら集まってくるので禁止

202 名前:がうがう ◆AGuK1Awo [02/03/02 17:42]
>>200
あ、そうか…… APPLEでPASCALでしたね
 しかも独自IP(最初に起動するときに読む奴 IPじゃなかったでしょうか
 それともSIP?)で動くんですよね

 IBM/PC版は、そのエミュで動くと聞きます。
 エミュの上にIPがあってその上でAPPLEのPASCALで書かれたWIZ
 が動くとか。


203 名前:がうがう ◆AGuK1Awo [02/03/02 17:42]
>>201
 ?? そうなんですか?
 

204 名前:デフォルトの名無しさん [02/03/02 18:02]
パソコン版D&D(RPG)はTurboPascalだったらしい。
ファミコンに移植した人から聞いた。


205 名前:アライグマPascal [02/03/02 23:28]
MS-DOSの最初のバージョンあたりはPascalだったはず。
すぐに全面的にCで書き直されたけど・・。

206 名前:デフォルトの名無しさん mailto:sage [02/03/02 23:31]
Pascal最初にやるとCの構文が汚く見えるね。

207 名前:がうがう ◆AGuK1Awo [02/03/03 01:05]
昔BASICマガジンというのがあって、たくさんのソースが載っていて
大変勉強にもなったそうですね。
あるいは、MSXFANとかの投稿雑誌があって、MSXBASICでも
勉強になったとか……

ネットでPASCALのソースを探しているんですがなかなか(-.-;)
ゲームに参考になる画像描写(CGA)で参考になるのがないですかね?

とりあえず 植木屋 さんのウェブサイトにて CGAの参考を
ttp://plaza10.mbn.or.jp/~uekiya/hp200lx/japanese/cga.html

人のソースが一番勉強になるんだけれどもなあ 初心者には(^O^;;




208 名前:がうがう ◆AGuK1Awo [02/03/03 01:06]
>>204
 お!あの D&Dもですか やったことはないんですが
 名前だけは伺っています

 そのソース見てみたいなあ


209 名前:がうがう ◆AGuK1Awo [02/03/03 01:08]
>>205
 え! うっそぉでしょ?
 本当にぃ! それしか言葉が出てこないぐらいびっくりしました
 う
 すげぇなあ。 1.0位の頃でしょうかね?


210 名前:がうがう ◆AGuK1Awo [02/03/03 01:12]
先ほどの植木屋さんところのCソースをプリントアウトして
眺めているんですが、何をどうしてどうするのかが(^O^;;

あるテクニックが何のために必要か、それをどう有効に使うか
以前のCで何が書かれているのかさえも読めない(^O^;;

Cの入門書を買ってきて一行ずつ解析していけば読めるかなあ?
どこかにCGAでPASCALゲームソース公開されてませんか?
探しているんですが見つからない(^O^;;


211 名前:デフォルトの名無しさん [02/03/03 06:41]
>210
CGAは対応しているかわかりませんがGrafx2というのがあります。
www-msi.ensil.unilim.fr/~maritaud/sunset/grafx2.html

それと www.pascal-central.com/ はPascal使いであれば知らないと
似非パスカラーとして認定されてしまいます。:-)


212 名前:デフォルトの名無しさん [02/03/03 06:49]
>211
すまぬ。自爆。画面モードと間違えた。(^^;

213 名前:デフォルトの名無しさん [02/03/03 21:04]
>>199
まぐローダ

214 名前:デフォルトの名無しさん mailto:sage [02/03/03 23:29]
>>199
Ngraph

215 名前:デフォルトの名無しさん mailto:sage [02/03/04 21:50]
>211

あと、SWAGもな >Pascalerの心得


216 名前:デフォルトの名無しさん mailto:sage [02/03/05 11:17]
>215
アドレスはここだ>SWAG
 ttp://www.gdsoft.com/swag/swag.html

 

217 名前:がうがう ◆AGuK1Awo [02/03/05 15:14]
>>211
 知りませんでした(^O^;; 似非パスカラー決定?(-.-;)
 教えてくださって有り難うございます
 翻訳にかけると妙な日本語で(笑)





218 名前:がうがう ◆AGuK1Awo [02/03/05 15:16]
おっと 変なところで書きこんじまった(-.-;)

少しずつ読んでいこうと思います


219 名前:がうがう ◆AGuK1Awo [02/03/05 17:58]
SWAGのサイトに行ってみようとしたんですが
めちゃくちゃ重くないですか? ここ

220 名前:デフォルトの名無しさん [02/03/05 18:14]
>>199
似非キース まぐぺ、まるぺ


221 名前:超初心者 [02/03/08 01:30]
正に今日pascal始めたばかりなのですが、いきなり詰まってます。
procedure 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"
と怒られてしまいました。
型変換はどうするのでしょう?




222 名前:デフォルトの名無しさん mailto:sage [02/03/08 01:32]
forward

223 名前:デフォルトの名無しさん [02/03/08 05:01]
>221

FreePascalにも型変換の概念はあるけど、それ以前の問題として
Pascalでは整数型除算では「/」ではなく「div」を使わないと
文句を言われます。

224 名前:デフォルトの名無しさん mailto:sage [02/03/08 12:44]
>>221
Hint: use DIV instead to get an integer result
↑これをちゃんと読みましょう

225 名前:デフォルトの名無しさん mailto:sage [02/03/09 02:40]
>>221
実数は整数型変数に代入できない。
Round関数またはTrunc関数を使って整数に変換する。
だけど今のケースは>>223の言う通りdivを使うべきだ。

226 名前:デフォルトの名無しさん mailto:sage [02/03/09 18:54]
221は222が
>pascalではCの様なプロトタイプ宣言は出来ないんですか?
にちゃんと答えてくれていることに気が付いているのだろうか?

227 名前:アライグマPascal [02/03/09 21:24]
>226
さりげない一言「forward」に私は愛を感じました。
たぶん受け止めていただけたと思います。



228 名前:デフォルトの名無しさん mailto:age [02/03/09 21:55]
気づいてなさそうだからヤボな説明をしておこう

Pascalには「プロトタイプ宣言」は無い
しかし、「プロトタイプ宣言」とは言わないがそれと同じものはある
それがforward宣言だ


229 名前:アライグマPascal [02/03/10 17:50]
パスカルの文献が少ないので「サウンド・プレス」さんのところで
翻訳中の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.



230 名前:アライグマPascal [02/03/10 17:53]
ぐは、
profedure×
procedure○

231 名前:アライグマPascal [02/03/16 18:03]
どなたか教えてください。
ある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 を返します。

どちらの処理系の演算が正しいのでしょうか?またどんなルールで演算を
しているのでしょうか?

232 名前:デフォルトの名無しさん mailto:sage [02/03/16 18:28]
>>231
そんな、処理系依存の重箱の隅をつつく問題を出す書籍など、捨てろ。

233 名前:アライグマPascal [02/03/16 21:13]
ISO-PASCALを解説した本ですが、今まで演習問題は気にもとめなかったのです。

(1)はround(-8.5)と書き直すことができますよね。roundは小数点下を四捨五入
するから答えは-9になるのが当たり前と思っているのですが、違うのでしょうか。
こんな簡単な演算でも処理系依存で値が変わるのは大問題だと思うのですが、
処理系依存とはどういうことでしょうか?

234 名前:デフォルトの名無しさん mailto:sage [02/03/16 21:16]
-9.5 は
-10 + 0.5
-9 + (-0.5)
のどちらを正解にしたい? 銀行家丸め以前の問題。

235 名前:アライグマPascal [02/03/16 21:26]
>234

上はそれぞれを丸めると-10+1=-9
下はそれぞれを丸めると-9+(-1)=-10になるということでしょうか?

でもround(2.5*(5.5-8.9))の場合、括弧内から計算していくと
round(2.5*(-3.4))になり、別々に丸めても
round(3*(-3))=-9にはなりませんか?
どんなルールが働いているのでしょうか????????

236 名前:デフォルトの名無しさん mailto:sage [02/03/16 21:26]
大体、C や PASCAL が定義されたころって、ライブラリの重要性が
今ほど高くなかったのだよ。というかライブラリは処理系の外に
存在するものだった。

ISO 7185 / JIS X3008 のどこにも Round 関数の仕様の話はない。

よって、処理系依存問題。


237 名前:デフォルトの名無しさん mailto:sage [02/03/16 21:28]
>>235
そんな難しい話ではなく、
-9.5 を -10 にする根拠は? -9 にする根拠は?って話。
どちらも誤差は 0.5



238 名前:デフォルトの名無しさん mailto:sage [02/03/16 21:31]
あ゛ お題は -8.5 か。
ウツダシノウ

239 名前:アライグマPascal [02/03/16 21:39]
う〜ん

round(X)
実数式Xの小数点以下を四捨五入した整数値を返す。

とあるなら、その値は唯一一つしかあり得ないはずですよね。
別の解釈が入り込む余地は無いと思うのですが、
こんな単純明快な話なのにどうして処理系依存なんてことが
あるのだろう。


240 名前:アライグマPascal [02/03/16 21:44]
(2)の問題は
1.3+6E-1 の部分の(-1)の解釈が、単に整数値の-1と解釈するのか
前のEとの絡みで、10のマイナス1乗と解釈するのかの違いだと思うの
ですが、どうでしょうか?

241 名前:デフォルトの名無しさん mailto:sage [02/03/16 21:46]
1. そもそも Round 関数は Pascal 言語の仕様の範囲外。個々の処理系のライブラリが
規定するもの。

2. 正の数の丸めは Banker's Round / 銀行家の丸め問題以外には大きな問題はない。
homepage1.nifty.com/s_miyake/hp/jisround.htm



242 名前:デフォルトの名無しさん mailto:sage [02/03/16 21:55]
3. 負の数の丸めを明確に規定する物はない。

-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 // これも簡単。

243 名前:アライグマPascal [02/03/16 21:59]
>241
お恥ずかしい話ですが初めてこの話を知りました。
ということはHelloPascalは「JIS丸め」を採用していない、
演算によっては誤差が大きくなりやすいということですね。
関連のURLを含めて作者に連絡してみようと思います。

244 名前:デフォルトの名無しさん mailto:sage [02/03/16 22:11]
実数型か少し多めの桁を使用して表示の際に四捨五入すれば
実用上は問題ないんだけどね

厳密にしようとすると気になるかも

245 名前:デフォルトの名無しさん mailto:sage [02/03/16 23:13]
なお、div / mod 「演算子」の負数に対する振る舞いは規格書に明記されています。

まぁ普通はそこまで気にしない/気にしてもしょうがないので「処理系依存」の振る舞い
とひとくくりにしてしまいますが。

246 名前:デフォルトの名無しさん mailto:sage [02/03/17 00:04]
その前の問題として 数値の持ち方の問題があるんじゃない?

2進で表現すると
5.5 101.1と 誤差無くもてるけど、8.9=1000.1110011001100110011 と誤差無く持てない


247 名前:デフォルトの名無しさん mailto:sage [02/03/17 02:33]
>>246
銀行家丸めはコンピューターが無い頃からの技法だよ。



248 名前:デフォルトの名無しさん [02/03/22 21:52]
最近までBASICで遊んでましたが、今日アマゾンからUsing turbo pascal 6.0-7.0 third edition
が届いたのでまたPascalで遊んでみたいと思います。


249 名前:デフォルトの名無しさん mailto:sage [02/03/22 22:03]
何でわざわざ古い物を選ぶんだろう。
昔の物だからといって、機能が少ないからといって、優しいとは限らないんだよ?

250 名前:デフォルトの名無しさん [02/03/22 22:24]
>>249
じゃーキミも三平方の定理使うのやめなよ。


251 名前:デフォルトの名無しさん mailto:sage [02/03/22 22:26]
まあまあ。他人が何しようといいじゃないの。
遊ぶんだったら、趣向は人それぞれ。
おれも宿題スレみて生DOSアプリを作ってみたくなったよ。

252 名前:アライグマPascal mailto:sage [02/03/22 22:59]
例の「答えが書籍と違う」という話ですが、作者にメールで
報告したところバグらしいとのことでバグフィックスをする
とのことでした。

253 名前:デフォルトの名無しさん [02/03/28 22:22]
なぜend.の直前の行には;が不要なのか。


254 名前:デフォルトの名無しさん mailto:sage [02/03/28 22:27]
>>253
;は文と文を分離するためのものだからです。


255 名前:デフォルトの名無しさん [02/03/28 22:59]
>>254
よく理解できました。ありがとうございました。


256 名前:丁稚Pascal [02/03/29 05:58]
現在情報学科の一年(四月から二年)で、まだ言語はPascalしか知りません。
今はまずPascalをある程度できるようになりたいので、
このスレでいろいろ課題を出してもらえるとうれしいのですが・・・。

257 名前:デフォルトの名無しさん mailto:sage [02/03/29 07:22]
アメリカの大学だと Java から入るんだけどね...



258 名前:丁稚Pascal mailto:sage [02/03/29 07:48]
そうなんですか。
何の言語から入るかは意見のあるところとは思いますが
色々と手を出すよりもまずは一つのものを――
と考えているので、よろしくお願いします。

259 名前:アライグマPascal mailto:sage [02/03/29 07:59]
手持ちの書籍からの抜粋でよろしければ・・・・・

「正の整数aとb(a>=b)の最大公約数(GCM)を求めるプログラムを書け。
aまたはbがゼロ以下の場合は適当にエラーメッセージを出力せよ。」

解法のヒント(ユークリッドの互除法をつかう)

まず大(a)を小(b)で割った余りrを求める。
次にaをbに、bを余りrに置き換える。
これをr=0となるまで繰り返す。最後の被除数がGCMとなる。


260 名前:アライグマPascal mailto:sage [02/03/29 08:03]
「明解PASCAL・国際規格(ISO)準拠」 伊東正安/金谷範一=共著
サイエンス社 定価(本体2111円+税)

上の本からの出題です。この本は個人的におすすめです。

261 名前:丁稚Pascal mailto:sage [02/03/29 08:04]
さっそくチャレンジしてみます。

262 名前:丁稚Pascal mailto:sage [02/03/29 09:01]
program GCM(input,output);
var 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.

263 名前:丁稚Pascal mailto:sage [02/03/29 09:05]
こんな感じになりました。
これくらいで一時間か・・・ちと情けない。
直したほうが良い箇所とかありますか?

264 名前:デフォルトの名無しさん mailto:sage [02/03/29 09:27]
>>263 折角だから GCMを求める関数を作って
 メインではそれを呼ぶように変更してはどう?

それから最小公約数は1だよ

最大公約数・最小公倍数でWeb検索してみたら

265 名前:丁稚Pascal mailto:sage [02/03/29 09:37]
>>264
>それから最小公約数は1だよ
そうでした、恥ずかしい・・・。
関数つかってやってみますね。

266 名前:丁稚Pascal mailto:sage [02/03/29 09:57]
program GCM(input,output);
var 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.

267 名前:丁稚Pascal mailto:sage [02/03/29 10:02]
訂正してみました。いちいちソース貼ってると長くなるなぁ。



268 名前:デフォルトの名無しさん mailto:sage [02/03/29 10:25]
>>266 大小の比較交換も a_gcmに入れないと使う時に不便だよ

269 名前:丁稚Pascal mailto:sage [02/03/29 10:35]
program GCM(input,output);
var 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.

270 名前:丁稚Pascal mailto:sage [02/03/29 10:38]
>>268
なるほど。再度訂正してみました。
大学だと課題として提出して終わりなんで、その場限りのコードになりがち。
気をつけねば。

271 名前:デフォルトの名無しさん mailto:sage [02/03/29 10:58]
× if a<b then begin
  z:=y;
  y:=x;
  x:=z;
  end;


272 名前:デフォルトの名無しさん mailto:sage [02/03/29 11:02]
テストコードを書く習慣をつけないといけないよ
 最初に予め計算した結果と何個か比較させるようにするといい

if a_gcm(555,9875)!=5 then writeln('NG');


273 名前:デフォルトの名無しさん mailto:sage [02/03/29 11:16]
除算を使わない GCD

function 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;

274 名前:アライグマPascal mailto:sage [02/03/29 11:38]
書籍に載っていた模範解答です。

program 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. 

275 名前:丁稚Pascal mailto:sage [02/03/29 13:20]
>>271
やってしまった・・・。

>>272
なるほど、次からはテストコード入れるようにします。

>>273
参考になります。

>>274
自分の
  r:=x mod y;
  x:=y;
  y:=r;

よりも、
 r:=a mod b ; a:=b ; b:=r ;

のように一行に書いてしまった方がいいんですかね?
これは好み?

276 名前:アライグマPascal mailto:sage [02/03/29 16:46]
まったくの好みです。
私は全て一行一文主義です。

277 名前:デフォルトの名無しさん [02/03/29 20:49]
Pascal の歴史はここが詳しい。
web.mit.edu/taoyue/www/tutorials/pascal/history.html




278 名前:デフォルトの名無しさん mailto:sage [02/03/29 21:11]
>>277 サンクス
平易な英文だから
「英語はちょっと・・・」という人もトライしてみるといいね

この辺の経緯を知らなかったDelphiユーザーなら
ますます好きになること請け合いだよ

279 名前:丁稚Pascal [02/03/31 03:31]
>>276
ありがとうございます。
今まで一行一文だったし、読み易い(自分としては)ので
これからも一行一文でいきます

280 名前:デフォルトの名無しさん [02/03/31 22:22]
Pascal って String 型あるんだ。
Cよりラクチンでいいな。


281 名前:デフォルトの名無しさん [02/03/31 23:11]
ord ってなんの略なんだろう?
ord('R') で82 になるやつ。


282 名前:デフォルトの名無しさん [02/04/01 00:30]
order, ordinalなどの「序数」の事でしょう。

283 名前:デフォルトの名無しさん mailto:sage [02/04/01 00:38]
確かにCやBASICしか知らなかった人がPASCAL(Delphi)
のテキスト読んだときに集合とか順序型、部分範囲型
とか書かれていると「ハァ?」なんだろうなあって思う。(w

284 名前:デフォルトの名無しさん mailto:sage [02/04/01 00:46]
>>280
文字列に関してはCが馬鹿すぎるよね
よくあんな言語で業務用アプリを作るもんだと思ってたもの
C++は文字列用のクラスがあるからまだましだけど・・・

285 名前:デフォルトの名無しさん mailto:sage [02/04/01 09:44]
>>283
(゚Д゚)ハァ?
って思ったよ、最初は。でも便利だね。

286 名前:デフォルトの名無しさん [02/04/01 11:08]
集合型、列挙型、部分範囲型、この3つの関係を
理解できたら本当に便利だよね。

287 名前:丁稚Pascal mailto:sage [02/04/01 20:53]
Cでは文字列を扱いた場合どうしてるんですか?
配列で定義してるの?レベルが低くてすいません(^-^;
やっぱ他の言語も少しは勉強していかないとだめかな・・・



288 名前:デフォルトの名無しさん mailto:sage [02/04/01 21:47]
Cの場合、ポインタと配列の区別がpascalに比べるとはるかに曖昧です
char *p が文字列ポインタ(var p:PChar;)相当 (type PChar=Char^;)なんだけど
p="ABCD"; と文字列を代入してるかのように表現出来ます。
 というかします

そして文字列"ABCD"は5文字の文字配列と等価です。
 文字の最後は必ず #0 です。 これは Cでは'\x00' と書きますが

こういう表現方法をAsciiZとか呼びます

DelphiではこのAsciiZ方式と親和性が高くなるよういろいろな工夫がされています

289 名前:デフォルトの名無しさん [02/04/02 22:51]
for letter := 'A' to 'Z' do


290 名前:デフォルトの名無しさん [02/04/02 22:52]
>>289 は無視してくだされい。

for letter := 'A' to 'Z' do
 write (letter)

こういう書き方がOKと聞いてはじめはびっくりした。
しかし、よく考えてみると、文字コードが入っているだけなので、納得した。


291 名前:デフォルトの名無しさん [02/04/02 23:20]
>>288
何か変。
>p="ABCD"; と文字列を代入してるかのように表現出来ます。
> というかします
これは初期化のときだけ。
初期化のときに「char* p = "abcd"」とすると、文字列の長さの分(此処では5)だけの領域を「確保」し、この場合なら"abcd\0"で初期化をします。
代入のときには出来ません。
代入をしたいときは、標準ライブラリその他の関数を使うとか、一文字ずつ操作するとか(配列と同じです)。
(C++ならstd::strungという文字列クラスが標準で存在します)
> 文字の最後は必ず #0 です。 これは Cでは'\x00' と書きます
'\0'とかくのが普通。
'\x00'はコードが0になる文字で、'\0'は文字列の終わりにくる特殊な文字。
「結果的には」同じだけど(ASCIIの場合?)。

292 名前:デフォルトの名無しさん mailto:sage [02/04/03 00:23]
>>291補足。
「初期化」というのは、宣言のときの代入です(違うけど)。
Cでは変数を「型名 変数;」として宣言しますが、
「型名 変数 = 初期値;」とすることで、変数の定義と同時にその値を設定することも出来ます。

'\x__'は、xのあとに16進数の値を入れて、コードを直接指定します。

293 名前:まあ一応 mailto:sage [02/04/03 06:23]
>>291-292
char* p = "abcd"
はポインタだから配列とは違うぞ。と。
確保されるのはcharへのポインタとabcd\0だぞ。と。
char p[] = "abcd"
とは違うぞ。と。
(下はp="efgh"とかはできないが上はできる)

294 名前:デフォルトの名無しさん mailto:sage [02/04/03 06:50]
>>287
ところで課題出してほしいの?

295 名前:デフォルトの名無しさん [02/04/03 12:24]
じゃあ、データ構造の問題。
文字列を格納する片方向リスト構造を構築し、
任意の個数のデータを入力させ、最後に、その一覧を
通常ソート(頭文字がA→Zとなるように)及び
逆ソート(終端文字がA→Zとなるように)で出力せよ。



296 名前:291 mailto:sage [02/04/03 12:36]
>>293
謝謝!

297 名前:丁稚Pascal mailto:sage [02/04/03 18:59]
>>294
はい、おねがいします。

>>295
今からやってみます。かなり苦労しそうですが・・・



298 名前:デフォルトの名無しさん [02/04/04 20:58]
もうすこし単純な問題なら… そうさねえ
どの程度の問題を要求しているのか分からないけど、
「指定したファイルを、バイナリ形式で(
16バイト分を1行として、16進数で)表示せよ」 とか。

バイナリエディタみたいに。

00000 00 32 FF 55 23 56 F3 4F 93 F2 00 34 1A B3 34 CD
00001 ...
00002 ...
...

と言う風に表示。
でもって、それをテキストファイルに出力。


299 名前:デフォルトの名無しさん [02/04/06 00:37]
なんか、本読めば読むほど、Cとそっくりということがわかってきて、だんだん新鮮味がなくなってきた。
そろそろJavaに移るか。







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<272KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef