ฟอนต์ฟอรั่ม

F0NT Community (เก่า) => ห้องคอม => โพสต์ถูกเริ่มโดย: เต่ามาก เมื่อ 12 ธ.ค. 2007, 23:10 น.

ชื่อเรื่อง: เขียน Pascal ครับ
โพสต์โดย: เต่ามาก เมื่อ 12 ธ.ค. 2007, 23:10 น.
ครับ
อยู่ดีๆ ผมก็ต้องมานั่งเขียน Pascal ด้วยเหตุจำเป็น
ผมก็โหลด Turbo pascal มาตามความรู้อันน้อยนิด
หลังจากเขียนคำสั่งง่ายๆ พวก write read ประกาศตัวแปร เอามาบวกลบกัน
ผมก็มีความพยายามที่จะลองเขียน IF ดู

อ่านจากคู่มือ ฟอร์มของ IF เป็นดังนี้

IF condition THEN
   statement;


ถ้าเป็น nested if ก็จะเป็น
อ้างอิงIF condition1 THEN
   statement1;
ELSE IF condition2 THEN
   statement2;
ELSE
   statement3;

ทีนี้ผมก็พบว่า เมื่อเขียน Nested IF ขึ้นมาชุดนึง
แบบว่า ถ้า พิมพ์ ,+, ก็ให้เอามาบวกกัน ถ้าพิมพ์ ,-, ก็เอามาลบกัน
มันจะข้าม condition ทั้งหมด ไปทำ ELSE IF ตัวสุดท้ายเลยครับ

ซึ่งอีแบบนี้ผมก็เจอบ่อยมากใน action script

อยากทราบว่ามันเกิดปัญหามาจากอะไรครับ



อันนี้ที่ผมเขียนนะ
อ้างอิงbegin
readln(A);
readln(B);
readln(C);
IF B := '+' THEN
   result := A+C
ELSE IF B := '-' THEN
   result := A-C
writeln(result);
end.

ที่จริงมี คูณ หารด้วย
ปัญหาอย่างที่บอกก็คือ ไม่ว่าจะพิมพ์เครื่องหมายอะไรใส่ B
มันก็จะมองว่าเงื่อนไขเราผิดหมด มีอันสุดท้ายถูก แล้วก็จะเอา A-C เสมอ แม้จะใส่ + ก็ตาม

ผมพลาดตรงไหนไปอ่ะครับ  :08:

ปล.ผมประกาศตัวแปรเรียบร้อยแล้วนะ quote มาเฉพาะช่วงคำัสั่งครับ
ชื่อเรื่อง: Re: เขียน Pascal ครับ
โพสต์โดย: ยุนเอ เมื่อ 12 ธ.ค. 2007, 23:15 น.

// เต่าลืมปิด statement ";"

ลองเช็คค่าตัวแปร B ดูนะเต่า อาจจะติด white space มา คือการ enter เพื่อส่งค่า

รึเปล่า

ลอง print ออกมาเช็คก่อน

หรือ ไม่ก็ลองทดสอบดูโดยเซทเงื่อนไขให้เป็น ตัวเลข ถ้าเป็นเลขนี้ให้บวก เลขนี้ให้ลบ


หรือ อาจจะเป็น ascii ที่ไม่ตรงกันกับของ pascal รึเปล่า เหมือน html ที่เวลาจะแสดง space ต้องพิมพ์ &bsfd อะไรประมาณนี้
ชื่อเรื่อง: Re: เขียน Pascal ครับ
โพสต์โดย: เต่ามาก เมื่อ 12 ธ.ค. 2007, 23:23 น.
ฟ้อง Type mismatch แล้ว cursor กระพริบที่ THEN นี่มันจะให้เราแก้อะไรอ่ะครับ  :08:
ชื่อเรื่อง: Re: เขียน Pascal ครับ
โพสต์โดย: ยุนเอ เมื่อ 12 ธ.ค. 2007, 23:27 น.
begin
readln(A);
readln(B);   // ไม่ชัวร์ว่า readln จะเป็น char หรือ String นะ
readln(C);


