بخشی از پاورپوینت

اسلاید 1 :

خطاهای پاسکال

به نام خدا

اسلاید 2 :

معرفی
در هر کدام از صفحات ابتدا یکی از خطاهای پاسکال معرفی شده است.
بعد از ترجمهی خطا، یک مثال از آن خطا آمده است.
قسمت خطادار برنامه با رنگ قرمز مشخص شده است.
قسمت اصلاح شده در برنامهی مثال با رنگ سبز مشخص شده است.
در بعضی صفحات توصیههایی در رابطه با برنامه وجود دارد که با رنگ صورتی مشخص شده است.
برنامهی درست با آبی آورده شده است.
در بعضی موارد برنامه دوباره تایپ نشده و با اصلاح شده است.
قسمتهایی از برنامه که مرتبط با خطا هستند با رنگ بنفش مشخص شدهاند.

اسلاید 3 :

مرجع در مورد سایر خطاها
فهرست تمام خطاها در Free Pascal را میتوانید در فایل راهنمای User’s Manual که به همراه Free Pascal نصب میشود پیدا کنید.

اسلاید 4 :

انواع خطاها
خطاهایی که در این اسلایدها به آن میپردازیم به دو دسته کلی تقسیم میشوند:
خطاهای زمان کامپایل: این خطاها در زمان کامپایل (ترجمه به زبان ماشین) توسط کامپایلر تولید میشوند. برنامه در صورت وجود یکی از این خطاها، نادرست است و فایل اجرایی برای آن تولید نمیشود که بتواند اجرا شود. (صفحه 129 فایل راهنما)
خطاهای زمان اجرا: وجود این خطاها تا زمان اجرا مشخص نمیشود. در این صورت برنامه اجرا میشود و به محض اینکه اجرای برنامه به یکی از این خطاها منجر شود، برنامه متوقف میشود و خطا یا شماره آن نمایش داده میشود و امکان ادامه برنامه وجود ندارد. (صفحه 176 فایل راهنما)

اسلاید 5 :

فهرست خطاهای زمان کامپایل در اسلایدها
Syntax error
‘ ; ’ expected
Illegal expression
Duplicate identifier
Begin expected
Identifier expected
Can’t read or write variables of this type
Identifier not found
String constant exceeds line
Constant strings can't be longer than 255 chars
Line too long
Lower bound greater than upper bound
Incompatible type
Too many variables
Illegal assignment
Ordinal expression expected
Variable dose not seem to be initialized
Can't determine which overloaded function to call
Illegal qualifier
Unexpected end of file
Variable identifier expected
Incompatible types
To or downto expected
Pointer type expected

اسلاید 6 :

فهرست خطاهای زمان اجرا در اسلایدها
2 - File Not Found
102 - File Not Assigned
103 - File Not Open
104 - File Not Open for Input
105 - File Not Open For Output
200 - Division by zero
201 - Range check error

اسلاید 7 :

خطاهای زمان کامپایل
این خطاها در زمان کامپایل (ترجمه به زبان ماشین) توسط کامپایلر تولید میشوند.
برنامه در صورت وجود یکی از این خطاها، نادرست است و فایل اجرایی برای آن تولید نمیشود که بتواند اجرا شود.

اسلاید 8 :

Syntax error
مثال1: تایپ نشدن یک حرف یا علامت.

باید دقت کنیم که برای انتساب از =: استفاده میکنیم و برای مقایسه از =
هنگامی که دو متغیر را باهم مقایسه میکنیم باید هر دو از یک نوع باشند.
var
a,i:integer;
begin
for i=1 to 10 begin readln(a); a:=a+i; writeln(a);end;
end.
پیغام خطا Syntax error : ‘ := ‘ expected but found ‘ = ‘ :

اسلاید 9 :

Syntax error
مثال2: تایپ نشدن یک کلمه
var
a,i:integer;
begin
for i:=1 to 10 begin readln(a); a:=a+i; writeln(a);end;
end.
Syntax error : ’do’ expected but ‘begin’ found
var
a,i:integer;
begin
for i:=1 to 10 begin do readln(a);
a:=a+i; writeln(a);
end;
end.

اسلاید 10 :

Syntax error
بعضی از شناسه ها در پاسکال توسط برنامه نویس تعریف میشوند.
نامگذاری شناسه ها:
شناسه ها در پاسکال با یک حرف یا با یک خط زیر( _ ) شروع میشوند.
در نامگذاری شناسه ها نباید از کاراکتر فاصله استفاده کرد.
شناسه ها نباید با عدد شروع شوند.
در نامگذاری شناسه ها نباید از کلمات تعریف شده در پاسکال مثل read,write,for,. استفاده کرد.
var
a,8b:integer;
begin
readln(a);end.
درطول این برنامه از 8bاستفاده نشده ولی باز هم برنامه اجرا نمیشود
Syntax error, "identifier" expected but "ordinal const" found
پیغام خطا

اسلاید 11 :

‘ ; ’ expected
نیاز به ; است.
دستورات پاسکال به ; ختم میشوند.
اگر در انتهای دستور یکی مانده به اخر علامت سمی کالن قرار نگیرد پاسکال خطایی نخواهد گرفت.
در غیر این صورت با پیغام خطای ERROR ';' EXPECTED مواجه میشویم.
قبل وبعد ELSE نباید ; قرار داد.
var
a:array[1..10,1..10]of char;
i,j,n:integer;
begin
readln(n);
for j:=1 to n do begin
for i:=1 to n do begin
if j>=i then a[i,j]:='*' else a[i,j]:=' ‘;end; end
for i:=1 to n do begin
for j:=1 to n do begin
write(a[i,j]);end; writeln; end;Readln end.

اسلاید 12 :

