background image

© W. Treichel, Podstawy Informatyki, sem. 2, Wydział InŜynierii Środowiska 

Strona 1 z 3 

C2. Instrukcje warunkowe złoŜone 

If ... Then ... ElseIf ... Then ... Else ... EndIf

 

Z a d   C 2 .   T r ó j m i a n   k w a d r a t o w y .   Napisać  program  na  znajdowanie  pierwiastków  
równania  kwadratowego    ax

2

+bx+c  =  0.  RozwaŜyć  wszystkie  moŜliwe  przypadki  wartości 

współczynników abc.  
RozwaŜenie  przypadku,  gdy  a=0  sprowadza  zadanie  do  rozwiązania  równania  liniowego, 
które było rozwiązywane w zadaniu C1. W przeciwnym przypadku, tzn. gdy a jest róŜne od 0 
mamy do czynienia z trójmianem kwadratowym. NaleŜy obliczyć wyróŜnik tego trójmianu i 
w  zaleŜności  od  jego  wartości  obliczyć  dwa,  jeden  podwójny  lub  stwierdzić  brak 
pierwiastków rzeczywistych trójmianu. 

 

 

 
Wskazówki do rozwi
ązania 
1.  Tworzenie formularza 

1.1. Utwórz  nowy  projekt  typu  Windows  Form  Application.  Zmień  nazwę  tworzonego 

projektu  na  R_kwadratowe.  W  panelu  Solution  Explorer  zmień  nazwę  utworzonego 
formularza z Form1 na R_kwadratowe oraz w panelu właściwości zmień napis (Text) 
na pasku formularza na Trójmian kwadratowy 

1.2. Umieść  napis  Rozwiązanie  trójmianu  kwadratowego  ax^2+bx+c=0  w  postaci 

etykiety  (Label).  Zadbaj  o  odpowiednie  połoŜenie  (wycentrowanie)  oraz  czcionkę 
(Times New Roman, 14, Pogrubiona) 

1.3. Umieść  na  formularzu  ramkę  (GroupBox)  i  nadaj  jej  tytuł  (Text)  Podaj 

współczynniki.  

1.4. Umieść  wewnątrz  tej  ramki  trzy  pola  tekstowe  (TextBox)  i  nazwij  je  odpowiednio 

txta , txtb i txtc. Umieść przed tymi polami tekstowymi etykiety (Label) a= , b= oraz 
c = 

1.5. Umieść  na  formularzu  drugą  ramkę  (GroupBox)  i  nadaj  jej  tytuł  (Text)  Wynik. 

Wewnątrz tej ramki umieść etykietę (Label), nazwij ją (Name) lblX oraz wyczyść jej 
zawartość (Text). W tym miejscu będzie wyświetlony wynik obliczeń. 

1.6. Umieść  na  formularzu  przycisk  polecenia  (Button),  nadaj  mu  nazwę  (Name) 

btnOblicz oraz zmień napis na nim na Oblicz.  

1.7. Na koniec, umieść na formularzu jeszcze jeden przycisk polecenia (Button), nadaj mu 

nazwę btnKoniec oraz zmień napis na nim na Koniec

1.8. Zapisz na dysku utworzony projekt nadając mu nazwę R_kwadratowe. 

background image

© W. Treichel, Podstawy Informatyki, sem. 2, Wydział InŜynierii Środowiska 

Strona 2 z 3 

2.  Pisanie kodu programu 
Przed przystąpieniem do pisania kodu programu narysuj schemat blokowy dla tego zadania. 

2.1. Dwukrotne kliknięcie przycisku btnKoniec przeniesie cię do okna kodu, do procedury 

obsługi  zdarzenia  kliknięcia  tego  przycisku,  czyli  do  procedury

 

Private

 

Sub

 

btnKoniec_Click(...)

Wpisz  wewnątrz  tej  procedury  polecenie 

Close()

 

powodujące zakończenie programu. 

2.2. Wróć  do  okna  obiektu  czyli  do  stworzonego  formularza.  Dwukrotne  kliknięcie  pola 

tekstowego txta przeniesie cię ponownie do okna kodu, do obsługi zdarzenia zmiany 
tego  pola,  czyli  do  procedury 

Private

 

Sub

  txta_TextChanged(...)