IF B := '+' THEN    //  ' ' <-- เป็น char ถ้าเป็น String จะเป็น " " (อันนี้คุ้นๆ ว่าเป็นยังงี้ แต่พอเอาไปใช้กับ sqlserver ก็ใช้อะไรก็ได้ - -")
   result := A+C    //  ไม่ชัวร์ว่า pascal + String ได้เลยรึเปล่า รึยังไง
ELSE IF B := '-' THEN
   result := A-C
writeln(result);
end.

ลอง

begin
readln(A);
readln(B);
readln(C);

writeln(A);
writeln(B);
writeln(C);

IF B := "+" THEN
   result := A+C;
ELSE IF B := "-" THEN
   result := A-C;


writeln(result);
end.

อ้างอิง
var A: string;
var B: string;
var C: string;
var result: string;

begin
  readln(A, B, C);
  writeln('A = ', A ,'B = ', B , 'C = ',C);

IF B := "+" THEN
   result := A+C;
ELSE IF B := "-" THEN
   result := A-C;

writeln(result);
end.
ชื่อเรื่อง: Re: เขียน Pascal ครับ
โพสต์โดย: เต่ามาก เมื่อ 12 ธ.ค. 2007, 23:39 น.
begin
readln(A);
readln(B);
readln(C);

IF B = "+" THEN
   result := A+C;

IF B = "-" THEN
   result := A-C;

IF B = "*" THEN
   result := A*C;

IF B = "/" THEN
   result := A div C; {อันนี้อยากให้หารออกมาเป็น Integer}

writeln(result);
end.


แบบนี้ได้ว่ะครับ
แต่พอใช้ Else if มันฟ้อง statement error  :08:
พอ IF หมดผ่านฉลุยเลย น่าเกลียดมาก


ผมใช้ A,C,result เป็น Integer อ่ะ
แล้ว B เป็น string



ชื่อเรื่อง: Re: เขียน Pascal ครับ
โพสต์โดย: ต้น เมื่อ 12 ธ.ค. 2007, 23:39 น.
ถ้าจำไม่ผิด ใน pascal น่าจะใช้เครื่องหมาย = เป็นการตรวจสอบเงื่อนไขการเท่ากันครับ

ส่วน := น่าจะเป็นการกำหนดค่า

ชื่อเรื่อง: Re: เขียน Pascal ครับ
โพสต์โดย: ยุนเอ เมื่อ 12 ธ.ค. 2007, 23:41 น.


ผ่านแล้ว เย่  \:37:/
ชื่อเรื่อง: Re: เขียน Pascal ครับ
โพสต์โดย: เต่ามาก เมื่อ 12 ธ.ค. 2007, 23:41 น.
แต่อยากเขียน ELSE IF อ่ะ  :05:
ชื่อเรื่อง: Re: เขียน Pascal ครับ
โพสต์โดย: ยุนเอ เมื่อ 12 ธ.ค. 2007, 23:43 น.

เอามาจากอันนี้
http://pascal.comsci.us/syntax/ifelse.html

อ้างอิงIF Total < 0 THEN BEGIN
  Tag := ' Cr';
  Total := - Total;
END ELSE BEGIN
  Tag := ' Dr';
END


ชื่อเรื่อง: Re: เขียน Pascal ครับ
โพสต์โดย: เต่ามาก เมื่อ 12 ธ.ค. 2007, 23:45 น.
ไว้พรุ่งนี้ลองแบนี้ละกัลล์

อ่านมามันบอกว่า nested if เขียนได้สองแบบ
แต่ยังไม่ได้ลองแบบที่พี่เอโคดมาให้ดู
ชื่อเรื่อง: Re: เขียน Pascal ครับ
โพสต์โดย: ☼ แอนมินิ ☼ เมื่อ 12 ธ.ค. 2007, 23:47 น.
http://taoyue.com/tutorials/pascal/pas3ca.html link นี้ช่วยได้มั้ยคะ 
อยากช่วยแต่ลืม pascal หมดแล้ว  :42:



