แบบฝึกหัด - ทํากิจกรรมการทดสอบให้เสร็จสมบูรณ์เพื่อแยกความแตกต่างระหว่างทําและในขณะที่คําสั่งการทําซ้ํา
ความท้าทายของโค้ดจะส่งเสริมสิ่งที่คุณได้เรียนรู้และช่วยให้คุณได้รับความเชื่อมั่นก่อนที่จะดําเนินการต่อ
ตรวจสอบความแตกต่างระหว่างทําและในขณะที่ทําซ้ําคําสั่ง
ตามที่คุณเห็น C# สนับสนุนคําสั่งการทําซ้ําสี่ชนิด: for, foreach, do-whileและwhile เอกสารอ้างอิงภาษาของ Microsoft อธิบายถึงคําสั่งเหล่านี้ดังต่อไปนี้:
- คําสั่ง
for: รันเนื้อความในขณะที่นิพจน์บูลีนที่ระบุ ('สภาพ') ประเมินเป็น true - คําสั่ง
foreach: แจกแจงองค์ประกอบของคอลเลกชันและดําเนินการเนื้อความสําหรับแต่ละองค์ประกอบของคอลเลกชัน - คําสั่ง
do-while: ดําเนินการตามสภาพร่างกายอย่างน้อยหนึ่งครั้ง - คําสั่ง
while: ดําเนินการตามเงื่อนไขร่างกายศูนย์หรือมากกว่า
ดูเหมือนว่า for การทําซ้ํา และ foreach จะแยกความแตกต่างออกจากกันและจาก do-while และการ while ทําซ้ําอย่างชัดเจน อย่างไรก็ตามข้อกําหนดสําหรับ do-while คําสั่ง และ while ดูเหมือนจะคล้ายกัน การทราบว่าเมื่อใดที่ต้องเลือกระหว่าง do-while และ while ดูเหมือนเกิดขึ้นตามอําเภอใจมากขึ้นและอาจทําให้สับสนเล็กน้อย โครงการที่ท้าทายบางอย่างอาจช่วยทําให้ความแตกต่างชัดเจน
ในการทดสอบนี้ คุณจะเห็นเงื่อนไขสําหรับโครงการการเข้ารหัสที่แยกต่างหากสามโครงการ แต่ละโครงการจะต้องให้คุณใช้บล็อกรหัสการทําซ้ําโดยใช้คําสั่ง do-while หรือwhile คุณจะต้องประเมินเงื่อนไขที่ระบุเพื่อเลือกระหว่างdo-whileคําสั่ง และwhile คุณสามารถสลับหลังจากที่คุณเริ่มต้นถ้าตัวเลือกแรกของคุณไม่ทํางานเช่นเดียวกับที่คุณหวังว่า
หมายเหตุ
คุณสามารถใช้เงื่อนไขสําหรับโครงการการเข้ารหัสของคุณเพื่อช่วยให้คุณเลือกระหว่าง do-while คําสั่ง และ while ได้ สิ่งที่คุณทราบหรือไม่รู้เกี่ยวกับนิพจน์บูลีนที่จะได้รับการประเมินในบางครั้งช่วยให้คุณสามารถเลือกระหว่าง do-while คําสั่ง และ while ได้ ในแบบฝึกหัดการทดสอบนี้ เงื่อนไขของโครงการจะรวมข้อมูลที่จะใช้ในการสร้างนิพจน์บูลีน
จัดการการป้อนข้อมูลของผู้ใช้ในระหว่างการทดสอบนี้
เมื่อใช้ Console.ReadLine() คําสั่งเพื่อรับข้อมูลป้อนเข้าของผู้ใช้ เป็นแนวทางปฏิบัติทั่วไปในการใช้สตริงชนิด nullable (ที่กําหนด string?) สําหรับตัวแปรอินพุต จากนั้นประเมินค่าที่ป้อนโดยผู้ใช้ ตัวอย่างรหัสต่อไปนี้ใช้สตริงชนิด nullable เพื่อจับภาพข้อมูลป้อนเข้าของผู้ใช้ การทําซ้ํายังคงดําเนินต่อในขณะที่ค่าที่ผู้ใช้ให้มาเป็น null:
string? readResult;
Console.WriteLine("Enter a string:");
do
{
readResult = Console.ReadLine();
} while (readResult == null);
สามารถใช้นิพจน์บูลีนที่ประเมินโดย while คําสั่ง เพื่อให้แน่ใจว่าการป้อนข้อมูลของผู้ใช้ตรงตามข้อกําหนดที่ระบุได้ ตัวอย่างเช่น ถ้าพร้อมท์ขอให้ผู้ใช้ใส่สตริงที่มีอย่างน้อยสามอักขระ สามารถใช้รหัสต่อไปนี้:
string? readResult;
bool validEntry = false;
Console.WriteLine("Enter a string containing at least three characters:");
do
{
readResult = Console.ReadLine();
if (readResult != null)
{
if (readResult.Length >= 3)
{
validEntry = true;
}
else
{
Console.WriteLine("Your input is invalid, please try again.");
}
}
} while (validEntry == false);
ถ้าคุณต้องการใช้ Console.ReadLine() ข้อมูลป้อนเข้าสําหรับค่าตัวเลข คุณจําเป็นต้องแปลงค่าสตริงเป็นชนิดตัวเลข
เม int.TryParse() ธอด สามารถใช้เพื่อแปลงค่าสตริงเป็นจํานวนเต็ม เมธอด ใช้สองพารามิเตอร์ สตริงที่จะประเมินและชื่อของตัวแปรจํานวนเต็มที่จะกําหนดค่า วิธีการ ส่งกลับค่าบูลีน ตัวอย่างโค้ดต่อไปนี้สาธิตโดยใช้ int.TryParse() วิธีการ:
// capture user input in a string variable named readResult
int numericValue = 0;
bool validNumber = false;
validNumber = int.TryParse(readResult, out numericValue);
หากค่าสตริงที่readResultกําหนดให้กับ แสดงจํานวนเต็มที่ถูกต้อง ค่าจะถูกกําหนดให้กับตัวแปรจํานวนเต็มที่มีชื่อว่า numericValueและ true จะถูกกําหนดให้กับตัวแปรบูลีนที่ชื่อว่าvalidNumber ถ้าค่าที่readResultกําหนดให้กับ ไม่แสดงจํานวนเต็มvalidNumberที่ถูกต้อง จะมีการกําหนดค่าของfalse ตัวอย่างเช่น หากreadResultเท่ากับ "7" ค่า7จะถูกกําหนดเป็นnumericValue
โครงการรหัส 1 - เขียนรหัสที่ตรวจสอบความถูกต้องของการป้อนข้อมูลจํานวนเต็ม
นี่คือเงื่อนไขที่โครงการการเขียนโค้ดแรกของคุณต้องดําเนินการ:
โซลูชันของคุณต้องมี
do-whileหรือwhileการทําซ้ําก่อนบล็อกการเกิดซ้ํา: โซลูชันของคุณต้องใช้
Console.WriteLine()คําสั่งเพื่อพร้อมท์ผู้ใช้สําหรับค่าจํานวนเต็มระหว่าง 5 และ 10ภายในบล็อกการเกิดซ้ํา:
- โซลูชันของคุณต้องใช้คําสั่ง
Console.ReadLine()เพื่อรับข้อมูลป้อนเข้าจากผู้ใช้ - โซลูชันของคุณต้องแน่ใจว่าการป้อนข้อมูลเป็นการแสดงจํานวนเต็มที่ถูกต้อง
- ถ้าค่าจํานวนเต็มไม่ได้อยู่ระหว่าง 5 และ 10 โค้ดของคุณต้องใช้
Console.WriteLine()คําสั่งเพื่อพร้อมท์ผู้ใช้สําหรับค่าจํานวนเต็มระหว่าง 5 และ 10 - โซลูชันของคุณต้องแน่ใจว่าค่าจํานวนเต็มอยู่ระหว่าง 5 และ 10 ก่อนที่จะออกจากการทําซ้ํา
- โซลูชันของคุณต้องใช้คําสั่ง
ด้านล่าง (หลังจาก) บล็อกรหัสการทําซ้ํา: โซลูชันของคุณต้องใช้
Console.WriteLine()คําสั่งเพื่อแจ้งให้ผู้ใช้ทราบว่ามีการยอมรับค่าที่ป้อนเข้าแล้ว
ตรวจสอบให้แน่ใจว่า คุณมีไฟล์ Program.cs ที่ว่างเปล่าเปิดอยู่ในรหัส Visual Studio
หากจําเป็น ให้เปิด Visual Studio Code แล้วทําตามขั้นตอนต่อไปนี้เพื่อเตรียมไฟล์ Program.cs ในตัวแก้ไข:
บนเมนู ไฟล์ เลือก เปิดโฟลเดอร์
ใช้กล่องโต้ตอบ เปิดโฟลเดอร์ เพื่อนําทางไปยัง และจากนั้นเปิดโฟลเดอร์ CsharpProjects
ในแผง Visual Studio Code EXPLORER ให้เลือก Program.cs
บนเมนู การเลือก รหัส Visual Studio เลือก เลือกทั้งหมด แล้วกดปุ่มลบ
เขียนโค้ดที่ใช้เงื่อนไขแต่ละข้อสําหรับโครงการโค้ด 1
เรียกใช้แอปพลิเคชันของคุณและตรวจสอบว่ารหัสของคุณตรวจสอบการป้อนข้อมูลของผู้ใช้ตามข้อกําหนดที่ระบุหรือไม่
ตัวอย่างเช่น เมื่อคุณเรียกใช้แอปพลิเคชัน แอปควรปฏิเสธค่าการป้อนข้อมูล เช่น "สอง" และ "2" แต่ควรยอมรับค่าป้อนเข้าเป็น "7"
ตัวอย่างที่อธิบายไว้ข้างต้น ผลลัพธ์ของคอนโซลควรมีลักษณะดังต่อไปนี้:
Enter an integer value between 5 and 10 two Sorry, you entered an invalid number, please try again 2 You entered 2. Please enter a number between 5 and 10. 7 Your input value (7) has been accepted.
โครงการรหัส 2 - เขียนโค้ดที่ตรวจสอบความถูกต้องของการป้อนข้อมูลสตริง
นี่คือเงื่อนไขที่โครงการการเขียนโค้ดที่สองของคุณต้องใช้:
โซลูชันของคุณต้องมี
do-whileหรือwhileการทําซ้ําก่อนบล็อกการเกิดซ้ํา: โซลูชันของคุณต้องใช้
Console.WriteLine()คําสั่งเพื่อพร้อมท์ผู้ใช้ให้เป็นหนึ่งในสามชื่อบทบาท: ผู้ดูแลระบบ, ผู้จัดการ หรือผู้ใช้ภายในบล็อกการเกิดซ้ํา:
- โซลูชันของคุณต้องใช้คําสั่ง
Console.ReadLine()เพื่อรับข้อมูลป้อนเข้าจากผู้ใช้ - โซลูชันของคุณต้องแน่ใจว่าค่าที่ป้อนตรงกับหนึ่งในสามตัวเลือกบทบาท
- โซลูชันของ
Trim()คุณควรใช้วิธีการ ในค่าอินพุตเพื่อละเว้นอักขระช่องว่างนําหน้าและต่อท้าย - โซลูชันของ
ToLower()คุณควรใช้วิธีการ บนค่าอินพุตเพื่อเพิกเฉยตัวพิมพ์เล็ก - ถ้าค่าที่ป้อนไม่ตรงกับหนึ่งในตัวเลือกบทบาท รหัสของคุณต้องใช้
Console.WriteLine()คําสั่งเพื่อพร้อมท์ผู้ใช้สําหรับรายการที่ถูกต้อง
- โซลูชันของคุณต้องใช้คําสั่ง
ด้านล่าง (หลังจาก) บล็อกรหัสการทําซ้ํา: โซลูชันของคุณต้องใช้
Console.WriteLine()คําสั่งเพื่อแจ้งให้ผู้ใช้ทราบว่ามีการยอมรับค่าที่ป้อนเข้าแล้ว
แสดงความคิดเห็นรหัสทั้งหมดในแผง Visual Studio Code Editor
- เลือกบรรทัดรหัสทั้งหมดในตัวแก้ไขรหัส
- บนเมนูแก้ไข เลือกสลับบล็อกข้อคิดเห็น
เขียนโค้ดที่ใช้เงื่อนไขแต่ละข้อสําหรับโครงการโค้ด 2
เรียกใช้แอปพลิเคชันของคุณและตรวจสอบว่ารหัสของคุณตรวจสอบการป้อนข้อมูลของผู้ใช้ตามข้อกําหนดที่ระบุหรือไม่
ตัวอย่างเช่น เมื่อคุณเรียกใช้แอปพลิเคชัน ควรปฏิเสธค่าอินพุตเช่น "ผู้ดูแลระบบ" แต่ควรยอมรับค่าป้อนเข้าของ " ผู้ดูแลระบบ "
ผลลัพธ์ของคอนโซลสําหรับตัวอย่างนี้ควรมีลักษณะดังต่อไปนี้:
Enter your role name (Administrator, Manager, or User) Admin The role name that you entered, "Admin" is not valid. Enter your role name (Administrator, Manager, or User) Administrator Your input value (Administrator) has been accepted.
โครงการโค้ด 3 - เขียนโค้ดที่ประมวลผลเนื้อหาของอาร์เรย์สตริง
นี่คือเงื่อนไขที่โครงการการเขียนโค้ดที่สามของคุณต้องดําเนินการ:
โซลูชันของคุณต้องใช้อาร์เรย์สตริงต่อไปนี้เพื่อแสดงอินพุตไปยังตรรกะการเข้ารหัสของคุณ:
string[] myStrings = new string[2] { "I like pizza. I like roast chicken. I like salad", "I like all three of the menu choices" };โซลูชันของคุณต้องประกาศตัวแปรจํานวนเต็มที่
periodLocationชื่อว่าสามารถใช้เพื่อจัดเก็บตําแหน่งของอักขระมหัพภาคอยู่ภายในสตริงโซลูชันของคุณต้องมีค่าภายนอก
foreachหรือforลูปที่สามารถใช้เพื่อประมวลผลแต่ละองค์ประกอบสตริงในอาร์เรย์ ตัวแปรสตริงที่คุณจะประมวลผลภายในการวนรอบควรมีชื่อว่าmyStringในรอบนอก โซลูชันของคุณต้องใช้
IndexOf()วิธีการ ของStringคลาสเพื่อรับตําแหน่งที่ตั้งของอักขระรอบระยะเวลาแรกในmyStringตัวแปร การเรียกใช้เมธอด ควรคล้ายกับ:myString.IndexOf(".")ถ้าไม่มีอักขระเครื่องหมายมหัพภาคในสตริง ค่า -1 จะถูกส่งกลับโซลูชันของคุณต้องประกอบด้วยภายใน
do-whileหรือwhileรอบที่สามารถใช้เพื่อประมวลผลmyStringตัวแปรได้ในลูปภายใน โซลูชันของคุณต้องแยกและแสดง (เขียนไปยังคอนโซล) แต่ละประโยคที่มีอยู่ในแต่ละสตริงที่ประมวลผล
ในรอบภายใน โซลูชันของคุณต้องไม่แสดงอักขระเครื่องหมายมหัพภาค
ในลูปภายใน โซลูชันของคุณต้องใช้
Remove()วิธีการ ,Substring()และTrimStart()เพื่อประมวลผลข้อมูลสตริง
แสดงความคิดเห็นรหัสทั้งหมดในแผง Visual Studio Code Editor
- เลือกบรรทัดรหัสทั้งหมดในตัวแก้ไขรหัส
- บนเมนูแก้ไข เลือกสลับบล็อกข้อคิดเห็น
เขียนโค้ดที่ใช้แต่ละเงื่อนไขที่แสดงสําหรับโครงการโค้ด 3
เรียกใช้แอปพลิเคชันของคุณและตรวจสอบว่าเอาต์พุตของคุณตรงตามข้อกําหนดหรือไม่
หากตรรกะโค้ดของคุณทํางานอย่างถูกต้อง ผลลัพธ์ของคุณควรมีลักษณะคล้ายกับรายการต่อไปนี้:
I like pizza I like roast chicken I like salad I like all three of the menu choices
ไม่ว่าคุณจะติดอยู่และต้องการดูที่โซลูชัน หรือคุณทําเสร็จแล้ว ดําเนินการต่อเพื่อดูโครงการโซลูชันสําหรับการทดสอบนี้