Wewnątrz 

tej  procedury  odczytamy  wartość  wprowadzoną  do  tego  pola  tekstowego.  Nadaj 
zmiennej a wartość pierwszego współczynnika w równaniu tzn. podstaw na a wartość 
właściwości Text obiektu txta. Zagwarantuj, Ŝe nastąpi konwersja (zamiana) tekstu na 
liczbę (zapewnia to funkcja Val. W przypadku, gdy obiekt txta będzie zawierał tekst 
nie  odpowiadający  liczbie,  funkcja  Val  zwróci  wartość  równą  0).    Linia  kodu 
powinna wyglądać następująco:   

a = Val(txta.Text)

 

2.3. Zrób analogicznie dla zmiennych oraz c. 
2.4. Aby  zmienne  a,  b  i  c  były  widoczne  w  innych  procedurach  zadeklaruj  na  samym 

początku klasy te zmienne jako zmienne rzeczywiste (Single) wpisując: 

 

Dim a, b, c As Single

 

.  

2.5. Wróć  ponownie  do  okna  obiektu.  Dwukrotne  kliknięcie  przycisku  btnOblicz 

przeniesie  cię  ponownie  do  okna  kodu,  do  obsługi  zdarzenia  kliknięcia  tego 
przycisku,  czyli  do  procedury 

Private

 

Sub

  btnOblicz_Click(...)

.  Będzie  to 

główna  procedura  realizująca  obliczenia  w  zaleŜności  od  wprowadzonych  wartości 
oraz  wyświetlająca  wynik  Na  początku  tej  procedury  zadeklaruj  nowe,  lokalne 
zmienne  typu  rzeczywistego  wpisując 

Dim  x1,  x2,  Delta  As  Single

Następnie 

sprawdzimy  czy  współczynnik  a  jest  równy  zero.  Jeśli  tak,  to  w  tym  przypadku 
dalsze obliczenia są identyczne jak w zadaniu C1. 

2.6. W  przeciwnym  przypadku,  tzn.  gdy  a  jest  róŜne  od  zera  obliczamy  wyróŜnik 

trójmianu korzystając ze znanego wzoru 

Delta = b^2-4*a*c

 

2.7. Sprawdzamy,  czy  delta  jest  większa  od  zera.  Jeśli  tak,  to  istnieją  dwa  pierwiastki 

rzeczywiste trójmianu, które obliczamy z zaleŜności: 
 

x1 = (-b-sqrt(Delta))/(2*a)

 oraz  

x2 = (-b+sqrt(Delta))/(2*a)

 

Uwaga:  funkcja 

sqrt

  pochodzi  z  kolekcji 

System.Math

  zatem  jej  pełne  poprawne 

wywołanie powinno być następujące: 

Math.Sqrt(Delta)

 

Obydwa pierwiastki wyświetlamy w polu etykiety lblX , dzieląc tekst na trzy wiersze 
za pomocą znaku 

Chr(10)

, czyli przejścia do nowego wiersza i łącząc je w łańcuch 

za pomocą znaku 

&

, np. zapisując 

lblX.Text = 

"Istniej

ą

 dwa pierwiastki:"

 & Chr(10) _ 

           & 

"x1 = "

 & Str(x1) & Chr(10) & 

"x2 = "

 & Str(x2) 

Uwaga:  Znak  podkreślenia  poprzedzony  spacją  pozwala  kontynuować  długą  linię  kodu  w  kolejnych 
wierszach

 

2.8. W przeciwnym  razie  (tzn.  gdy 

Delta

  nie  jest dodatnia)  sprawdzamy czy 

Delta

 jest 

równa  zero.  Jeśli  tak,  to  istnieje  pierwiastek  podwójny,  który  obliczamy  ze  wzoru:    

x1  =  -b/(2*a)

 

i  wynik

 

ten  wyświetlamy  w  polu  etykiety  lblX  opatrując  go 

odpowiednim komentarzem 

2.9. W  przeciwnym  przypadku,  tzn.  gdy 

Delta

  jest  ujemna,  w  polu  etykiety  lblX 

umieszczamy komentarz, Ŝe brak jest pierwiastków rzeczywistych trójmianu. 

2.10. Zapisz  swój  projekt,  a  następnie  uruchom  go  i  przetestuj  jego  działanie  na  kilku 