จำได้รางๆว่าเรื่อง = กับ := มันใช้คนละสถานการณ์กันนะคะ อันนึงใช้กำหนดค่า อีกอันใช้เพื่อการเปรียบเทียบ
ชื่อเรื่อง: Re: เขียน Pascal ครับ
โพสต์โดย: เต่ามาก เมื่อ 12 ธ.ค. 2007, 23:52 น.
โอ้ว อันนี้แจ่มดีครับ  :25:
ชื่อเรื่อง: Re: เขียน Pascal ครับ
โพสต์โดย: ลุงซัน เมื่อ 13 ธ.ค. 2007, 02:07 น.
อ้างคำพูดจาก: เ_่า เมื่อ 12 ธ.ค. 2007, 23:10 น.
IF B := '+' THEN
   result := A+C
ELSE IF B := '-' THEN
   result := A-C
writeln(result);

pascal := ใช้กำหนดค่า  / C หรือ AS คือ =
pascal = ใช้เปรียบเทียบ / C  หรือ AS คือ ==

สรุปใช้ := ใช้กับ if ไม่ได้

ืnote:
1.สังเกตุว่าตอนเขียน if -else ใช้ := แต่ พอเขียน if อย่างเดียวใช้ =
2. ผมเขียน pascal มาตลอดชีวิต ตั้งแต่ยังไม่เครื่อง IBM PC (มี turbo pascal บนเครื่อง apple II) ปัจจุบัน MyBuddy ก็ยังเขียนด้วย pascal  :35:
อยากไปภาษาอื่นเหมือนกัน แต่ขี้เกียจอย่างไงไม่รู้(ถ้าของเก่าทำได้ดีอยู่แล้ว)
ชื่อเรื่อง: Re: เขียน Pascal ครับ
โพสต์โดย: ☼ แอนมินิ ☼ เมื่อ 13 ธ.ค. 2007, 11:40 น.
 :25: MyBuddy ใช้ pascal เหรอคะ สุดยอดเลยค่ะลุงซัน+  :12: :12: :12: :12: :12:
ชื่อเรื่อง: Re: เขียน Pascal ครับ
โพสต์โดย: นายโอ้เอ้ เมื่อ 13 ธ.ค. 2007, 11:42 น.
object pascal แต่ delphi ide  :43:
ชื่อเรื่อง: Re: เขียน Pascal ครับ
โพสต์โดย: เต่ามาก เมื่อ 13 ธ.ค. 2007, 20:17 น.
อู้ว

ตอนนี้พยายามจะใช้ for ให้เกิดประโยชน์ครับ
แต่ยังทำไม่ได้  :42:
ชื่อเรื่อง: Re: เขียน Pascal ครับ
โพสต์โดย: ☼ แอนมินิ ☼ เมื่อ 13 ธ.ค. 2007, 20:24 น.
อันนี้หัดเองหรือเรียนคะเนี่ย
มีแบบฝึกหัดสำหรับ for มาแนะนำค่ะ (เผื่อสนใจ)

ให้เขียนโปรแกรมวาดรูปสามเหลี่ยมแบบด้านล่าง ถ้าใส่ input เป็น 5 ก็จะได้ดังรูป
*
**
***
****
*****

ถ้าใส่ input เป็น 3 จะได้
*
**
***
โดย input ให้รับจากทางหน้าจอ


ไม่มีเฉลยนะคะ  :42:

ชื่อเรื่อง: Re: เขียน Pascal ครับ
โพสต์โดย: เต่ามาก เมื่อ 13 ธ.ค. 2007, 20:29 น.
มีแข่งเขียน pascal ครับ
เพื่อนจะไปแข่ง มันก็ไม่เป็นเลย ผมก็ไม่รู้เรื่อง
เลยช่วยแนะนำเพื่อนเท่าที่ทำได้ ในฐานะที่คุ้นเคยกับ programming เว็บบึ้ม กว่ามันนิดนึง

