我很抱歉打扰你这种过时的语言,但有没有办法检查pascal中的特定数组元素是否为空?它是一个整数数组,因此检查元素是否为空字符串会导致类型不匹配(我喜欢这种语言!).谢谢你的时间.
我有一个任务是在Pascal中编写一个程序.当我运行程序时,结果是exitcode 201.
我不知道如何解决这个错误.
program convertTime;
uses crt;
Type
Jam = record
hh:integer ;
mm:integer ;
ss:integer;
end;
var
J : Jam;
P,totaldetik,sisa : integer;
begin
J.hh:= 16;
J.mm:= 10;
J.ss:= 34;
write('masukkan waktu(menit): ');read(p);
totaldetik:= (J.hh*3600) + (J.mm*60) + J.ss + (p*60);
J.hh:= totaldetik div 3600;
sisa:= totaldetik mod 3600 ;
J.mm:= sisa div 60;
J.ss:= sisa mod 60;
writeln('total the time: ',J.hh,' Hour ',J.mm,' Minute ',J.ss,' second');
readln;
end.
Run Code Online (Sandbox Code Playgroud) 我正在研究我的学校项目,我想使用动态(非静态)数组.我使用ObjectPascal,所以我习惯了一些语法.但现在我在旧的TurboPascal编程(我正在使用Turbo Pascal 7 for Windows).
它似乎不知道ObjectPascal,所以我想,你Turbo Pascal不知道动态数组.
如果我的理论是正确与否,有人能告诉我吗?我试图谷歌,但我没有成功.基本上我问"Turbo Pascal 7中的动态数组怎么样?" 谢谢你的所有反应.
我试图理解fpc -Mtp -vw在 Linux 下以 Turbo 模式(特别是)编译的 Free Pascal 中看到的某种神奇的行为。代码来自 Jack Crenshaw 的“让我们构建编译器”,第四部分,特别是带有Input和Output程序的最后一个版本,可在http://www.pp4s.co.uk/main/tu-trans-comp-jc-04找到html的。我发现“神奇”的是程序中的Read(Table[GetName]);那一行Input。根据 FP 文档,“Read从文件 F 中读取一个或多个值,并将结果存储在 V1、V2 等中;如果未指定文件 F,则读取标准输入。” 在Read是在GetChar过程中,它似乎行为很像C'S getchar(),即检索标准输入缓冲区中的下一个字符。在里面Input调用它似乎表现得像一个复杂的scanf()自动跳过空格并将多位数字转换为整数,并消除对GetNum函数的需要,如果你使用,它不会被调用,例如?i 345,但会被调用如果你尝试i=345,如果你=在解析错误的结果两边留一个空格。是否有其他一些文件证实了 Free、Turbo 甚至通用 Pascal 的明显多功能性Read?
做
CASE <var/expr> OF
1: <do statement>;
2: <do statement>;
3..5: <do statement>;
END;
Run Code Online (Sandbox Code Playgroud)
始终有效意味着:
(in) CASE <var/expr> EQUALS
1: <do statement>;
2: <do statement>;
3..5: <do statement>;
^ value/char in range
END;
Run Code Online (Sandbox Code Playgroud)
翻译成自然语言?我只是想知道为什么会做出这样的措辞选择。否则,Pascal 语法看起来读起来很自然、符合语法。但也许我对“案例陈述”的理解不正确?
编辑:添加范围大小写,并在 (in) 周围添加括号,因为它会让人们感到困惑。
当我写入Pascal中的外部文件时,即使编码完美无缺,外部文件也不会完全写入.
procedure save;
{Menyimpan data penerbangan ke dalam file eksternal}
begin
write('> ');
write('nama file: ');
readln(namafisik);
assign(d,namafisik);
{$I-};
rewrite(d);
{$I+};
if (IOresult=0) then
begin
for i:=1 to Neff do
writejadwal(i);
end;
end;
procedure writejadwal(i:integer);
{Menuliskan jadwal ke file eksternal pada indeks ke-i}
begin
write(d,T.KodePenerbangan[i]);
write(d,' | ');
write(d,T.KotaKeberangkatan[i]);
write(d,' | ');
write(d,T.KotaKedatangan[i]);
write(d,' | ');
if ((T.TKeberangkatan[i].Day) < 10 ) then
begin
x:=T.TKeberangkatan[i].Day;
str(x,y);
s:=y;
write(d,'0'+s);
end
else
begin
write(d,T.TKeberangkatan[i].Day);
end;
write(d,':');
if ((T.TKeberangkatan[i].Month) < 10 ) then
begin …Run Code Online (Sandbox Code Playgroud) pascal procedural-programming freepascal lazarus turbo-pascal
我在 PAscal 中遇到了问题。我想计算素数但没有结果:我的代码是:
Program arrayToFunction;
const
size = 5;
type
a = array [1..size] of integer;
var
aNumbers: a = (1, 7, 3, 4, 5);
iCountNumbers: integer;
function countPrimeNumbers( var arr: a) : integer;
var
i :0..size;
sum,j,count: integer;
begin
sum := 0;count:=0;
for i := 0 to size do
begin
for j := 2 to arr[i] do
begin
if(arr[i] mod j = 0) then sum:=1;
end;
if(sum=0) then count:=count+1;
end;
countPrimeNumbers := count;
end;
begin
iCountNumbers := countPrimeNumbers( aNumbers …Run Code Online (Sandbox Code Playgroud) 所以我正在使用 pascal,并且我想向一种情况添加多个语句。我尝试了这段代码,但收到错误:“错误:常量和 CASE 类型不匹配”
procedure pay;
begin
loop:=loop+1;
CASE loop OF
1:
writeln('E-Mail: ');
readln(mailO[1]);
writeln('amount: ');
readln(amount[1]);
end;
Run Code Online (Sandbox Code Playgroud) 我在turbo pascal中的语法有问题,这在调试中工作没有问题,但我不能使它在Turbo Pascal中工作.
program foo;
begin
asm
mov ah,06h;
mov bh,$21;
mov cx,$0000;
mov bx,$1950;
int 10h;
mov ah,00h;
int 16h;
end;
end.
Run Code Online (Sandbox Code Playgroud)
我不知道出了什么问题.
PD:这个东西中的h,$和b是什么意思?
在C中,您可以在一行中分配两个变量
b = a = sqrt(10);
Run Code Online (Sandbox Code Playgroud)
在德尔福
b := a := Sqrt(10);
Run Code Online (Sandbox Code Playgroud)
不被允许.
有了Delphi中讨论IfThen的三元运算符?:的"替代" - 相当于C#的三元运算符?总之,IfThen似乎并非绝对必要.
所以也许还有这样的东西:
function AssignAndReturn(var LHS: Integer; RHS: Integer): Integer;
begin
LHS := RHS;
Result := RHS;
end;
(...)
var
a, b: Integer;
begin
b := AssignAndReturn(a, Round(Sqrt(10)));
Run Code Online (Sandbox Code Playgroud)
我不是想"让一切看起来像C".我刚才注意到,有时再次在同一行中"重用"赋值的右侧会很好.(参见Lazarus/Free Pascal:如何改进while循环的编码风格(避免使用无限循环),例如,每次传递都会重新分配布尔表达式.)
我希望能够将整数值传递给函数 - e^x 并返回结果。基于 e^x 的递归关系。有人可以帮我弄这个吗?
提前致谢。
我不知道“xa”如何在 pascal 中转换为 10。我只是使用:
Val('xa',value,return);
Run Code Online (Sandbox Code Playgroud)
并且 value = 10,return = 0。我只是一个新手,有人可以解释一下吗?我知道这不会喜欢只是一个字符的 ASCII 原因。
我正在使用 Free Pascal :)
我在 Free Pascal 中进行了测试,当使用xa,0xa和$xa. 所以,我认为它理解像“$”、“0”这样的特殊字符而不调用它。那正确吗?
turbo-pascal ×12
pascal ×11
freepascal ×8
delphi ×4
lazarus ×2
assembly ×1
exponential ×1
pascalscript ×1