zestawach danych. Sprawdź działanie programu dla błędnych danych np. wprowadź 
w pola tekstowe inny tekst niŜ liczby lub wartości równe 0. 

background image

© W. Treichel, Podstawy Informatyki, sem. 2, Wydział InŜynierii Środowiska 

Strona 3 z 3 

Treści niektórych procedur obsługujących poszczególne kontrolki mogą być następujące:

 

  

Public

 

Class

 R_kwadratowe 

    

Dim

 a, b, c 

As

 

Single 

 

    

Private

 

Sub

 btnKoniec_Click(

ByVal

 sender 

As

 System.Object, 

ByVal

 e 

As

 System.EventArgs) 

Handles

 btnKoniec.Click 

        Close() 
    

End

 

Sub 

 

    

Private

 

Sub

 txta_TextChanged(

ByVal

 sender 

As

 System.Object, 

ByVal

 e 

As

 System.EventArgs) 

Handles

 txta.TextChanged 

        a = Val(txta.Text) 
    

End

 

Sub 

 

    

Private

 

Sub

 txtb_TextChanged(

ByVal

 sender 

As

 System.Object, 

ByVal

 e 

As

 System.EventArgs) 

Handles

 txtb.TextChanged 

        b = Val(txtb.Text) 
    

End

 

Sub 

 

    

Private

 

Sub

 txtc_TextChanged(

ByVal

 sender 

As

 System.Object, 

ByVal

 e 

As

 System.EventArgs) 

Handles

 txtc.TextChanged 

        c = Val(txtc.Text) 
    

End

 

Sub 

 

    

Private

 

Sub

 btnOblicz_Click(

ByVal

 sender 

As

 System.Object, 

ByVal

 e 

As

 System.EventArgs) 

Handles

 btnOblicz.Click 

        

Dim

 x1, x2, Delta 

As

 

Single 

        

If

 a = 0 

Then 

            

'Je

ś

li a równa si

ę

 zero to mamy równanie liniowe 

            

If

 b <> 0 

Then 

                

'Je

ś

li b nie równa si

ę

 zero 

                x1 = -c / b 
                lblX.Text = 

"Równanie liniowe"

 & Chr(10) & _ 

                            

"x = "

 & Str(x1) 

            

Else 

                

'w przeciwnym przypadku, tzn. gdy b=0 

                

If

 c <> 0 

Then 

                    

'je

ś

li ponadto c nie równa si

ę

 zero, czyli b=0 i c<>0 

                    lblX.Text = 

"Równanie sprzeczne" 

                

Else 

                    

'w przeciwnym razie, tzn. c=0 i b=0 

                    lblX.Text = 

"Równanie to

Ŝ

samo

ś

ciowe" 

                

End

 

If 

            

End

 

If 

 

        

Else 

            

'w przeciwnym przypadku, tzn. gdy a<>0 

            Delta = b ^ 2 - 4 * a * c 
            

If

 Delta > 0 

Then 

                

'je

ś

li delta dodatnia to mamy dwa pierwiastki 

                x1 = (-b - Math.Sqrt(Delta)) / (2 * a) 
                x2 = (-b + Math.Sqrt(Delta)) / (2 * a) 
                lblX.Text = 

"Istniej

ą

 dwa pierwiastki:"

 & Chr(10) _ 

                          & 

"x1 = "

 & Str(x1) & Chr(10) & 

"x2 = "

 & Str(x2) 

            

Else 

                

If

 Delta = 0 

Then

 

                    

'je

ś

li delta równa 0 to mamy jeden pierwiastek podwójny 

                    x1 = -b / (2 * a) 
                    lblX.Text = 

"Istnieje jeden pierwiastek podwójny:"

  _  

 & Chr(10) & 

"x1 = "

 & Str(x1) 

                

Else 

 

                    lblX.Text = 

"Brak pierwiastków rzeczywistych" 

                

End

 

If 

            

End

 

If 

        

End

 

If 

 

    

End

 

Sub 

End

 

Class

 

 

 
Uwaga.
 wszystkie linie zaczynające się od apostrofu są komentarzem nie mającym wpływ na realizację 
programu. Wielokropek oznacza brakujące fragmenty kodu.