เดี๋ยวดึกๆ มาทำการบ้านครับ
ชื่อเรื่อง: Re: เขียน Pascal ครับ
โพสต์โดย: ต้น เมื่อ 13 ธ.ค. 2007, 20:54 น.
การบ้านวาดรูปสามเหลี่ยม ตอนผมเรียนอาจารย์เรียกว่า ดาวกระชากใจ
ชื่อเรื่อง: Re: เขียน Pascal ครับ
โพสต์โดย: REROYD เมื่อ 13 ธ.ค. 2007, 21:41 น.
ดาวสามเหลี่ยมนั่นผมก็เขียน แต่เป็นภาษาซี และผมต้องเขียนเป็นปิรามิดเลย ตอนนั้นบอกได้แค่ยากมั่ก ๆ มีอินพุทแค่ค่าึความสูงของปิรามิด
อย่างในตัวอย่างจะใส่ค่าเป็น 4

          1
        232
      34543
    4567654


เขียนอยู่สองวันได้มา 5 คะแนน  :05:
ชื่อเรื่อง: Re: เขียน Pascal ครับ
โพสต์โดย: ☼ แอนมินิ ☼ เมื่อ 13 ธ.ค. 2007, 22:15 น.
มันมีหลายแบบเลยแหละ เป็นแบบฝึกพื้นฐานมั้งคะ
มีแบบข้าวหลามตัด (size = 5)
       *
     ***
    *****
  *******
*********
  *******
    *****
     ***
       *
รูปโบว์ (size=4)

*           *
**        **
***    ***
********
***    ***
**       **
*          *

ฯลฯ
(ถ้าสนใจก็เอาไว้ฝึกได้นะคะ)
ชื่อเรื่อง: Re: เขียน Pascal ครับ
โพสต์โดย: ยุนเอ เมื่อ 13 ธ.ค. 2007, 22:24 น.
อ้างคำพูดจาก: นาวิน อินเทรนด์ เมื่อ 13 ธ.ค. 2007, 20:54 น.
การบ้านวาดรูปสามเหลี่ยม ตอนผมเรียนอาจารย์เรียกว่า ดาวกระชากใจ

สำนักเดียวกัน  :25: :25: :25:
ชื่อเรื่อง: Re: เขียน Pascal ครับ
โพสต์โดย: ต้น เมื่อ 13 ธ.ค. 2007, 22:45 น.
ศิษย์น้อง  :25:
ชื่อเรื่อง: Re: เขียน Pascal ครับ
โพสต์โดย: ยุนเอ เมื่อ 13 ธ.ค. 2007, 22:47 น.

ศิษย์พี่    :25: :25:

พึ่งสังเกต

อ้างคำพูดจาก: น้องแอนค่ะ เมื่อ 13 ธ.ค. 2007, 22:15 น.
มันมีหลายแบบเลยแหละ เป็นแบบฝึกพื้นฐานมั้งคะ
มีแบบข้าวหลามตัด (size = 5)
       *
     ***
    *****
  *******
*********
  *******
    *****
     ***
       *
รูปโบว์ (size=4)

*           *
**        **
***    ***
********
***    ***
**       **
*          *

ฯลฯ
(ถ้าสนใจก็เอาไว้ฝึกได้นะคะ)

ตรง size เนี้ย ดูจากไหนครับ  :08:
ชื่อเรื่อง: Re: เขียน Pascal ครับ
โพสต์โดย: ☼ แอนมินิ ☼ เมื่อ 13 ธ.ค. 2007, 22:53 น.
ความสูงอะค่ะ นับครึ่งนึง รูปข้าวหลามจะเห็นว่าบรรทัดที่ 5 เป็นกลางรูปพอดี รูปโบว์ก็กลางที่บรรทัดที่ 4