นี่คือความต่อเนื่องของบทแนะนำ การเขียนโปรแกรมพื้นฐานด้วยเทียม (ตอนที่ 2)คราวนี้ฉันจะอธิบายสิ่งที่จำเป็นในการเขียนโปรแกรม
มอบหมาย
การกำหนดเป็นกระบวนการที่ตัวแปรถูกสร้างและ / หรือแก้ไขโดยอ้างอิงถึงตัวแปรโดยใช้ตัวระบุที่เราสามารถเข้าถึงพื้นที่หน่วยความจำได้
ไวยากรณ์ของการกำหนดคือ:
[variable]<- [expresion];
[variable]=[expresion];
โดย [ตัวแปร] คือตัวแปรที่รับค่าของการประเมิน [นิพจน์] ทั้งสองอย่างถูกต้องดังนั้นจึงไม่สำคัญว่าจะใช้อันไหน (หากพวกเขากำหนดค่า PSeInt อย่างถูกต้อง) แต่ในความคิดของฉันฉันสร้างอันแรกเป็นอันที่ถูกต้อง
หากไม่มี [ตัวแปร] ก่อนการกำหนดจะมีการสร้าง [ตัวแปร] ขึ้นหากมีอยู่ค่าก่อนหน้านี้จะถูกทำลายและค่าใหม่จะถูกวางไว้ในตำแหน่งนั้น ด้วยเหตุนี้การทำแผนที่จึงถือเป็นการดำเนินการทำลายล้าง
การอ่าน
การอ่านเป็นกระบวนการที่ข้อมูลหรือข้อมูลถูกร้องขอจากผู้ใช้เพื่อจัดเก็บข้อมูลดังกล่าวในตัวแปร
ไวยากรณ์ของมันคือ:
Leer variable_1,variable_2,...,variable_n;
โดยที่ [variable_ {1,2, n}] คือตัวแปรหรือตัวแปรที่รับค่าที่กำหนดโดยผู้ใช้ในกรณีที่มีการร้องขอมากกว่าหนึ่งตัวแปรตัวแปรแรกจะขอตัวแปรแรกจากนั้นสำหรับตัวแปรที่สองและอื่น ๆ จนกว่าจะได้รับค่าทั้งหมด
นอกจากนี้ยังมีหน้าที่ทำลายล้าง
การเขียน
การเขียนเป็นกระบวนการที่มีการเขียนสตริงอักขระและ / หรือตัวแปรหนึ่งตัวขึ้นไปบนหน้าจอ
ไวยากรณ์คือ:
Escribir expresion_1,expresion_2,...,expresion_n;
โดยที่ [expersion_ {1,2, n}] คือสตริงอักขระและ / หรือตัวแปรที่จะแสดง
การเขียนนอกจากจะได้รับข้อมูลที่จะนำไปวางบนหน้าจอแล้วยังได้รับคำสั่ง "Without skipping" หรือ "Without going down" ที่หลีกเลี่ยงการกระโดดข้ามเส้น
การเขียนไม่ได้เพิ่มช่องว่างระหว่างอาร์กิวเมนต์นั่นคือถ้าคุณใส่:
Proceso SinTitulo
a<- "ola";
b<- "mundo";
Escribir a,b;
FinProceso
ในกรณีนี้จะแสดง« olamundo »เนื่องจากระหว่าง« a »และ« b »ไม่มีสตริงของอักขระที่ระบุช่องว่างระหว่าง a และ b เพื่อให้แสดงได้อย่างถูกต้องจึงเขียนดังนี้:
Proceso SinTitulo
a<- "ola";
b<- "mundo";
Escribir a,"",b;
FinProceso
ในกรณีนี้ให้เพิ่ม»»ซึ่งเป็นสตริงอักขระที่มีช่องว่างระหว่าง«คลื่น»และ«โลก»จากนั้นจะแสดง«โลกคลื่น»พร้อมช่องว่าง
ถ้างั้น
นี่คือประโยคที่ประเมินเงื่อนไขที่กำหนดและตรวจสอบความจริงและ / หรือความเท็จของเงื่อนไขดังกล่าวนั่นคือว่าตรงตามเงื่อนไขหรือไม่
ไวยากรณ์ของมันคือ:
Si [condición a evaluar] Entonces
[instrucciones por verdadero]
Sino
[instrucciones por falso]
FinSi
ประโยค "Else" ไม่บังคับในกรณีนี้หากเงื่อนไขเป็นเท็จให้เพิกเฉยต่อคำแนะนำและดำเนินการต่อราวกับว่าไม่มีประโยคในกรณีนี้จะยังคงอยู่:
Si [condición a evaluar] Entonces
[instrucciones por verdadero]
FinSi
ส่วนคำสั่ง "Failure" ถูกวางไว้หรือไม่นั้นขึ้นอยู่กับความต้องการของโปรแกรมนั้น ๆ
ตาม
ประโยคที่ประเมินตัวแปรเชิงตัวเลขอย่างเคร่งครัดที่ให้ตัวเลือกมากกว่า 2 ตัวเลือกนี่คือความแตกต่างจาก "If-Then" เนื่องจากก่อนหน้านี้สามารถให้ได้ 2 ตัวเลือกเท่านั้น
ไวยากรณ์คือ:
Segun [variable numérica] Hacer
[número1]: [instrucciones]
[número2],[número3]: [instrucciones]
[...]
De Otro Modo: [instrucciones]
FinSegun
ดังที่คุณเห็นหลังจาก« number1 »มี«: »และหลังจากนั้นคำแนะนำที่จะดำเนินการจะถูกวางไว้ในกรณีที่«ตัวแปรตัวเลข = number1 »ในตัวอย่างที่สองคือ« number2, number3 »ซึ่งหมายความว่า ถ้า«ตัวแปรตัวเลข = number2 หรือ number3 "จากนั้น" คำสั่ง "จะถูกเรียกใช้สิ่งนี้มีประโยชน์เมื่อความเป็นไปได้ 2 รายการต้องดำเนินการคำสั่งเดียวกัน
นอกจากนี้ยังมีประโยค "ในอีกทางหนึ่ง" ที่ดำเนินการในกรณีที่ไม่มีความเป็นไปได้ใด ๆ
ในขณะที่
เป็นฟังก์ชันซ้ำ ๆ ที่ประเมินเงื่อนไขก่อนจากนั้นหากเป็นจริงจะดำเนินการชุดคำสั่งจากนั้นจะประเมินเงื่อนไขอีกครั้งและหากเป็นจริงจะดำเนินการคำสั่งเดิมอีกครั้งและดำเนินต่อไปเช่นนี้จนกว่าเงื่อนไข เป็นเท็จ
หากเงื่อนไขเป็นเท็จตั้งแต่เริ่มต้นจะไม่ถูกเรียกใช้งานและหากเป็นจริงเสมอไปจะถูกวางไว้ในลูปที่ไม่มีที่สิ้นสุดเพื่อหลีกเลี่ยงข้อสุดท้ายในคำแนะนำจะต้องมีบางอย่างที่ในบางจุดทำให้เงื่อนไขผิดตามลำดับ เพื่อสิ้นสุดการวนซ้ำ
ไวยากรณ์ของมันคือ:
Mientras [condición a evaluar] Hacer
[instrucciones]
FinMientras
ทำซ้ำจนถึงปัจจุบัน
นี่เป็นฟังก์ชั่นที่คล้ายกับฟังก์ชันก่อนหน้านี้มาก แต่ไม่เหมือนกับฟังก์ชันก่อนหน้าอันนี้ตรวจสอบเงื่อนไขในตอนท้ายนั่นคือคำสั่งจะถูกดำเนินการอย่างน้อย 1 ครั้งและแทนที่จะดำเนินการตามคำสั่งเมื่อเป็นจริง มันจะดำเนินการในขณะที่ถ้าไม่ตรงตามเงื่อนไข แต่ถ้าคุณต้องการให้ดำเนินการในขณะที่ตรงตามเงื่อนไขให้ใช้ "while" แทน "until"
ไวยากรณ์ของมันคือ:
Repetir
[Instrucciones]
hasta que [condicion]
สำหรับ
คำสั่งนี้ดำเนินการคำสั่งโดยกำหนดจำนวนครั้งสำหรับตัวแปรซึ่งแตกต่างจากคำสั่งก่อนหน้านี้วงจรนี้จะเปลี่ยนค่าของตัวแปรที่เป็นปัญหาด้วยตัวมันเองรวมทั้งมีไวยากรณ์ที่มีประสิทธิภาพมาก
Para [variable] Desde [valor inicial] Hasta [valor Final] Con [paso] Hacer
[instruciones]
FinPara
"Variable" คือตัวแปรที่รับ "ค่าเริ่มต้น" และดำเนินการตามคำสั่งจากนั้นเพิ่ม "ตัวแปร" บวก "ขั้นตอน" และดำเนินการตามคำสั่งอีกครั้งจนกระทั่ง "ตัวแปร" เท่ากับ "ค่าสุดท้าย"
ถ้า "with [step]" ถูกลบโดยค่าเริ่มต้นจะรู้ว่า "step" เท่ากับ 1 เช่นกันหากไม่ได้ระบุ [step] และ "initial value" มากกว่า "final value" ก็จะผ่านไปใน ลำดับย้อนกลับนั่นคือ "ขั้นตอน" คือ -1
SUBPROCESS / FUNCTION
เธรดหรือฟังก์ชันคือโปรแกรมภายในโปรแกรมอื่นและโปรแกรมย่อยนี้ได้รับค่าตั้งแต่หนึ่งค่าขึ้นไปดำเนินการและส่งคืนค่าอื่น ไวยากรณ์ของมันคือ
SubProceso [variable_de_retorno]<- [nombre de la funcion] ([arg_1],[arg_2],...,[arg_n])
acción 1;
acción 2;
.
.
.
acción n;
FinSubproceso
โดยที่ "return variable" คือตัวแปรที่มีค่าที่ส่งกลับโดยฟังก์ชัน "function name" ที่ได้รับพารามิเตอร์ "arg_1, arg_2, arg_n" เพื่อดำเนินการนี้
อื่น ๆ
ฟังก์ชันเหล่านี้เป็นเพียงฟังก์ชันเสริมของฟังก์ชันอื่น ๆ และไม่มีไวยากรณ์ที่ซับซ้อนเนื่องจากเป็นเพียงฟังก์ชันเสริมเท่านั้น
ล้างหน้าจอ
ฟังก์ชันนี้จะล้างหน้าจอของวัตถุใด ๆ ในล่าม
รอคีย์
ฟังก์ชั่นนี้รอให้ผู้ใช้กดปุ่มเพื่อดำเนินการต่อกับโปรแกรม
คาดหวัง NS {วินาทีมิลลิวินาที}
ฟังก์ชันนี้จะรอเวลาเป็นวินาทีหรือมิลลิวินาทีเพื่อดำเนินการกับโปรแกรมต่อไป
PS: ขออภัยในความล่าช้า แต่ฉันยุ่งกับเรื่องอื่น ๆ จึงไม่สามารถเขียนได้
ไม่มีฟังก์ชันในการจับคีย์โดยไม่หยุดการดำเนินการใช่หรือไม่? สำหรับการทำอะไรบางอย่างที่มีการเคลื่อนไหวซึ่งดึงดูดใจเด็กวัย 9 ขวบมากขึ้นแม้ว่าเกมเพชฌฆาตก็สามารถเขียนโปรแกรมได้อย่างสนุกสนาน
ประมวลผล something_digo
ก <-1;
ด้านข้าง <-30;
ลง <-5;
ในขณะที่ a = 1 Do
ล้างหน้าจอ;
ค <-1;
บรรทัด <- "";
ทำซ้ำ
บรรทัด <-line + "";
ค <-c + 1;
จนถึง c = ด้านข้าง
บรรทัด <-line + "X";
ค <-1;
ทำซ้ำ
เขียน " ";
ค <-c + 1;
จนถึง c = down-1
เขียนบรรทัด;
ทำซ้ำ
เขียน " ";
c 2 จากนั้น
ลง <-down-1;
จบใช่
"s":
ถ้าต่ำกว่า <15 แล้ว
ลง 2 จากนั้น
ด้านข้าง <- ด้านข้าง -1;
จบใช่
"d":
ถ้าด้านข้าง <50 แล้ว
ด้านข้าง <- ด้านข้าง + 1;
จบใช่
"0":
ก <-2;
วินาทีสุดท้าย
สิ้นสุดในขณะที่
EndProcess
ถ้าขึ้นไปไม่ดีควรเปลี่ยนสาย 23 และ 28 ดีกว่า
-23 ถึง c = 15
+23 ถึง c = 18
y
-28 ถ้าลง> 2 แล้ว
+28 ถ้าลง> 3 แล้ว
ขอบคุณสำหรับการมีส่วนร่วม แต่มันมีปัญหาบางอย่างเช่นคุณเปิดหนึ่งประโยคภายในอีกประโยคหนึ่ง แต่มันต้องจบลงในประโยคที่มันเริ่มฉันหมายความว่ามันใส่ไม่ได้
ประมวลผลบางอย่าง
ก <- 0;
อ่านถึง;
ถ้า a ไม่เท่ากับ 25 แล้ว
ในขณะที่ a ไม่เท่ากับ 0 do
อ่านถึง;
จบใช่
สิ้นสุดในขณะที่
ดังที่คุณเห็นการวนซ้ำในขณะที่เริ่มต้นภายในคำสั่ง "if then" แต่สิ้นสุดภายนอกมันจะเป็นไปไม่ได้
ฉันยังคงชื่นชมการมีส่วนร่วม
สิ้นสุดกระบวนการ
ขอบคุณ แต่ฉันคิดว่ามันเป็นปัญหามากกว่าในการใส่รหัสที่นี่ฉันไม่รู้ว่าจะใส่รหัสนี้อย่างไรและมันออกมาโดยไม่มีการเยื้อง
โปรแกรมทำงานได้ดี ตัวแปร "a" ฉันใช้เพื่อออกจากลูปเมื่อผู้ใช้พิมพ์ศูนย์ คุณสามารถวางทางออก () หรือหยุดพัก; ในเงื่อนไขมันดูและฉันบันทึกตัวแปร พวกเขาเป็นตัวเลือก
อาศิรพจน์
ฉันจะลองเปลี่ยนแท็บสำหรับเว้นวรรคและป้ายกำกับ
por si funciona algo:
Proceso algo_digo
a<-1;
lateral<-30;
abajo<-5;
Mientras a=1 Hacer
Borrar Pantalla;
c<-1;
linea<-"";
Repetir
linea<-linea+" ";
c<-c+1;
Hasta Que c=lateral
linea<-linea+"X";
c<-1;
Repetir
Escribir " ";
c<-c+1;
Hasta Que c=abajo-1
Escribir linea;
Repetir
Escribir " ";
c 3 Entonces
abajo<-abajo-1;
Fin Si
"s":
Si abajo < 15 Entonces
abajo 2 Entonces
lateral<-lateral-1;
Fin Si
"d":
Si lateral < 50 Entonces
lateral<-lateral+1;
Fin Si
"0":
a<-2;
Fin Segun
Fin Mientras
FinProceso
นั่นเต็มไปด้วยข้อผิดพลาดในการนำเข้าจากรหัสของฉันฉันจะลองอีกครั้งโดยใช้แท็บ:
นี่จะเป็นไฟล์ algo.psc
Proceso algo_digo
a<-1;
lateral<-30;
abajo<-5;
Mientras a=1 Hacer
Borrar Pantalla;
c<-1;
linea<-"";
Repetir
linea<-linea+" ";
c<-c+1;
Hasta Que c=lateral
linea<-linea+"X";
c<-1;
Repetir
Escribir " ";
c<-c+1;
Hasta Que c=abajo-1
Escribir linea;
Repetir
Escribir " ";
c 3 Entonces
abajo<-abajo-1;
Fin Si
"s":
Si abajo < 15 Entonces
abajo 2 Entonces
lateral<-lateral-1;
Fin Si
"d":
Si lateral < 50 Entonces
lateral<-lateral+1;
Fin Si
"0":
a<-2;
Fin Segun
Fin Mientras
FinProceso
ที่น่าสนใจความคิดเห็นที่มีป้ายรหัสจะถูกกินลบอะไรก็ตามที่อยู่ระหว่างบรรทัดเช่นระหว่างบรรทัด
ทำซ้ำ
เขียน " ";
c
หลังจาก c มี
จากนั้นต่อด้วย 3 จากนั้น
ลง
โดยรวมแล้วไม่น่าเชื่อถือว่าจะใส่ตามรหัสอะไร
ฉันเปลี่ยนสัญลักษณ์จากการกำหนดเป็น = เพื่อดูว่า
Proceso algo_digo
a=1;
lateral=30;
abajo=5;
Mientras a=1 Hacer
Borrar Pantalla;
c=1;
linea="";
Repetir
linea=linea+" ";
c=c+1;
Hasta Que c=lateral
linea=linea+"X";
c=1;
Repetir
Escribir " ";
c=c+1;
Hasta Que c=abajo-1
Escribir linea;
Repetir
Escribir " ";
c=c+1;
Hasta Que c=18
Escribir "Dibujo una X (w,a,s,d y 0 para salir)";
Leer mueve;
Segun mueve Hacer
"w":
Si abajo > 3 Entonces
abajo=abajo-1;
Fin Si
"s":
Si abajo 2 Entonces
lateral=lateral-1;
Fin Si
"d":
Si lateral < 50 Entonces
lateral=lateral+1;
Fin Si
"0":
a=2;
Fin Segun
Fin Mientras
FinProceso
มันกินส่วนหนึ่งของโค้ดไปเรื่อย ๆ แท็กโค้ดล้มเหลวก็ควรปล่อยให้เขียนตามที่เป็นอยู่
สวัสดีขอโทษที่ไม่เห็นคุณตอบก่อน แต่โดยดี
เนื่องจากคุณไม่สามารถเผยแพร่รหัสได้ดีเนื่องจากคุณไม่ได้ส่งให้ฉันทางไปรษณีย์ดังนั้นคุณจึงไม่ได้หันมาสนใจเรื่องนี้มากนัก