Viết thủ tục giải phương trình bậc 2

Viết chương trình giải phương trình bậc hai với yêu cầu sử dụng các chương trình con để giải quyết các trường hợp xãy ra của delta.

Cấu trúc chung của một chương trình có sử dụng ctc

PROGRAM  Tên_chương_trình;

USES CRT;

CONST  ............;

VAR       ............;

PROCEDURE  THUTUC[[Các tham số]];

[Khai báo Const, Var]

BEGIN

          ..............

END;

FUNCTION  HAM[[Các tham số]]:;

[Khai báo Const, Var]

BEGIN

          ..............

          HAM:=;

END;

BEGIN {Chương trình chính}

          ...................

          THUTUC[[...]];

          ...................

          A:= HAM[[...]];

          ...................

END.

Chương trình con [CTC] là một đoạn chương trình thực hiện trọn vẹn hay một chức năng nào đó.   Trong Turbo Pascal, có 2 dạng CTC:

  • Thủ tục [PROCEDURE]: Dùng để thực hiện một hay nhiều nhiệm vụ nào đó.
  • Hàm [FUNCTION]: Trả về một giá trị nào đó [có kiểu vô hướng, kiểu string]. Hàm có thể sử dụng trong các biểu thức.

Ngoài ra, trong Pascal còn cho phép các CTC lồng vào nhau.

Trong quá trình xây dựng CTC, khi nào thì nên dùng thủ tục/hàm?

Dùng hàm

Dùng thủ tục

- Kết quả của bài toán trả về 1 giá trị duy nhất [kiểu vô hướng, kiểu string].

- Lời gọi CTC cần nằm trong các biểu thức tính toán.

- Kết quả của bài toán không trả về giá trị nào hoặc trả về nhiều giá trị hoặc trả về  kiểu dữ liệu có cấu trúc [Array, Record, File].

- Lời gọi CTC không nằm trong các biểu thức tính toán.

Program Giai_PT_bac_hai; uses crt; var a,b,c,delta:real; {----------------------} Procedure delta_duong; begin write['Phuong trinh co hai nghiem x1=',[-b+sqrt[delta]]/[2*a],'x2=',[-b+sqrt[delta]]/[2*a]]; end; {---------------------} Procedure delta_khong; begin write['Phuong trinh co nghiem kep x=',-b/[2*a]:3:1]; end; {--------------------} Procedure delta_am; begin writeln['Phuong trinh vo nghiem']; end; {Chuong trinh chinh} Begin clrscr; write['Nhap a: '];readln[a]; write['Nhap b: '];readln[b]; write['Nhap c: '];readln[c]; delta:=b*b-4*a*c; if delta>0 then delta_duong else if delta = 0 then delta_khong else delta_am; readln end.

Nhận xét: Chương trình con cho phép chia nhỏ công việc nhằm đơn giản hoá. Ngoài ra một công việc nào đó lặp lại nhiều lần trong chương trình nên dùng CTC vì khi đó mã chương trình sẽ gọn, dễ theo dõi, gỡ rối hơn.

Viết chương trình giải phương trình bậc hai:  Ax2 + Bx +C = 0

Yêu cầu: Viết chương trình với mỗi trường hợp sử dụng IF – ELSESWITCH CA

Mục tiêu

Làm quen với Cấu trúc rẽ nhánh if – else Cấu trúc rẽ nhánh Switch case.

Hướng dẫn

Bài tập mang tính tham khảo, hỗ trợ các bạn làm quen và luyện tập với các bàn toán lập trình từ cơ bản đến nâng cao trong C#. 

Để đảm bảo kiến thức về bài tập này, bạn nên xem qua bài: 

Bài tập sẽ được hướng dẫn chi tiết qua các Live Stream tương tác hằng ngày tại Channel

Youtube.com/Kteam

Kteam khuyến khích các bạn tự phân tích đề bài > tự giải bài toán > debug để kiểm tra kết quả và fix lỗi trong quá trình giải. Sau đó, bạn có thể tham khảo source code mẫu hoặc video hướng dẫn để hoàn chỉnh bài tập. 

Để được hỗ trợ tốt nhất, bạn có thể đặt câu hỏi ở phần BÌNH LUẬN bên dưới bài viết hoặc ở mục HỎI & ĐÁP.

Source code tham khảo

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CSharp_Bai13 { class Program { static void Main[string[] args] { Console.OutputEncoding = Encoding.UTF8; Console.WriteLine["Nhập vào A: "]; float a = float.Parse[Console.ReadLine[]]; Console.WriteLine["Nhập vào B: "]; float b = float.Parse[Console.ReadLine[]]; Console.WriteLine["Nhập vào C: "]; float c = float.Parse[Console.ReadLine[]]; float delta = [b/2] * [b/2] - a * c; Console.WriteLine["Phương trình nhập vào là:\n {0}x*x + {1}x + {2} = 0", a,b,c]; Console.WriteLine["Delta phẩy = {0}", delta]; /* if [delta < 0] { Console.WriteLine["Chương trình vô nghiệm"]; } else if [delta == 0] { float x = [-b/2]/a; Console.WriteLine["Phương trình có nghiệm kép x1 = x2 = {0}", x]; } else { double x1 = 0; double x2 = 0; x1 = [[-b / 2] - Math.Sqrt[delta]] / a; x2 = [[-b / 2] + Math.Sqrt[delta]] / a; Console.WriteLine["Phương trình có 2 nghiệm phân biệt: "]; Console.WriteLine["x1 = {0}", x1]; Console.WriteLine["x2 = {0}", x2]; } */ switch [delta 0 then delta_duong else if delta = 0 then delta_khong else delta_am; readln end.

Tham khảo giải bài tập hay nhất

Loạt bài Lớp 11 hay nhất

xem thêm

Video liên quan

Chủ Đề