Illegal expression
عبارت نامعتبر
P:true یک عبارت نامعتبر است زیرا برای انتساب از =: استفاده میشود.
program test;
var
n,i,s,j:integer;
p:boolean;
begin
readln(n);
s:=1;
for i:=1 to n do begin
for j:=1 to i do begin
s:=j*s;
end;
if s<=n then p:true;
end;
if p=true then writeln(s);
readln;
end.
program test;
var
n,i,s,j:integer;
p:boolean;
begin
readln(n);
s:=1;
for i:=1 to n do begin
for j:=1 to i do begin
s:=j*s;
end;
if s<=n then p:=true;
end;
if p=true then writeln(s);
readln;
end.

اسلاید 13 :

Duplicate identifier
تکرار در تعریف شناسه
مثال: دراین برنامه یک شناسه دوبار تعریف شده
Program Test;
Type
M = Array[1..3, 1..3] of Real;
m =array[1..3,1..3]of real;
Procedure readmatrix(var A: M);
Var i,j: Integer;
Begin
For i:=1 To 3 Do Begin For j:=1 To 3 Do Begin
Write('A[',i,',',j,']?');
ReadLn(A[i,j]);
End; WriteLn; End;End;
Var Mat : M;
Begin
readMatrix(Mat);
Readln;
End.
برای اصلاح برنامه باید این خط را از برنامه حذف کرد

اسلاید 14 :

Begin expected
نیاز به begin است.
progam fibonachi;
procedure fibo;
var
i,n:integer;
a:array[1..100]of integer;
begin
readln(n);
a[1]:=1;
a[2]:=1;
i:=3;
repeat
a[i]:=a[i-1]+a[i-2];
writeln(a[i]);
i:=i+1;
until i=n+1;
readln;
End;

fibo;
end.
Begin

اسلاید 15 :

Identifier expected
program fibonachi;
procedure ;
var
i,n:integer;
a:array[1..100]of integer;
begin
readln(n);
a[1]:=1;
a[2]:=1;
i:=3;
repeat
a[i]:=a[i-1]+a[i-2];
writeln(a[i]);
i:=i+1;
until i=n+1;
readln; end;
begin
fibo;
end.
program fibonachi;
procedure fibo;
var
i,n:integer;
a:array[1..100]of integer;
begin
readln(n);
a[1]:=1;
a[2]:=1;
i:=3;
repeat
a[i]:=a[i-1]+a[i-2];
writeln(a[i]);
i:=i+1;
until i=n+1;
readln; end;
begin
fibo;
end.
نیاز به شناسه است.

اسلاید 16 :

Can’t read or write variables of this type
فقط متغیرها از نوعهای صحیح، حقیقی، و رشتهها قابل خواندن از کاربر و نوشتن روی صفحه هستند. متغیرهای boolean را فقط میتوان نوشت و نمیتوان خواند (یعنی کاربر نمیتواند آن را وارد کند).
var
A,b,max:integer;
c:boolean;
begin
readln(a);
readln(b);
Readln(c);
if c= true then max:=a else max:=b;
writeln(max);
end.
var
A,b,max:integer;
c:boolean;
begin
readln(a);
readln(b);
if a>b then c:=true;
if c= true then max:=a else max:=b;
writeln(max);
readln
end.

اسلاید 17 :

Can’t read variables of this type
Or write
مثال 2- نمی تواند این متغیر را بخواند یا بنویسد
Var
a:array[1..10]of integr;
i:integer;
begin
for i:= 1 to 8 do
readln(a[i]);
readln; end.
type
sublnt=1;
var
a:array[1..10]of sublnt;
i:integer;
begin
for i:=1 to 5 do begin
a[i]:=i*i;
writeln(a[i]);end;
readln;
end.
مثال 2
مثال 1
Var
a:array[1..10]of integer;
i:integer;
begin
for i:= 1 to 8 do
readln(a[i]);
readln; end.
Sublnt= 1..1o

اسلاید 18 :

Identifier not found
شناسه شناخته شده نیست. زمانی که یک متغیر را تعریف نکرده ایم ولی از ان در طول برنامه استفاده میکنیم این خطا نمایش داده میشود.
var
a:array[1..10]of string;
s:string;
begin
s:='sajjad';
for i:=1 to length(s) do
a[i]:= copy(s,i,1);
for i:=1 to length(s)do
writeln(a[i]);
readln;
end.
پیغام خطا Error : Identifier not found : ‘ i ’ ;
i:integer

اسلاید 19 :

Identifier not found
مثال2: Fibooo صدا زده شده ولی شناخته شده نیست.
سجاد اعیانی ثانی - خطاهای پاسکال - پروژه درس برنامه نویسی پاسکال دانشگاه شریف
program fibonachi;
procedure fibo;
var
i,n:integer;
a:array[1..100]of integer;
begin
readln(n);
a[1]:=1;
a[2]:=1;
i:=3;
repeat
a[i]:=a[i-1]+a[i-2];
writeln(a[i]);
i:=i+1;
until i=n+1;
readln;
end;
begin
fibooo;
end.
FIBO

اسلاید 20 :

String constant exceeds line
طول ثابت رشته ای زیاد است.
اصلاح: باید طول ثابت رشته ای را کوتاه کرد
program test;
const
n=100;
e='a';
t=' sajjad aayni sani iranian student
good strong brave

best'
b=true;
x:integer=100;
y:single=15.5;
type
sublnt=1..10;
var
s:string;
begin
readln(s);
if s=t then
writeln(s);
end.
t=' sajjad aayni sani iranian studentgood strong bravebest'

در متن اصلی پاورپوینت به هم ریختگی وجود ندارد. برای مطالعه بیشتر پاورپوینت آن را خریداری کنید