Ćwiczenie laboratoryjne. Oprogramowanie i badanie stosu lub kolejki w środowisku Visual Basic 2005

Wielkość: px
Rozpocząć pokaz od strony:

Download "Ćwiczenie laboratoryjne. Oprogramowanie i badanie stosu lub kolejki w środowisku Visual Basic 2005"

Transkrypt

1 Ćwiczenie laboratoryjne Oprogramowanie i badanie stosu lub kolejki w środowisku Visual Basic 2005 Tematy ćwiczenia realizacja stosu lub kolejki dla tablicowej lub listowej reprezentacji. operacje na stosie lub kolejce. Zadanie polega na oprogramowaniu stosu lub kolejki dla tablicowej lub listowej reprezentacji. Program musi przyjmować rozmiar stosu lub kolejki, wyświetlać zawartość stosu lub kolejki oraz element na wierzchu stosu lub elementy na początku i końcu kolejki, przyjmować i odkładać na stos lub zapisywać do kolejki nowy element, zdejmować element ze stosu lub odczytywać element z kolejki, komunikować o przepełnieniu stosu lub kolejki i o tym, że stos lub kolejka jest pusta. Warianty operacji Wariant Rodzaj Struktura Indeks Wariant Rodzaj struktury Struktura bazowa struktury bazowa stosu 1 stos tablica od kolejka tablica 2 stos lista 18 kolejka lista 3 stos tablica od 0 19 kolejka tablica 4 stos lista 20 kolejka lista 5 stos tablica od 1 21 kolejka tablica 6 stos lista 22 kolejka lista 7 stos tablica od 0 23 kolejka tablica 8 stos lista 24 kolejka lista 9 stos tablica od 1 25 kolejka tablica 10 stos lista 26 kolejka lista 11 stos tablica od 0 27 kolejka tablica 12 stos lista 28 kolejka lista 13 stos tablica od 1 29 kolejka tablica 14 stos lista 30 kolejka lista 15 stos tablica od 0 31 kolejka tablica 16 stos lista 32 kolejka lista

2 Plan ćwiczenia Wariant "Stos, tablica, indeks stosu od -1" a) Obiekty graficzne Wywołać środowisko Microsoft Visual Studio Wybrać punkt menu File / New / Project.., zaznaczyć język programowania Visual Basic, rodzaj aplikacji Windows Application, wprowadzić na dole okna nazwę projektu, na przykład ProjektStos, i katalog do umieszczenia projektu. Wprowadzić nagłówek formularzu Stos. Wariant "tablica, indeks stosu od -1". Dodać do formularza obiekty graficzne: - do wprowadzenia rozmiaru stosu, - do wyświetlenia zawartości stosu i elementu na wierzchu stosu, - do wprowadzenia nowego elementu w celu odkładania na stos, - do komunikowania o przepełnieniu stosu, - do zdejmowania elementu ze stosu, - do wyświetlenia elementu zdejmowanego ze stosu, - do komunikowania o tym, że stos jest pusty. Wprowadzenie rozmiaru stosu oraz nowego elementu lepiej realizować za pomocą dwóch obiektów: okienka typu NumericUpDown i klawiszu typu Button z napisem Akceptuj. Lepiej obydwa obiekty włożyć do obiektu typu GroupBox z napisem "Rozmiar stosu" lub "Rozmiar kolejki". Do wyświetlenia zawartości stosu oraz elementu na wierzchu stosu jest wygodnie korzystać z obiektu typu ListBox. Wierzchowi stosu może odpowiadać zaznaczony wiersz ListBox a. Wprowadzenie nowego elementu lepiej realizować za pomocą dwóch obiektów: okienka typu NumericUpDown i klawiszu typu Button z napisem Dodaj. Zdejmowanie elementu ze stosu możną inicjować naciśnięciem klawiszu "Zdejmij" lub "Odczyt" typu Button. Zdejmowaną (odczytaną) wartość można pokazać w okienku typu TextBox. Bazowe operacje na stosie powinny być realizowane ze sprawdzaniem, czy jest stos pusty oraz czy jest stos zapełniony. Do wyświetlenia tekstów komunikatów można dodać do formularza obiekt typu StatusBar. Wyświetlenie komunikatu w obiekcie typu StatusBar: StatusBar1.Text = "..." Inny sposób wyświetlenia tekstów komunikatów - wykorzystanie standardowej funkcji MsgBox: MsgBox("...",MsgBoxStyle.OKOnly, "Komunikat") Jeszcze jeden sposób wyświetlenia tekstów komunikatów - wykorzystanie dodatkowego formularza: Wierzchowi stosu może odpowiadać zaznaczony wiersz ListBox a. Aby zaznaczać pojedynczy wiersz w obiekcie typu ListBox należy ustawić właściwość SelectionMode na "One". Właściwość SelectedIndex ListBox'a służy do wyboru wierszu do zaznaczenia. Przykładowo: ListBox1->SelectedIndex=-1 'brak zaznaczonego wierszu ListBox1->SelectedIndex=2 'zaznaczony jest wiersz 3 z indeksem 2 (indeksy od 0) Należy ustawić na False właściwość Enabled obiektu ListBox1, aby użytkownik nie mógł zaznaczać wierszy myszą.

3 Zmienną do przechowywania indeksu elementu na wierzchu stosu oraz zmienną do przechowywania rozmiaru stosu należy zadeklarować w klasie formularza, na przykład: Dim RS As Integer 'rozmiar stosu Dim js As Integer = -1 (lub 0) 'indeks stosu W przypadku korzystania z obiektu typu ListBox do wyświetlenia zawartości stosu nie jest potrzebna tablica stosu - role tej tablicy spełnia obiekt ListBox1. Warunek "czy jest stos pusty" sprawdzamy następująco: If js < 0 Then ''' komunikat "Stos jest pusty" ''' instrukcje zdejmowania elementu ze stosu Warunek "czy jest stos zapełniony" sprawdzamy następująco: If js>=rs-1 Then ''' komunikat "Stos jest zapełniony" ''' instrukcje odkładania elementu na stos b) Oprogramować bazowe operacje Wewnątrz procedury, którą tworzy system w odpowiedzi na podwójne klikniecie klawiszu Akceptuj, należy wpisać następujące instrukcji do wprowadzenia rozmiaru stosu: RS = NumericUpDown1.Value ListBox1.Items.Clear() Dim I As Integer For I = 0 To (RS - 1) ListBox1.Items.Add(0) Next I ListBox1.SelectedIndex = -1 W przytoczonej procedurze ma miejsce dodawanie do ListBox a pustych elementów w ilości równej wprowadzonemu rozmiarowi stosu. Do tej procedury należy dodać ustawienie początkowe indeksu stosu: js = -1 W przypadku początkowej wartości indeksu stosu równej -1 w celu dodawania do stosu nowego elementu korzystamy z dwóch instrukcji: 1) zwiększenie indeksu stosu o jeden, 2) zapisywanie do tablicy stosu nowego elementu według indeksu stosu. Instrukcji należy rozmieścić wewnątrz procedury, którą tworzy system w odpowiedzi na podwójne klikniecie klawiszu Dodaj : Dim elem As Integer = NumericUpDown2.Value If js >= RS - 1 Then js += 1

4 ListBox1.Items(js) = elem.tostring() ListBox1.SelectedIndex = js W przypadku początkowej wartości indeksu stosu równej -1 w celu zdejmowania elementu ze stosu korzystamy z dwóch instrukcji: 1) odczyt z tablicy stosu elementu według indeksu stosu, 2) zmniejszenie indeksu stosu o jeden. Tekst procedury, wywoływanej systemem po naciśnięciu klawiszu "Zdejmij": Dim str As String If js < 0 Then ' zdejmowanie ze stosu TextBox3.Text = ListBox1.Items(js).ToString() ' wartość w postaci tekstowej js -= 1 ListBox1.SelectedIndex = js c) Eksperyment 1. Wprowadzić rozmiar stosu równy Wypróbować zdejmowanie elementu ze stosu i otrzymać komunikat, że stos jest pusty. 3. Wprowadzić i położyć na stos 3-5 elementów danych (liczb) sprawdzając poprawność odkładania i przemieszczenia wskaźnika stosu. 4. Zdejmować ze stosu 2-3 elementów danych (liczb) sprawdzając poprawność wyprowadzenia i przemieszczenia wskaźnika stosu. 5. Wprowadzać do stosu elementy danych (liczby) do otrzymania komunikatu o przepełnieniu stosu. Wypróbować projekt w trybie Build / Build Solution. Uruchomić program w trybie Debug / Start Debugging. Uwaga. Jeżeli w trybie Build... otrzymujemy komunikat Sub Main not found in..., to należy nacisnąć Project /...Properties.. i na zakładce Application w polu Startup form wybrać nazwę głównego formularza. Zapisać projekt w trybie File / Save All. Wyprodukować EXE - plik w trybie Build / Build nazwa_projektu. Pokazać pracujący program prowadzącemu.

5 Wariant "Stos, tablica, indeks stosu od 0" a) Obiekty graficzne Wywołać środowisko Microsoft Visual Studio Wybrać punkt menu File / New / Project.., zaznaczyć język programowania Visual Basic, rodzaj aplikacji Windows Application, wprowadzić na dole okna nazwę projektu, na przykład ProjektStos, i katalog do umieszczenia projektu. Wprowadzić nagłówek formularzu Stos. Wariant "tablica, indeks stosu od 0". Dodać do formularza obiekty graficzne: - do wprowadzenia rozmiaru stosu, - do wyświetlenia zawartości stosu i elementu na wierzchu stosu, - do wprowadzenia nowego elementu w celu odkładania na stos, - do komunikowania o przepełnieniu stosu, - do zdejmowania elementu ze stosu, - do wyświetlenia elementu zdejmowanego ze stosu, - do komunikowania o tym, że stos jest pusty. Wprowadzenie rozmiaru stosu oraz nowego elementu lepiej realizować za pomocą dwóch obiektów: okienka typu NumericUpDown i klawiszu typu Button z napisem Akceptuj. Lepiej obydwa obiekty włożyć do obiektu typu GroupBox z napisem "Rozmiar stosu" lub "Rozmiar kolejki". Do wyświetlenia zawartości stosu oraz elementu na wierzchu stosu jest wygodnie korzystać z obiektu typu ListBox. Wierzchowi stosu może odpowiadać zaznaczony wiersz ListBox a. Wprowadzenie nowego elementu lepiej realizować za pomocą dwóch obiektów: okienka typu NumericUpDown i klawiszu typu Button z napisem Dodaj. Zdejmowanie elementu ze stosu możną inicjować naciśnięciem klawiszu "Zdejmij" lub "Odczyt" typu Button. Zdejmowaną (odczytaną) wartość można pokazać w okienku typu TextBox. Bazowe operacje na stosie powinny być realizowane ze sprawdzaniem, czy jest stos pusty oraz czy jest stos zapełniony. Do wyświetlenia tekstów komunikatów można dodać do formularza obiekt typu StatusBar. Wyświetlenie komunikatu w obiekcie typu StatusBar: StatusBar1.Text = "..." Inny sposób wyświetlenia tekstów komunikatów - wykorzystanie standardowej funkcji MsgBox: MsgBox("...",MsgBoxStyle.OKOnly, "Komunikat") Jeszcze jeden sposób wyświetlenia tekstów komunikatów - wykorzystanie dodatkowego formularza: Wierzchowi stosu może odpowiadać zaznaczony wiersz ListBox a. Aby zaznaczać pojedynczy wiersz w obiekcie typu ListBox należy ustawić właściwość SelectionMode na "One". Właściwość SelectedIndex ListBox'a służy do wyboru wierszu do zaznaczenia. Przykładowo: ListBox1->SelectedIndex=-1 'brak zaznaczonego wierszu ListBox1->SelectedIndex=2 'zaznaczony jest wiersz 3 z indeksem 2 (indeksy od 0) Należy ustawić na False właściwość Enabled obiektu ListBox1, aby użytkownik nie mógł zaznaczać wierszy myszą. Zmienną do przechowywania indeksu elementu na wierzchu stosu oraz zmienną do przechowywania rozmiaru stosu należy zadeklarować w klasie formularza, na przykład:

6 Dim RS As Integer 'rozmiar stosu Dim js As Integer = 0 'indeks stosu W przypadku korzystania z obiektu typu ListBox do wyświetlenia zawartości stosu nie jest potrzebna tablica stosu - role tej tablicy spełnia obiekt ListBox1. Warunek "czy jest stos pusty" sprawdzamy następująco: If js = 0 Then ''' komunikat "Stos jest pusty" ''' instrukcje zdejmowania elementu ze stosu Warunek "czy jest stos zapełniony" sprawdzamy następująco: If js>=rs Then ''' komunikat "Stos jest zapełniony" ''' instrukcje odkładania elementu na stos b) Oprogramować bazowe operacje Wewnątrz procedury, którą tworzy system w odpowiedzi na podwójne klikniecie klawiszu Akceptuj, należy wpisać następujące instrukcji do wprowadzenia rozmiaru stosu: RS = NumericUpDown1.Value ListBox1.Items.Clear() Dim I As Integer For I = 0 To RS ListBox1.Items.Add(0) Next I ListBox1.SelectedIndex = -1 W przytoczonej procedurze ma miejsce dodawanie do ListBox a pustych elementów w ilości większej o jeden wprowadzonemu rozmiarowi stosu. Do tej procedury należy dodać ustawienie początkowe indeksu stosu: js = 0 W przypadku początkowej wartości indeksu stosu równej 0 w celu dodawania do stosu nowego elementu korzystamy z dwóch instrukcji: 1) zapisywanie do tablicy stosu nowego elementu według indeksu stosu, 2) zwiększenie indeksu stosu o jeden. Instrukcji należy rozmieścić wewnątrz procedury, którą tworzy system w odpowiedzi na podwójne klikniecie klawiszu Dodaj : Dim elem As Integer = NumericUpDown2.Value If js >= RS Then ListBox1.Items(js) = elem.tostring() js += 1 ListBox1.SelectedIndex = js

7 W przypadku początkowej wartości indeksu stosu równej 0 w celu zdejmowania elementu ze stosu korzystamy z dwóch instrukcji: 1) zmniejszenie indeksu stosu o jeden, 2) odczyt z tablicy stosu elementu według indeksu stosu. Tekst procedury, wywoływanej systemem po naciśnięciu klawiszu "Zdejmij": Dim str As String If js = 0 Then js -= 1 ' zdejmowanie ze stosu TextBox3.Text = ListBox1.Items(js).ToString() ' wartość w postaci tekstowej ListBox1.SelectedIndex = js c) Eksperyment 1) Wprowadzić rozmiar stosu równy 7. 2) Wypróbować zdejmowanie elementu ze stosu i otrzymać komunikat, że stos jest pusty. 3) Wprowadzić i położyć na stos 3-5 elementów danych (liczb) sprawdzając poprawność odkładania i przemieszczenia wskaźnika stosu. 4) Zdejmować ze stosu 2-3 elementów danych (liczb) sprawdzając poprawność wyprowadzenia i przemieszczenia wskaźnika stosu. 5) Wprowadzać do stosu elementy danych (liczby) do otrzymania komunikatu o przepełnieniu stosu. Wypróbować projekt w trybie Build / Build Solution. Uruchomić program w trybie Debug / Start. Uwaga. Jeżeli w trybie Build... otrzymujemy komunikat Sub Main not found in..., to należy nacisnąć Project /...Properties.. i na zakładce Application w polu Startup form wybrać nazwę głównego formularza. Zapisać projekt w trybie File / Save All. Wyprodukować EXE - plik w trybie Build / Build nazwa_projektu. Pokazać pracujący program prowadzącemu.

8 Wariant "Stos, lista" a) Obiekty graficzne Wywołać środowisko Microsoft Visual Studio Wybrać punkt menu File / New / Project.., zaznaczyć język programowania Visual Basic, rodzaj aplikacji Windows Application, wprowadzić na dole okna nazwę projektu, na przykład ProjektStos, i katalog do umieszczenia projektu. Wprowadzić nagłówek formularzu Stos. Wariant "lista". Dodać do formularza obiekty graficzne: - do wprowadzenia rozmiaru stosu, - do wyświetlenia zawartości stosu i elementu na wierzchu stosu, - do wprowadzenia nowego elementu w celu odkładania na stos, - do komunikowania o przepełnieniu stosu, - do zdejmowania elementu ze stosu, - do wyświetlenia elementu zdejmowanego ze stosu, - do komunikowania o tym, że stos jest pusty. Wprowadzenie rozmiaru stosu oraz nowego elementu lepiej realizować za pomocą dwóch obiektów: okienka typu NumericUpDown i klawiszu typu Button z napisem Akceptuj. Lepiej obydwa obiekty włożyć do obiektu typu GroupBox z napisem "Rozmiar stosu" lub "Rozmiar kolejki". Do wyświetlenia zawartości stosu oraz elementu na wierzchu stosu jest wygodnie korzystać z obiektu typu ListBox. Wierzchowi stosu może odpowiadać zaznaczony wiersz ListBox a. Wprowadzenie nowego elementu lepiej realizować za pomocą dwóch obiektów: okienka typu NumericUpDown i klawiszu typu Button z napisem Dodaj. Zdejmowanie elementu ze stosu możną inicjować naciśnięciem klawiszu "Zdejmij" lub "Odczyt" typu Button. Zdejmowaną (odczytaną) wartość można pokazać w okienku typu TextBox. Bazowe operacje na stosie powinny być realizowane ze sprawdzaniem, czy jest stos pusty oraz czy jest stos zapełniony. Do wyświetlenia tekstów komunikatów można dodać do formularza obiekt typu StatusBar. Wyświetlenie komunikatu w obiekcie typu StatusBar: StatusBar1.Text = "..." Inny sposób wyświetlenia tekstów komunikatów - wykorzystanie standardowej funkcji MsgBox: MsgBox("...",MsgBoxStyle.OKOnly, "Komunikat") Jeszcze jeden sposób wyświetlenia tekstów komunikatów - wykorzystanie dodatkowego formularza: Wierzchowi stosu może odpowiadać zaznaczony wiersz ListBox a. Aby zaznaczać pojedynczy wiersz w obiekcie typu ListBox należy ustawić właściwość SelectionMode na "One". Właściwość SelectedIndex ListBox'a służy do wyboru wierszu do zaznaczenia. Przykładowo: ListBox1->SelectedIndex=-1 'brak zaznaczonego wierszu ListBox1->SelectedIndex=2 'zaznaczony jest wiersz 3 z indeksem 2 (indeksy od 0) Należy ustawić na False właściwość Enabled obiektu ListBox1, aby użytkownik nie mógł zaznaczać wierszy myszą. Zmienną do przechowywania rozmiaru stosu należy zadeklarować w klasie formularza, na przykład: Dim RS As Integer = 0 'rozmiar stosu

9 Obiekt ListBox1 typu ListBox przeznaczymy do wyświetlenia zawartości stosu, którego elementy będą rozproszone w elementach listy. W przypadku korzystania z obiektu ListBox1 nie jest potrzebny indeks stosu. Zadeklarujemy element listy: Structure selem 'struktura elementu listy Dim dana As Integer 'pole danych Dim nast As Object 'referencja do elementu następnego 'konstruktor: Public Sub New(ByVal d As Integer, ByRef p As Object) dana = d nast = p End Structure Zadeklarujemy referencję do pierwszego elementu listy: Dim pocz As Object = Nothing Warunek "czy jest stos pusty" sprawdzamy następująco: If pocz Is Nothing Then ''' komunikat "Stos jest pusty" ''' instrukcje zdejmowania elementu ze stosu Warunek "czy jest stos zapełniony" sprawdzamy następująco: Dim rr As Integer rr = fobliczrozmiar() If rr = RS Then ''' komunikat "Stos jest zapełniony" ''' instrukcje odkładania elementu na stos gdzie fobliczrozmiar jest funkcją obliczenia rozmiaru listy: Private Function fobliczrozmiar() As Integer Dim I As Integer = 0 Dim p As Object = pocz 'referencja tymczasowa While Not p Is Nothing p = p.nast I += 1 End While Return I End Function Wprowadzenie rozmiaru stosu: Private Sub ButtonAkceptuj_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonAkceptuj.Click RS = NumericUpDown1.Value fpokazliste() Funkcja wyświetlenia zawartości stosu: Private Sub fpokazliste()

10 ListBox1.Items.Clear() Dim p As Object = pocz 'referencja tymczasowa While Not p Is Nothing Dim elem As Integer = p.dana ListBox1.Items.Add(elem) p = p.nast End While If Not pocz Is Nothing Then ListBox1.SelectedIndex = 0 ListBox1.SelectedIndex = -1 b) Oprogramować bazowe operacje Odkładanie elementu na stos jest równoważnie dodawaniu elementu na początku listy: Private Sub ButtonDodaj_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonDodaj.Click Dim str As String = TextBox2.Text Dim elem As Integer = CInt(str) Dim nn As Integer nn = fobliczrozmiar() If nn >= RS Then Dim p As Object 'referencja tymczasowa p = New selem(elem, Nothing) p.nast = pocz pocz = p fpokazliste() Zdejmowanie elementu ze stosu jest równoważnie odejmowaniu elementu z początku listy: Private Sub ButtonOdczyt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonOdczyt.Click Dim str As String If pocz Is Nothing Then MsgBox("Stos jest pusty", MsgBoxStyle.OKOnly, "Komunikat") ' ' Dim elem As Integer = pocz.dana TextBox3.Text = elem.tostring() pocz = pocz.nast fpokazliste() c) Eksperyment 1) Wprowadzić rozmiar stosu równy 7. 2) Wypróbować zdejmowanie elementu ze stosu i otrzymać komunikat, że stos jest pusty. 3) Wprowadzić i położyć na stos 3-5 elementów danych (liczb) sprawdzając poprawność odkładania i przemieszczenia wskaźnika stosu. 4) Zdejmować ze stosu 2-3 elementów danych (liczb) sprawdzając poprawność wyprowadzenia i przemieszczenia wskaźnika stosu.

11 5) Wprowadzać do stosu elementy danych (liczby) do otrzymania komunikatu o przepełnieniu stosu. Wypróbować projekt w trybie Build / Build Solution. Uruchomić program w trybie Debug / Start. Uwaga. Jeżeli w trybie Build... otrzymujemy komunikat Sub Main not found in..., to należy nacisnąć Project /...Properties.. i na zakładce Application w polu Startup form wybrać nazwę głównego formularza. Zapisać projekt w trybie File / Save All. Wyprodukować EXE - plik w trybie Build / Build nazwa_projektu. Pokazać pracujący program prowadzącemu.

12 Wariant "Kolejka, tablica" a) Obiekty graficzne Wywołać środowisko Microsoft Visual Studio Wybrać punkt menu File / New / Project.., zaznaczyć język programowania Visual Basic, rodzaj aplikacji Windows Application, wprowadzić na dole okna nazwę projektu, na przykład ProjektKolejka, i katalog do umieszczenia projektu. Wprowadzić nagłówek formularzu Kolejka. Wariant "tablica". Dodać do formularza obiekty graficzne: - do wprowadzenia rozmiaru kolejki, - do wyświetlenia zawartości kolejki i elementów na początku i końcu kolejki, - do wprowadzenia nowego elementu w celu zapisywania do kolejki, - do komunikowania o przepełnieniu kolejki, - do odczytu elementu z kolejki, - do wyświetlenia elementu odczytanego z kolejki, - do komunikowania o tym, że kolejka jest pusta. Wprowadzenie rozmiaru kolejki oraz nowego elementu lepiej realizować za pomocą dwóch obiektów: okienka typu NumericUpDown i klawiszu typu Button z napisem Akceptuj. Lepiej obydwa obiekty włożyć do obiektu typu GroupBox z napisem "Rozmiar kolejki". Do wyświetlenia zawartości kolejki oraz elementów na początku i końcu kolejki jest wygodnie korzystać z obiektu typu ListBox. Początku i końcu kolejki może odpowiadać zaznaczony wiersz ListBox a. Wprowadzenie nowego elementu lepiej realizować za pomocą dwóch obiektów: okienka typu NumericUpDown i klawiszu typu Button z napisem Dodaj. Odczyt elementu z kolejki możną inicjować naciśnięciem klawiszu "Odczyt" typu Button. Odczytaną wartość można pokazać w okienku typu TextBox. Bazowe operacje na kolejce powinny być realizowane ze sprawdzaniem, czy jest kolejka pusta oraz czy jest kolejka zapełniona. Do wyświetlenia tekstów komunikatów można dodać do formularza obiekt typu StatusBar. Wyświetlenie komunikatu w obiekcie typu StatusBar: StatusBar1.Text = "..." Inny sposób wyświetlenia tekstów komunikatów - wykorzystanie standardowej funkcji MsgBox: MsgBox("...",MsgBoxStyle.OKOnly, "Komunikat") Jeszcze jeden sposób wyświetlenia tekstów komunikatów - wykorzystanie dodatkowego formularza: Indeksom kolejki mogą odpowiadać dwa zaznaczonych wierszy ListBox a. Aby wyświetlić dwa wierszy w obiekcie typu ListBox, właściwość SelectionMode musi być ustawiona na "MultiSimple". Wierszy w obiekcie typu ListBox należy zaznaczać przez metodę SetSelected. Przykładowo: ListBox1.SetSelected(0,True) 'zaznaczony jest pierwszy wiersz z indeksem 0 ListBox1.SetSelected(0,False) 'zdejmowanie zaznaczenia wierszu 0 ListBox1.SetSelected(2,True) 'zaznaczony jest trzeci wiersz z indeksem 2 Należy ustawić na False właściwość Enabled obiektu ListBox1, aby użytkownik nie mógł zaznaczać wierszy myszą.

13 Zmienne do przechowywania indeksów kolejki oraz zmienną do przechowywania rozmiaru kolejki należy zadeklarować w klasie formularza, na przykład: Dim jpk As Integer 'indeks początku kolejki Dim jkk As Integer 'indeks końca kolejki Dim RK As Integer 'rozmiar kolejki W przypadku korzystania z obiektu typu ListBox do wyświetlenia zawartości kolejki nie jest potrzebna tablica kolejki - role tej tablicy spełnia obiekt ListBox1. Warunek "czy jest kolejka pusta" sprawdzamy następująco: If jpk=jkk Then ''' komunikat "Kolejka jest pusta" ''' instrukcje odczytu elementu z kolejki Warunek "czy jest kolejka zapełniona" sprawdzamy następująco: If jkk>=rk Then ''' komunikat "Kolejka jest zapełniona" ''' instrukcje dodawania elementu do kolejki b) Oprogramować bazowe operacje Zmienne do przechowywania indeksów elementów na początku i końcu kolejki oraz rozmiaru kolejki należy zadeklarować w klasie formularza, na przykład: Dim RK As Integer Dim jpk As Integer = 0 Dim jkk As Integer = 0 Tablica - kolejka nie jest potrzebna - role tej tablicy spełnia obiekt ListBox1. Po odczytaniu lub zapisywaniu do kolejki indeks początku lub końcu kolejki jest zwiększany o jeden i dlatego w przypadku kolejki liczba wierszy w obiekcie typu ListBox musi być o jeden większa niż maksymalny rozmiar kolejki. Wewnątrz procedury, którą tworzy system w odpowiedzi na podwójne klikniecie klawiszu Akceptuj, należy wpisać następujące instrukcji do wprowadzenia rozmiaru kolejki: RK = NumericUpDown1.Value ListBox1.Items.Clear() Dim I As Integer For I = 0 To RS ListBox1.Items.Add(0) Next I ListBox1.SelectedIndex = 0 W przytoczonej procedurze ma miejsce dodawanie do ListBox a pustych elementów w ilości większej o jeden wprowadzonemu rozmiarowi kolejki. Do tej procedury należy dodać ustawienie początkowe indeksów kolejki: jpk = 0 jkk = 0

14 Aby dodać do kolejki nowy element korzystamy z dwóch instrukcji: 1) zapisywanie do tablicy kolejki nowego elementu według indeksu jkk końca kolejki, 2) zwiększenie indeksu jkk końca kolejki o jeden. Instrukcji należy rozmieścić wewnątrz procedury, którą tworzy system w odpowiedzi na podwójne klikniecie klawiszu Dodaj : Dim elem As Integer = NumericUpDown2.Value If jkk >= RK Then ListBox1.Items(jkk) = elem.tostring() ListBox1.SetSelected(jkk, False) jkk += 1 ListBox1.SetSelected(jkk, True) ListBox1.SetSelected(jpk, True) W celu odejmowania elementu od kolejki korzystamy z dwóch instrukcji: 1) odczyt z tablicy kolejki elementu według indeksu jpk początku kolejki, 2) zwiększenie indeksu jpk początku kolejki o jeden.. Tekst procedury, wywoływanej systemem po naciśnięciu klawiszu "Odczyt": Dim str As String If jpk = jkk Then TextBox3.Text = ListBox1.Items(jpk).ToString() ' wartość w postaci tekstowej ListBox1.SetSelected(jpk, False) jpk += 1 ListBox1.SetSelected(jpk, True) ListBox1.SetSelected(jkk, True) c) Eksperyment 1. Wprowadzić rozmiar kolejki równy Wypróbować odczyt elementu z kolejki i otrzymać komunikat, że kolejka jest pusta. 3. Wprowadzić do kolejki 3-5 elementów danych (liczb) sprawdzając poprawność zapisywania i przemieszczenia wskaźnika końca kolejki. 4. Odczytywać z kolejki 2-3 elementów danych (liczb) sprawdzając poprawność wyprowadzenia i przemieszczenia wskaźnika początku kolejki. 5. Wprowadzać do kolejki elementy danych (liczby) do otrzymania komunikatu o przepełnieniu kolejki. Wypróbować projekt w trybie Build / Build Solution. Uruchomić program w trybie Debug / Start. Uwaga. Jeżeli w trybie Build... otrzymujemy komunikat Sub Main not found in..., to należy nacisnąć Project /...Properties.. i na zakładce Application w polu Startup form wybrać nazwę głównego formularza. Zapisać projekt w trybie File / Save All. Wyprodukować EXE - plik w trybie Build / Build nazwa_projektu. Pokazać pracujący program prowadzącemu.

15 Wariant "Kolejka, lista" a) Obiekty graficzne Wywołać środowisko Microsoft Visual Studio Wybrać punkt menu File / New / Project.., zaznaczyć język programowania Visual Basic, rodzaj aplikacji Windows Application, wprowadzić na dole okna nazwę projektu, na przykład ProjektKolejka, i katalog do umieszczenia projektu. Wprowadzić nagłówek formularzu Kolejka. Wariant "lista". Dodać do formularza obiekty graficzne: - do wprowadzenia rozmiaru kolejki, - do wyświetlenia zawartości kolejki i elementów na początku i końcu kolejki, - do wprowadzenia nowego elementu w celu zapisywania do kolejki, - do komunikowania o przepełnieniu kolejki, - do odczytu elementu z kolejki, - do wyświetlenia elementu odczytanego z kolejki, - do komunikowania o tym, że kolejka jest pusta. Wprowadzenie rozmiaru kolejki oraz nowego elementu lepiej realizować za pomocą dwóch obiektów: okienka typu NumericUpDown i klawiszu typu Button z napisem Akceptuj. Lepiej obydwa obiekty włożyć do obiektu typu GroupBox z napisem "Rozmiar kolejki". Do wyświetlenia zawartości kolejki oraz elementów na początku i końcu kolejki jest wygodnie korzystać z obiektu typu ListBox. Początku i końcu kolejki może odpowiadać zaznaczony wiersz ListBox a. Wprowadzenie nowego elementu lepiej realizować za pomocą dwóch obiektów: okienka typu NumericUpDown i klawiszu typu Button z napisem Dodaj. Odczyt elementu z kolejki możną inicjować naciśnięciem klawiszu "Odczyt" typu Button. Odczytaną wartość można pokazać w okienku typu TextBox. Bazowe operacje na kolejce powinny być realizowane ze sprawdzaniem, czy jest kolejka pusta oraz czy jest kolejka zapełniona. Do wyświetlenia tekstów komunikatów można dodać do formularza obiekt typu StatusBar. Wyświetlenie komunikatu w obiekcie typu StatusBar: StatusBar1.Text = "..." Inny sposób wyświetlenia tekstów komunikatów - wykorzystanie standardowej funkcji MsgBox: MsgBox("...",MsgBoxStyle.OKOnly, "Komunikat") Jeszcze jeden sposób wyświetlenia tekstów komunikatów - wykorzystanie dodatkowego formularza: Indeksom kolejki mogą odpowiadać dwa zaznaczonych wierszy ListBox a. Aby wyświetlić dwa wierszy w obiekcie typu ListBox, właściwość SelectionMode musi być ustawiona na "MultiSimple". Wierszy w obiekcie typu ListBox należy zaznaczać przez metodę SetSelected. Przykładowo: ListBox1.SetSelected(0,True) 'zaznaczony jest pierwszy wiersz z indeksem 0 ListBox1.SetSelected(0,False) 'zdejmowanie zaznaczenia wierszu 0 ListBox1.SetSelected(2,True) 'zaznaczony jest trzeci wiersz z indeksem 2

16 Należy ustawić na False właściwość Enabled obiektu ListBox1, aby użytkownik nie mógł zaznaczać wierszy myszą. Zmienną do przechowywania rozmiaru kolejki należy zadeklarować w klasie formularza, na przykład: Dim RK As Integer = 0 'rozmiar kolejki Obiekt ListBox1 typu ListBox przeznaczymy do wyświetlenia zawartości kolejki, której elementy będą rozproszone w elementach listy. W przypadku korzystania z obiektu ListBox1 nie są potrzebne indeksy kolejki. Zadeklarujemy element listy: Structure selem 'struktura elementu listy Dim dana As Integer 'pole danych Dim nast As Object 'referencja do elementu następnego 'konstruktor: Public Sub New(ByVal d As Integer, ByRef p As Object) dana = d nast = p End Structure Zadeklarujemy referencje do pierwszego i ostatniego elementu listy - końca i początku kolejki: Dim ppk As Object = Nothing 'referencje do ostatniego elementu listy - początku kolejki Dim pkk As Object = Nothing 'referencje do pierwszego elementu listy - końca kolejki W języku VB/NET są trudności z porównaniem referencji, którą (porównanie) jest potrzebne w operacjach kolejki na bazie listy. Aby znaleźć element listy, na który wskazuje referencja ppk, jest potrzebny przegląd listy. Problem tkwi w tym, że operator przypisania w języku VB/NET produkuje kopię obiektu wskazanego z prawej strony operatora. Instrukcja typu pt = ppk powoduje kopiowanie do obiektu pt całego łańcucha elementów listy. Instrukcja typu pt = pt.nast w cyklu przeglądu listy powoduje za każdym razem nową alokację elementu pt i kopiowanie do nowego obiektu pt pozostałego łańcucha z elementów listy. W wyniku nowej alokacji element pt jest oderwany od pierwszych elementów listy. Instrukcja typu pt.nast = p podłącza dodawany element listy do aktualnego elementu pt, ale ten element w wyniku ostatniego kopiowania jest oderwany od listy. Brak bezpośrednich operacji na adresach (wskaźnikach) jest wielką wadą języka VB/NET. W celu rozwiązania problemu włóżmy element listy w sztuczny obiekt, który będzie służyć jako otoczka elementu listy. Wykonanie operatora przypisania dla obiektu-otoczki będzie powodować alokację nowego obiektu-otoczki i "oderwanie" otoczek, ale wewnątrz otoczek nie będą zmienione wartości referencji do elementów listy. Pomysłowi odpowiada niżej przytoczona struktura spelem: Structure spelem 'struktura - otoczka Public ps As Object Public Sub New(ByVal d As Integer) 'konstruktor otoczki ps = New selem(d, Nothing) 'alokacja elementu listy 'ustawienie pola danych: Public Sub UstDana(ByVal nowa As Integer) ps.dana = nowa 'odczyt pola danych: Public Function PodajDana() As Integer Return ps.dana End Function 'ustawienie następnika: Public Sub UstawNast(ByVal pnowy As Object) ps.nast = pnowy

17 'odczyt następnika: Public Function PodajNast() As Object Return ps.nast End Function Public Function CzyNastZero() As Boolean Return ps.nast Is Nothing End Function Public Function CzyNastJestTen(ByVal p2 As Object) As Boolean Return ps.nast.ps Is p2.ps End Function Public Function CzyTenSamy(ByVal p2 As Object) As Boolean Return ps Is p2.ps End Function End Structure Jak widać, struktura spelem zawiera dużą ilość metod dla operacji na schowanym w otoczce elemencie listy. Warunek "czy jest kolejka pusta" sprawdzamy następująco: If ppk Is Nothing Or pkk Is Nothing Then ''' komunikat "Kolejka jest pusta" ''' instrukcje odczytu elementu z kolejki Warunek "czy jest kolejka zapełniona" sprawdzamy następująco: Dim rr As Integer rr = fobliczrozmiar() If rr = RK Then ''' komunikat "Kolejka jest zapełniona" ''' instrukcje dodawania elementu do kolejki gdzie fobliczrozmiar jest funkcją obliczenia rozmiaru listy: Private Function fobliczrozmiar() As Integer Dim I As Integer = 0 Dim p As Object = pkk 'referencja tymczasowa While Not p Is Nothing p = p.podajnast() I += 1 End While Return I End Function Wprowadzenie rozmiaru kolejki: Private Sub ButtonAkceptuj_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonAkceptuj.Click RS = NumericUpDown1.Value fpokazliste() Funkcja wyświetlenia zawartości kolejki: Private Sub fpokazliste() ListBox1.Items.Clear()

18 Dim p As Object = pkk 'referencja tymczasowa While Not p Is Nothing Dim elem As Integer = p.podajdana() ListBox1.Items.Add(elem) p = p.podajnast() End While If Not pkk Is Nothing Then ListBox1.SetSelected(0, True) Dim rr As Integer rr = fobliczrozmiar() If rr > 0 Then ListBox1.SetSelected(rr - 1, True) b) Oprogramować bazowe operacje Dodawanie elementu do kolejki jest równoważnie dodawaniu elementu na początku listy: Private Sub ButtonDodaj_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonDodaj.Click Dim str As String = TextBox2.Text Dim elem As Integer = CInt(str) Dim nn As Integer nn = fobliczrozmiar() If nn >= RK Then Dim p As Object = Nothing 'referencja tymczasowa p = New spelem(elem) If ppk Is Nothing Then ppk = p p.ustawnast(pkk) pkk = p fpokazliste() Odejmowanie elementu od kolejki jest równoważnie odejmowaniu elementu z końca listy: Private Sub ButtonOdczyt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonOdczyt.Click Dim str As String If pkk Is Nothing Or ppk Is Nothing Then TextBox3.Text = "" MsgBox("Kolejka jest pusta", MsgBoxStyle.OKOnly, "Komunikat") ' ' Dim elem As Integer = ppk.podajdana() TextBox3.Text = elem.tostring() Dim p As Object = pkk 'referencja tymczasowa If p.czytensamy(ppk) Then ppk = Nothing pkk = Nothing

19 While Not p.czynastjestten(ppk) p = p.podajnast() End While p.ustawnast(nothing) ppk = p fpokazliste() c) Eksperyment 1. Wprowadzić rozmiar kolejki równy Wypróbować odczyt elementu z kolejki i otrzymać komunikat, że kolejka jest pusta. 3. Wprowadzić do kolejki 3-5 elementów danych (liczb) sprawdzając poprawność zapisywania i przemieszczenia wskaźnika końca kolejki. 4. Odczytywać z kolejki 2-3 elementów danych (liczb) sprawdzając poprawność wyprowadzenia i przemieszczenia wskaźnika początku kolejki. 5. Wprowadzać do kolejki elementy danych (liczby) do otrzymania komunikatu o przepełnieniu kolejki. Wypróbować projekt w trybie Build / Build Solution. Uruchomić program w trybie Debug / Start. Uwaga. Jeżeli w trybie Build... otrzymujemy komunikat Sub Main not found in..., to należy nacisnąć Project /...Properties.. i na zakładce Application w polu Startup form wybrać nazwę głównego formularza. Zapisać projekt w trybie File / Save All. Wyprodukować EXE - plik w trybie Build / Build nazwa_projektu. Pokazać pracujący program prowadzącemu.

20 Załącznik Stos Stosem (ang. stack) programowym nazywamy obszar pamięci komputerowej, do którego możemy zapisywać kolejno porcje danych i czytać te porcji w kolejności ostatni zapisany - pierwszy przeczytany (ang. Last Input, First Output - LIFO). Typowymi operacjami nad danymi zachowanymi na stosie są: - zapisywanie (położenie, załadowanie) na stos, - czytanie (zdejmowanie) ze stosu, - czytanie elementu na wierzchu stosu, - sprawdzanie, czy stos jest pusty, - sprawdzanie, czy stos nie jest przepełniony. Stos z wykorzystaniem tablicy Jeżeli element danych zajmuje mniej miejsca niż możliwe miejsce w komórce pamięci, to do przechowywania elementu danych wykorzystuje się cała komórka. Na przykład jednobajtowa zmienna typu char będzie zapisywana jako młodszy bajt w 4-bajtowej komórce 32-bitowej pamięci operacyjnej. W przypadku, kiedy rozmiar elementu danych jest większy niż rozmiar komórki pamięci, to element będzie zapisywany w kolejnych komórkach stosu. Grupa komórek stosu zajmowanych jednym elementem nazywa się ramką (ang. frame) stosu. Zwykle ramki powstają przy zapisywaniu do stosu danych typu struktura. Jeżeli ramki są różnego rozmiaru, to ich obsługiwanie w programie nie jest proste. W związku z tym programista zwykle korzysta z innej metody zapisywania do stosu złożonych danych - metody zapisywania wskaźników na elementy danych, ponieważ wskaźniki (tj. adresy) mają jednakowe rozmiary, na przykład 4 bajty (32-bity). Same elementy danych mogą być zachowane w innych obszarach pamięci. Stos można realizować na podstawie tablicy lub dwukierunkowej listy. Lista dwukierunkowa działa jako stos, jeżeli nowy element dodajemy na końcu listy i zdejmujemy element też z końca. Wariant realizacji stosu na bazie listy dwukierunkowej wybiera się tylko w przypadku, jeżeli w realizacji algorytmu już są wykorzystywane listy, ponieważ stos na bazie tablicy działa szybciej. Dla stosu tablicowego (stosu na podstawie tablicy) jest potrzebny wskaźnik (indeks) pozycji wierzchu stosu. Indeks pozycji wierzchu stosu (krótko, indeks stosu) wskazuje na miejsce (indeks) w tablicy, w którym było wykonane ostatnie zapisywanie. W procesie zapisywania do stosu najpierw indeks stosu zwiększa się o jeden, a następnie według temu indeksowi zapisuje się nowy element. W przypadku czytania ze stosu najpierw indeks stosu wykorzystuje się do czytania z tablicy, a następnie indeks stosu zmniejsza się o jeden. Jasne, że początkowa wartość indeksu stosu powinna być równa (-1). Ta wartość indeksu stosu wskazuje też na stan stos jest pusty. Przepełnienie stosu nastąpi, jeżeli indeks stosu będzie równy rozmiarowi tablicy, tj. indeks stosu pokaże na miejsce poza tablicą. Realizacja w języku Visual Basic stosu tablicowego dla zmiennych typu Double Dim RS As Integer RS = 1000 'rozmiar stosu Dim stos() As Double 'stos - tablica ReDim stos(rs - 1) Dim js As Integer js = -1 'definicja indeksu stosu Dim dd As Double dd = 0.1 '... js = js + 1 stos(js) = dd 'odkładanie dd" na stos '... dd = stos(js) js = js - 1 'zdejmowanie dd" ze stosu '... If js > -1 Then 'sprawdzanie czy stos pusty?" dd = stos(js) 'pobranie dd" z frontu stosu '...

21 Stos z wykorzystaniem listy Lista działa jako stos, jeżeli nowy element danych jest dodawany i zdejmowany na początku lub na końcu listy. Rys. 1 pokazuje stany stosu z wykorzystaniem listy po wykonaniu dwóch operacji dodawania elementów i jednej operacji zdejmowania elementu. Rys. 1. Stany stosu z wykorzystaniem listy: stos pusty (a), stos po dodaniu elementu (b), stos po dodaniu jeszcze jednego elementu (c), stos po zdejmowaniu elementu (d) Poniższy przykład zawiera deklarację stosu jako klasy Stos. W metodach klasy są zaimplementowane operacje na stosie. Przykład w języku C++. Stos z wykorzystaniem listy struct sel { int liczba; /* pole danych */ sel* nast; /* wskaźnik na następny element */ sel(int elem) {liczba=elem; nast=null;} /* konstruktor */ }; class Stos { private: sel* Pocz;/*atrybut klasy, wskaźnik na początek listy*/ public: Stos() {Pocz=NULL;} ~Stos() { while (Pocz) { sel* pp=pocz; Pocz=pp->nast; delete pp; } } void Dodaj(sEl* pel) { if (pel) {pel->nast=pocz; Pocz=pel;}} sel* Zdejmuj() {sel* pp=pocz; if (pp) {Pocz=pp->nast; pp->nast=null;} return(pp);} sel* PodajWierzch() {return(pocz);} }; Kolejka Kolejką (ang. queue) programową nazywamy obszar pamięci komputerowej, do którego możemy zapisywać kolejno porcje danych i czytać te porcji w kolejności pierwszy zapisany - pierwszy przeczytany (ang. First Input, First Output - FIFO). Typowe operacje na danych zachowanych w kolejce: - zapisywanie do kolejki, - czytanie z kolejki, - sprawdzanie, czy kolejka jest pusta, - sprawdzanie, czy kolejka nie jest zapełniona. Kolejkę można realizować na podstawie tablicy lub jednokierunkowej listy. Lista jednokierunkowa działa jako kolejka, jeżeli nowy element dodajemy na końcu listy, a bierzemy element z początku. Wariant realizacji kolejki na bazie listy jednokierunkowej wybiera się tylko w przypadku, jeżeli w realizacji algorytmu już wykorzystywane były listy, ponieważ kolejka na bazie tablicy działa zasadniczo szybciej. Kolejka z wykorzystaniem tablicy Dla kolejki tablicowej (kolejki na podstawie tablicy) są potrzebne dwa wskaźniki (indeksy): - wskaźnik (indeks) na koniec kolejki, - wskaźnik (indeks) na początek kolejki. Indeks końca kolejki wskazuje na wolne miejsce (indeks) w tablicy, na które można zapisywać. Indeks początku kolejki wskazuje na miejsce (indeks), z którego można czytać. W procesie zapisywania do kolejki najpierw zapisywany jest nowy element wskazany przez indeks końca, a następnie indeks końca kolejki zwiększany jest o jeden. Jeżeli indeks końca kolejki osiąga

22 koniec bufora kolejki, to powstaje przepełnienie kolejki. Często kolejka jest realizowana jako kolejka cykliczna. W tym przypadku zamiast komunikatu o przepełnieniu kolejki indeks końca kolejki jest ustawiany na 0. W przypadku czytania z kolejki najpierw wykorzystywany jest indeks początku kolejki do czytania z tablicy, a następnie ten indeks zwiększany jest o jeden. Jeżeli indeks początku kolejki osiąga koniec bufory kolejki, to zamiast komunikatu o przepełnieniu kolejki ten indeks często jest ustawiany na 0. Jednakowa wartość indeksów kolejki wskazuje na stan kolejka jest pusta. Początkowa wartość indeksów kolejki jest ustawiana zwykle na 0. Zapełnienie kolejki nastąpi, jeżeli następna wartość indeksu końca kolejki będzie równa indeksowi początku kolejki. Realizacja w języku Visual Basic kolejki tablicowej dla zmiennych typu Double Dim RK As Integer = 1000 'rozmiar kolejki Dim kolej() As Double 'kolej - tablica ReDim kolej(rk - 1) 'kolej - tablica Dim jkk As Integer 'definicja indeksu końca kolejki jkk = 0 'zerowanie indeksu końca kolejki Dim jpk As Integer 'definicja indeksu początku kolejki jpk = 0 'zerowanie indeksu początku kolejki Dim dd As Double dd = 0.1 Dim dd2 As Double dd2 = 0 '... jkk = 0 jpk = 0 'zerowanie kolejki '... kolej(jkk) = dd 'zapisywanie dd" do kolejki jkk = jkk + 1 If jkk >= RK Then jkk = 0 lub komunikat o przepełnieniu '... If jpk <> jkk Then 'sprawdzanie czy kolejka pusta?" dd2 = kolej(jpk) 'odczyt dd" z frontu kolejki '... dd2 = kolej(jpk) 'pobranie dd" z kolejki jpk = jpk + 1 If jpk >= RK Then jpk = 0 lub komunikat o przepełnieniu '... Kolejka z wykorzystaniem listy Lista działa jako kolejka, jeżeli nowy element danych jest dodawany na końcu, a pobierany element danych jest odejmowany z początku listy, lub odwrotnie: element dodawany znajduje się na początku, a element pobierany - na końcu. Rys. 2 pokazuje stany kolejki z wykorzystaniem listy po wykonaniu trzech operacji dodawania elementów i jednej operacji pobierania elementu. Rys. 2. Stany kolejki z wykorzystaniem listy: kolejka pusta (a), kolejka po dodaniu elementu (b), kolejka po dodaniu jeszcze jednego elementu (c), kolejka po dodaniu jeszcze jednego elementu (d), kolejka po pobieraniu elementu (e)

23 Poniższy przykład zawiera deklarację kolejki jako klasy Kolejka. W metodach klasy są zaimplementowane operacji na kolejce. Przykład w języku C++. Kolejka z wykorzystaniem listy struct sel { int liczba; /* pole danych */ sel* nast; /* wskaźnik na następny element */ sel(int elem) {liczba=elem; nast=null;} /* konstruktor */ }; class Kolejka { private: sel* Pocz;/*atrybut klasy, wskaźnik na początek listy*/ public: Kolejka() {Pocz=NULL;} ~KolejList() { while (Pocz) { selkolej* pp=pocz; Pocz=pp->nast; delete pp; }} void Dodaj(sEl* pel) //dodawanie na początku listy {if (pel) {pel->nast=pocz; Pocz=pel;}} sel* Pobierz() //pobieranie z końca listy {sel* pp=pocz; sel* popsz=null; if (pp) while (pp->nast) {popsz=pp; pp=pp->nast;} if (popsz) popsz->nast=null; else Pocz=NULL; return(pp);} sel* PodajPierwszy() //pierwszy zapisany jest na końcu {sel* pp=pocz; if (pp) while (pp->nast) pp=pp->nast; return(pp);} sel* PodajOstatni() //ostatni zapisany jest na poczatku {return(pocz);} }; W przykładzie należy zwrócić uwagę, że wskaźnik Pocz wskazuje na początek listy, a nie kolejki; początek kolejki znajduje się na końcu listy.

Podstawy programowania. Ćwiczenie. Pojęcia bazowe. Języki programowania. Środowisko programowania Visual Studio

Podstawy programowania. Ćwiczenie. Pojęcia bazowe. Języki programowania. Środowisko programowania Visual Studio Podstawy programowania Ćwiczenie Pojęcia bazowe. Języki programowania. Środowisko programowania Visual Studio Tematy ćwiczenia algorytm, opis języka programowania praca ze środowiskiem, formularz, obiekty

Bardziej szczegółowo

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania 1) Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z podstawowymi elementami obiektowymi systemu Windows wykorzystując Visual Studio 2008 takimi jak: przyciski, pola tekstowe, okna pobierania danych

Bardziej szczegółowo

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka 1. Kompilacja aplikacji konsolowych w środowisku programistycznym Microsoft Visual Basic. Odszukaj w menu startowym systemu

Bardziej szczegółowo

Ćwiczenia laboratoryjne. Oprogramowanie i badanie prostych metod sortowania w tablicach

Ćwiczenia laboratoryjne. Oprogramowanie i badanie prostych metod sortowania w tablicach Ćwiczenia laboratoryjne Oprogramowanie i badanie prostych metod sortowania w tablicach Sprawozdanie Na każdym zajęciu laboratoryjnym sporządza się za pomocą edytora Word sprawozdanie. Bazowa zawartość

Bardziej szczegółowo

Tablice, DataGridView

Tablice, DataGridView Tablice, DataGridView Gdy rośnie liczba danych do przechowywania w programie, a następnie ich obrobienia - pojawiają się nowe struktury danych (moŝna by powiedzieć pojemniki na dane) zwane tablicami. Tablica

Bardziej szczegółowo

2. W oknie dialogowym Choose Toolbox Items w zakładce.net Framework Components naciskamy przycisk Browse...

2. W oknie dialogowym Choose Toolbox Items w zakładce.net Framework Components naciskamy przycisk Browse... KORZYSTANIE Z KONTROLKI.NET LENDEVICERS232 DODAWANIE KONTROLKI DO ZBIORU KOMPONENTÓW DOSTĘPNYCH W PALECIE TOOLBOX (ŚRODOWISKA PROGRAMISTYCZNE FIRMY MICROSOFT) W środowisku programistycznym (Visual C++,

Bardziej szczegółowo

Podstawy informatyki

Podstawy informatyki Podstawy informatyki Programowanie w języku Visual Basic.NET Instrukcja do zajęć laboratoryjnych Opracował: mgr inż. Jacek DIAKUN Ćwiczenie 1. Utworzyć program zawierający jedno okno i przycisk. Po kliknięciu

Bardziej szczegółowo

Klasa bazowa i klasy potomne - doskonalenie umiejtnoci projektowania i wykorzystania klas (45 min)

Klasa bazowa i klasy potomne - doskonalenie umiejtnoci projektowania i wykorzystania klas (45 min) Zadanie5_28 Klasa bazowa i klasy potomne - doskonalenie umiejtnoci projektowania i wykorzystania klas (45 min) Opis zadania Wykorzystaj gotowy projekt Nowe auto, a nastpnie zaprojektuj klas bazow NoweAuto

Bardziej szczegółowo

DataGridView. Aby dodawać kolumny wybieramy z listy zadań Add Column..., co wywoła okno dodawania kolumn, rys. 2. Rysunek 1

DataGridView. Aby dodawać kolumny wybieramy z listy zadań Add Column..., co wywoła okno dodawania kolumn, rys. 2. Rysunek 1 DataGridView Często potrzebujemy obiektu, który wyświetliłby tabelę zawierającą kilka kolumn i kilka wierszy. Dobrze do tego celu nadaje się obiekt DataGridView. Po przeniesieniu obiektu na formularz jest

Bardziej szczegółowo

Zadanie. Menu Plik niech posiada dwie pozycje: Tekstowy i Excel, a każda z nich niech posiada dwie pozycje Otwórz i Zapisz, patrz rys. 2.

Zadanie. Menu Plik niech posiada dwie pozycje: Tekstowy i Excel, a każda z nich niech posiada dwie pozycje Otwórz i Zapisz, patrz rys. 2. Zadanie Wykonać aplikację posiadającą możliwość komunikowania się (zapis/odczyt) pomiędzy obiektem DataGridView, a plikiem tekstowym i plikiem MS Excel. Niech formularz ma postać jak na rys. 1. Rysunek

Bardziej szczegółowo

Technologie informacyjne

Technologie informacyjne Technologie informacyjne Programowanie w języku Visual Basic.NET Instrukcja do zajęć laboratoryjnych Opracował: Jacek DIAKUN Ćwiczenie. Utworzyć program zawierający jedno okno i przycisk. Po kliknięciu

Bardziej szczegółowo

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy - Narzędzie Windows Forms - Przykładowe aplikacje 1 Narzędzia Windows Form Windows Form jest narzędziem do tworzenia aplikacji dla

Bardziej szczegółowo

I - Microsoft Visual Studio C++

I - Microsoft Visual Studio C++ I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i

Bardziej szczegółowo

Platforma.NET laboratorium 1. Visual Basic.NET podstawowe elementy języka. Wykonanie warunkowe If End If

Platforma.NET laboratorium 1. Visual Basic.NET podstawowe elementy języka. Wykonanie warunkowe If End If Platforma.NET laboratorium 1 Prowadzący: mgr inż. Tomasz Jaworski Strona WWW: http://tjaworski.kis.p.lodz.pl/ Visual Basic.NET podstawowe elementy języka Poniżej przedstawiono podstawowe instrukcje sterujące

Bardziej szczegółowo

2. Kliknij Insert->Userform. Jeżeli Toolbox nie pojawi się automatycznie, kliknij View -> Toolbox. Otrzymany widok powinien być jak poniżej.

2. Kliknij Insert->Userform. Jeżeli Toolbox nie pojawi się automatycznie, kliknij View -> Toolbox. Otrzymany widok powinien być jak poniżej. Formularze VBA Przykład1 INTERAKTYWNY FORMULARZ Program tworzący interaktywny formularz. Objaśnienie: w dowolnym momencie można wprowadzić wartość w polu tekstowym ID, Excel VBA wczytuje odpowiedni rekord.

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

Kiedy potrzebne. Struktura (rekord) Struktura w języku C# Tablice struktur. struktura, kolekcja

Kiedy potrzebne. Struktura (rekord) Struktura w języku C# Tablice struktur. struktura, kolekcja 1 struktura, kolekcja Kiedy potrzebne Duża liczba danych takiego samego typu tablice a jak nieznana liczba elementów? dane zawierające wartości różnego typu (osoba: pesel, nazwisko, rok urodzenia, pracuje/niepracuje,

Bardziej szczegółowo

Wykład 9 Kolekcje, pliki tekstowe, Przykład: Notatnik

Wykład 9 Kolekcje, pliki tekstowe, Przykład: Notatnik Wizualne systemy programowania Wykład 9 Kolekcje, pliki tekstowe, Przykład: Notatnik 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Kolekcje List

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Cel zajęć. Celem zajęć jest zapoznanie się ze sposobem działania popularnych. Wprowadzenie teoretyczne. Rozważana w ramach niniejszych zajęć

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz Zagadnienia 1. Delegaty wiązane, właściwości indeksowane 2. Delegaty niewiązane 3. Nowa wersja kalkulatora, delegaty

Bardziej szczegółowo

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre) Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 07 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami tworzenia aplikacji okienkowych w C#. Wprowadzenie teoretyczne. Rozważana w

Bardziej szczegółowo

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy) Rok akademicki 2012/2013, Wykład nr 2 2/25 Plan wykładu nr 2 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013

Bardziej szczegółowo

Instrukcje pętli przykłady. Odgadywanie hasła. 1) Program pyta o hasło i podaje adres, gdy hasło poprawne lub komunikat o błędnym haśle.

Instrukcje pętli przykłady. Odgadywanie hasła. 1) Program pyta o hasło i podaje adres, gdy hasło poprawne lub komunikat o błędnym haśle. Instrukcje pętli przykłady. Odgadywanie hasła. 1) Program pyta o hasło i podaje adres, gdy hasło poprawne lub komunikat o błędnym haśle. Sub Hasla1() Dim wzor_hasla As String Dim haslo As String Dim adres

Bardziej szczegółowo

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Dr inż. Zofia Kruczkiewicz Dwa sposoby tworzenia apletów Dwa sposoby

Bardziej szczegółowo

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia Podstawy informatyki Elektrotechnika I rok Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia Katedra Energoelektroniki i Automatyki Systemów Przetwarzania Energii AGH Kraków 2017 Tematyka

Bardziej szczegółowo

Tablice. Jones Stygar na tropie zmiennych

Tablice. Jones Stygar na tropie zmiennych Tablice Jones Stygar na tropie zmiennych Czym jest tablica? Obecnie praktycznie wszystkie języki programowania obsługują tablice. W matematyce odpowiednikiem tablicy jednowymiarowej jest ciąg (lub wektor),

Bardziej szczegółowo

Visual Basic for Application (VBA)

Visual Basic for Application (VBA) Visual Basic for Application (VBA) http://dzono4.w.interia.pl Książka Visual Basic dla aplikacji w Office XP PL, autorzy: Edward C. Willett i Steve Cummings, Wyd. Helion Typy zmiennych Różne dane różnie

Bardziej szczegółowo

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface) Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface) 1. Udostępnianie wszystkich prywatnych atrybutów do prezentacji, wprowadzenie standardu nazewnictwa plików nazwy plików

Bardziej szczegółowo

Struktury. Przykład W8_1

Struktury. Przykład W8_1 Struktury Struktury pozwalają na grupowanie zmiennych różnych typów pod wspólną nazwą. To istotnie ułatwia organizacje danych, które okazują się w jednym miejscu kodu programu. To jest bardzo ważne dla

Bardziej szczegółowo

Instrukcja laboratoryjna nr.4

Instrukcja laboratoryjna nr.4 Języki programowania na platformie.net cz.2 2016/17 Instrukcja laboratoryjna nr.4 Język Visual Basic for.net Prowadzący: Tomasz Goluch Wersja: 3.1 I. Współpraca Visual Basic z C# Cel: Wykorzystanie w kodzie

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

Bardziej szczegółowo

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,

Bardziej szczegółowo

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. 1. Przygotowanie środowiska programistycznego. Zajęcia będą

Bardziej szczegółowo

Wykład 4: Klasy i Metody

Wykład 4: Klasy i Metody Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to

Bardziej szczegółowo

Aplikacje geodezyjne

Aplikacje geodezyjne Aplikacje geodezyjne 1. Azymut ze współrzędnych Utwórz nowy projekt o nazwie Azymut. W oknie rozmieść kontrolki mniej więcej zgodnie z rysunkiem. Obiekty mają zmienione następujące wartości cech: cecha

Bardziej szczegółowo

Instrukcja laboratoryjna cz.3

Instrukcja laboratoryjna cz.3 Języki programowania na platformie.net cz.2 2015/16 Instrukcja laboratoryjna cz.3 Język C++/CLI Prowadzący: Tomasz Goluch Wersja: 2.0 I. Utworzenie projektu C++/CLI z interfejsem graficznym WPF 1 Cel:

Bardziej szczegółowo

Laboratorium 1 - Programowanie proceduralne i obiektowe

Laboratorium 1 - Programowanie proceduralne i obiektowe Laboratorium 1 - Programowanie proceduralne i obiektowe mgr inż. Kajetan Kurus 4 marca 2014 1 Podstawy teoretyczne 1. Programowanie proceduralne (powtórzenie z poprzedniego semestru) (a) Czym się charakteryzuje?

Bardziej szczegółowo

Ćwiczenie: JavaScript Cookies (3x45 minut)

Ćwiczenie: JavaScript Cookies (3x45 minut) Ćwiczenie: JavaScript Cookies (3x45 minut) Cookies niewielkie porcje danych tekstowych, które mogą być przesyłane między serwerem a przeglądarką. Przeglądarka przechowuje te dane przez określony czas.

Bardziej szczegółowo

Języki i techniki programowania Ćwiczenia 2

Języki i techniki programowania Ćwiczenia 2 Języki i techniki programowania Ćwiczenia 2 Autor: Marcin Orchel Spis treści: Język C++... 5 Przekazywanie parametrów do funkcji... 5 Przekazywanie parametrów w Javie.... 5 Przekazywanie parametrów w c++...

Bardziej szczegółowo

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij. Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice

Bardziej szczegółowo

01 grid tablica grid. Copyright 2017, mgr inż. Janusz Bonarowski 1

01 grid tablica grid. Copyright 2017, mgr inż. Janusz Bonarowski 1 01 grid tablica grid Zadanie Wykonajmy aplikację posiadającą dwa obiekty DataGridView. Jeden o nazwie DataGridView1, będzie formularzem wejściowym, drugi o nazwie DataGridView2 będziemy używać jako element

Bardziej szczegółowo

Platforma.NET laboratorium 4 Aktualizacja: 15/11/2013. Visual Basic.NET dostęp do bazy danych. Baza Microsoft SQL Server Compact

Platforma.NET laboratorium 4 Aktualizacja: 15/11/2013. Visual Basic.NET dostęp do bazy danych. Baza Microsoft SQL Server Compact Platforma.NET laboratorium 4 Aktualizacja: 15/11/2013 Prowadzący: mgr inż. Tomasz Jaworski Strona WWW: http://tjaworski.kis.p.lodz.pl/ Visual Basic.NET dostęp do bazy danych Baza Microsoft SQL Server Compact

Bardziej szczegółowo

Zaawansowane aplikacje WWW - laboratorium

Zaawansowane aplikacje WWW - laboratorium Zaawansowane aplikacje WWW - laboratorium Przetwarzanie XML (część 2) Celem ćwiczenia jest przygotowanie aplikacji, która umożliwi odczyt i przetwarzanie pliku z zawartością XML. Aplikacja, napisana w

Bardziej szczegółowo

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main Język obiektowy Wykład 13 Programowanie obiektowe z lotu ptaka, str 1 James Gosling, Mike Sheridan, Patrick Naughton Sun Microsystems 1995(20latmłodszyodC) C jest językiem proceduralnym Java jest językiem

Bardziej szczegółowo

Podstawy programowania 2. Przygotował: mgr inż. Tomasz Michno

Podstawy programowania 2. Przygotował: mgr inż. Tomasz Michno Instrukcja laboratoryjna 2 Podstawy programowania 2 Temat: Zmienne dynamiczne tablica wskaźników i stos dynamiczny Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny 1.1 Tablice wskaźników Tablice

Bardziej szczegółowo

Informatyka II. Laboratorium Aplikacja okienkowa

Informatyka II. Laboratorium Aplikacja okienkowa Informatyka II Laboratorium Aplikacja okienkowa Założenia Program będzie obliczał obwód oraz pole trójkąta na podstawie podanych zmiennych. Użytkownik będzie poproszony o podanie długości boków trójkąta.

Bardziej szczegółowo

I. WSTĘP. Przykład 1. Przykład 2. Programowanie czyli tworzenie programów komputerowych (aplikacji komputerowych)

I. WSTĘP. Przykład 1. Przykład 2. Programowanie czyli tworzenie programów komputerowych (aplikacji komputerowych) I. WSTĘP Programowanie czyli tworzenie programów komputerowych (aplikacji komputerowych) Algorytm - sposób na osiągnięcie celu w pewnych ograniczonych krokach. Program komputerowy realizuje zawsze algorytm.

Bardziej szczegółowo

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki Typy wyliczeniowe Konwersje napis liczba Struktury, unie Scanf / printf Wskaźniki Typy wyliczeniowe Służą do łatwiejszej kontroli nad stałymi Ustawianie parametrów o ściśle określonym zbiorze wartości

Bardziej szczegółowo

Ten odcinek Akademii PC Kuriera poświęcony zostanie tworzeniu i wykorzystaniu funkcji i procedur w języku Visual Basic.NET.

Ten odcinek Akademii PC Kuriera poświęcony zostanie tworzeniu i wykorzystaniu funkcji i procedur w języku Visual Basic.NET. Ten odcinek Akademii PC Kuriera poświęcony zostanie tworzeniu i wykorzystaniu funkcji i procedur w języku Visual Basic.NET. Czym są procedury? Efektywne tworzenie często polegać będzie na ponownym wykorzystywaniu

Bardziej szczegółowo

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem. WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM NetBeans Wykonał: Jacek Ventzke informatyka sem. VI 1. Uruchamiamy program NetBeans (tu wersja 6.8 ) 2. Tworzymy

Bardziej szczegółowo

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe Wydział Zarządzania AGH Katedra Informatyki Stosowanej Podstawy VBA cz. 2 Programowanie 1 Program wykładu Typy danych Wyrażenia Operatory 2 VBA Visual Basic dla aplikacji (VBA) firmy Microsoft jest językiem

Bardziej szczegółowo

Instrukcje cykliczne (pętle) WHILE...END WHILE

Instrukcje cykliczne (pętle) WHILE...END WHILE Instrukcje cykliczne (pętle) Pętle pozwalają na powtarzanie fragmentu kodu programu. PĘTLE LOGICZNE WHILE...END WHILE While (warunek)...... End While Pętla będzie się wykonywała dopóki warunek jest spełniony.

Bardziej szczegółowo

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania 1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja nie ma parametru i zwraca wartość na zewnątrz. nie ma parametru i nie zwraca wartości na zewnątrz. ma parametr o nazwie void i zwraca

Bardziej szczegółowo

Wskaźniki. Informatyka

Wskaźniki. Informatyka Materiały Wskaźniki Informatyka Wskaźnik z punktu widzenia programisty jest grupą komórek pamięci (rozmiar wskaźnika zależy od architektury procesora, najczęściej są to dwa lub cztery bajty ), które mogą

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW

ZASADY PROGRAMOWANIA KOMPUTERÓW POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.

Bardziej szczegółowo

Klasy i obiekty cz II

Klasy i obiekty cz II Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Klasy i obiekty cz II Hermetyzacja, mutatory, akcesory, ArrayList Rozwijamy aplikację Chcemy, aby obiekty klasy

Bardziej szczegółowo

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float

Bardziej szczegółowo

Wykład 5 Okna MDI i SDI, dziedziczenie

Wykład 5 Okna MDI i SDI, dziedziczenie Wykład 5 Okna MDI i SDI, dziedziczenie Autor: Zofia Kruczkiewicz Zagadnienia 1. Aplikacja wielookienkowa. Zakładanie projektu typu CLR Windows Forms 1.1. Aplikacja typu MDI 1.2. Aplikacja typu SDI 2. Dziedziczenie

Bardziej szczegółowo

Wprowadzenie do systemu Delphi

Wprowadzenie do systemu Delphi 50 Rozdział 4 Wprowadzenie do systemu Delphi W niniejszym rozdziale zilustrujemy na prostych przykładach proces programowania wizualno-obiektowego w systemie Delphi. 4.1 Znajdowanie elementu maksymalnego

Bardziej szczegółowo

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p. Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja

Bardziej szczegółowo

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.) Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.) Kontenery - - wektor vector - - lista list - - kolejka queue - - stos stack Kontener asocjacyjny map 2016-01-08 Bazy danych-1 W5 1 Kontenery W programowaniu

Bardziej szczegółowo

Działki Przygotowanie organizacyjne

Działki Przygotowanie organizacyjne Celem poniższego ćwiczenia jest nauczenie rozwiązywania zadań maturalnych z wykorzystaniem arkusza kalkulacyjnego. Jako przykład wykorzystano zadanie maturalne o działkach z matury w 2015 roku. Działki

Bardziej szczegółowo

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h] 1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie

Bardziej szczegółowo

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów Operatory są elementami języka C++. Istnieje zasada, że z elementami języka, takimi jak np. słowa kluczowe, nie można dokonywać żadnych zmian, przeciążeń, itp. PRZECIĄŻANIE OPERATORÓW Ale dla operatorów

Bardziej szczegółowo

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;

Bardziej szczegółowo

Programowanie i struktury danych

Programowanie i struktury danych Programowanie i struktury danych 1 / 19 Dynamiczne struktury danych Dynamiczną strukturą danych nazywamy taka strukturę danych, której rozmiar, a więc liczba przechowywanych w niej danych, może się dowolnie

Bardziej szczegółowo

Plik->Opcje->Zakladka Główne->Dostosuj Wstążkę Zaznaczamy kwadracik Developer na liscie po prawej stronie. Klikamy OK.

Plik->Opcje->Zakladka Główne->Dostosuj Wstążkę Zaznaczamy kwadracik Developer na liscie po prawej stronie. Klikamy OK. Aktywacja zakładki Developer. Plik->Opcje->Zakladka Główne->Dostosuj Wstążkę Zaznaczamy kwadracik Developer na liscie po prawej stronie. Klikamy OK. Rejestracja makr. Klikamy Zakladke Developer. Klikamy

Bardziej szczegółowo

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r. M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza

Bardziej szczegółowo

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka 1. Kompilacja aplikacji konsolowych w środowisku programistycznym Microsoft Visual Basic. Odszukaj w menu startowym systemu

Bardziej szczegółowo

TEMAT : KLASY DZIEDZICZENIE

TEMAT : KLASY DZIEDZICZENIE TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą

Bardziej szczegółowo

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki Konwersje napis liczba Struktury, unie Scanf / printf Wskaźniki Konwersje liczba napis Ćwiczenia 1. Napisz aplikację, która na wejściu dostaje napis postaci W Roku Pańskim 1345, władca Henryk 12,

Bardziej szczegółowo

Lab 9 Podstawy Programowania

Lab 9 Podstawy Programowania Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany

Bardziej szczegółowo

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018 Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 08 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami powiązania modelu obiektowego z modelem okienkowym w C#. Wprowadzenie teoretyczne.

Bardziej szczegółowo

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Obliczenia równoległe w Microsoft Visual Basic Środowisko Microsoft Visual Studio 2010 i nowsze umożliwia zrównoleglenie obliczeń na wiele rdzeni procesorów. Służą do tego odpowiednie metody dostępne wraz

Bardziej szczegółowo

Programowanie w środowisku graficznym GUI

Programowanie w środowisku graficznym GUI Programowanie w środowisku graficznym GUI 1. Wprowadzenie Język C# jest stworzony do szybkiego tworzenia aplikacji przy pomocy zintegrowanego środowiska programistycznego IDE (ang. Itegrated Development

Bardziej szczegółowo

Palindromy. Przykładowe rozwiązanie

Palindromy. Przykładowe rozwiązanie Palindromy Palindromem (z greckiego) nazywamy wyraz, który tak samo brzmi, gdy jest czytany wspak. Palindromami są na przykład takie wyrazy, jak kajak, zaraz, oko, zakaz, mam itp. Użytkownik wprowadza

Bardziej szczegółowo

Lista, Stos, Kolejka, Tablica Asocjacyjna

Lista, Stos, Kolejka, Tablica Asocjacyjna Lista, Stos, Kolejka, Tablica Asocjacyjna Listy Lista zbiór elementów tego samego typu może dynamicznie zmieniać rozmiar, pozwala na dostęp do poszczególnych elementów Typowo dwie implementacje: tablicowa,

Bardziej szczegółowo

Ćwiczenie VB3.4 Struktura Try...Catch, obiekt Err, metoda Err.Raise (Strukturalna obsługa wyjątków)

Ćwiczenie VB3.4 Struktura Try...Catch, obiekt Err, metoda Err.Raise (Strukturalna obsługa wyjątków) Ćwiczenie VB3.4 Struktura..., obiekt Err, metoda Err.Raise (Strukturalna obsługa wyjątków) Jeśli wpiszemy do okna tekstowego zamiast cyfr litery (np. abc), a następnie spróbujemy ten ciąg znaków przekonwertować

Bardziej szczegółowo

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe Algorytmy i złożoności Wykład 3. Listy jednokierunkowe Wstęp. Lista jednokierunkowa jest strukturą pozwalającą na pamiętanie danych w postaci uporzadkowanej, a także na bardzo szybkie wstawianie i usuwanie

Bardziej szczegółowo

3 Delegacje. 3.1 Tworzenie delegacji. 3.2 Skojarzenie delegacji z procedurą czy funkcją

3 Delegacje. 3.1 Tworzenie delegacji. 3.2 Skojarzenie delegacji z procedurą czy funkcją 3 Delegacje Delegacja to specjalny typ danych, który przechowuje referencję (adres) do procedury lub funkcji. W środowisku.net delegacja jest odpowiednikiem wskaźnika (pointer) do funkcji znanego z języka

Bardziej szczegółowo

Obsługa grafiki w Delphi, rysowanie na płótnie, obsługa myszki, zapisywanie obrazków do plików, bitmapy pozaekranowe.

Obsługa grafiki w Delphi, rysowanie na płótnie, obsługa myszki, zapisywanie obrazków do plików, bitmapy pozaekranowe. Programowanie Wizualno-Obiektowe (studia zaoczne - inżynieria komputerowa) Zajęcia z Delphi 5, program 1 Temat: Zadanie: Obsługa grafiki w Delphi, rysowanie na płótnie, obsługa myszki, zapisywanie obrazków

Bardziej szczegółowo

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Programowanie w C++ Wykład 5 Katarzyna Grzelak 26 marca 2018 9 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Pojęcia z poprzedniego wykładu Podział programu na funkcje podział na niezależne

Bardziej szczegółowo

Wykład 4. Klasa List Kolejki Stosy Słowniki

Wykład 4. Klasa List Kolejki Stosy Słowniki Wykład 4 Klasa List Kolejki Stosy Słowniki Klasa List Poważną niedogodnością tablic jako kolekcji danych jest fakt, że muszą one mieć stały rozmiar. Programista musi wiedzieć z góry ile miejsca powinien

Bardziej szczegółowo

Podstawy programowania skrót z wykładów:

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie

Bardziej szczegółowo

Informatyzacja Przedsiębiorstw

Informatyzacja Przedsiębiorstw Informatyzacja Przedsiębiorstw Microsoft Dynamics NAV 2013 Development Environment C/AL Izabela Szczęch Informatyzacja Przedsiębiorstw Strona 1 Spis treści 1 Informacje ogólne:... 3 1.1 Zmienne... 4 1.2

Bardziej szczegółowo

Informatyzacja Przedsiębiorstw

Informatyzacja Przedsiębiorstw Informatyzacja Przedsiębiorstw Microsoft Dynamics NAV 2016 Development Environment C/AL Izabela Szczęch Informatyzacja Przedsiębiorstw Strona 1 Plan zajęć 1 Informacje ogólne dotyczące środowiska deweloperskiego

Bardziej szczegółowo

Visual Basic for Application (VBA)

Visual Basic for Application (VBA) Visual Basic for Application (VBA) http://dzono4.w.interia.pl Książka Visual Basic dla aplikacji w Office XP PL, autorzy: Edward C. Willett i Steve Cummings, Wyd. Helion Typy zmiennych Różne dane różnie

Bardziej szczegółowo

Podstawy Programowania 2

Podstawy Programowania 2 Podstawy Programowania 2 Laboratorium 7 Instrukcja 6 Object Pascal Opracował: mgr inż. Leszek Ciopiński Wstęp: Programowanie obiektowe a programowanie strukturalne. W programowaniu strukturalnym, któremu

Bardziej szczegółowo

Podstawy Programowania

Podstawy Programowania Podstawy Programowania Monika Wrzosek Instytut Matematyki Uniwersytet Gdański Matematyka 2017/18 Monika Wrzosek (IM UG) Podstawy Programowania 1 / 119 Sprawy organizacyjne E-mail: mwrzosek@mat.ug.edu.pl

Bardziej szczegółowo

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład. Część XVII C++ Funkcje Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład. 2 3 Tworzymy deklarację i definicję funkcji o nazwie pobierzln() Funkcja

Bardziej szczegółowo

Programowanie w Javie

Programowanie w Javie Programowanie w Javie Andrzej Czajkowski Lista nr 0 Debugger w Javie Celem ćwiczenia jest poznanie podstawowych funkcji narzędzia debugera (odpluskwiacz) w środowisku Eclipse. Po ukończeniu ćwiczenia student

Bardziej szczegółowo

Wybieramy File->New->Project Wybieramy aplikację MFC->MFC Application jak na rysunku poniżej:

Wybieramy File->New->Project Wybieramy aplikację MFC->MFC Application jak na rysunku poniżej: Interfejs w MFC 1. Tworzenie nowego projektu Wybieramy File->New->Project Wybieramy aplikację MFC->MFC Application jak na rysunku poniżej: Następnie wybieramy opcje jak na rysunku: Następnie wybieramy

Bardziej szczegółowo

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 INFORMATYKA W SZKOLE Dr inż. Grażyna KRUPIŃSKA grazyna@fis.agh.edu.pl D-10 pokój 227 Podyplomowe Studia Pedagogiczne Sortowanie Dane wejściowe : trzy liczby w dowolnym porządku Dane wyjściowe: trzy liczby

Bardziej szczegółowo

Dynamiczne struktury danych

Dynamiczne struktury danych Dynamiczne struktury danych 391 Dynamiczne struktury danych Przez dynamiczne struktury danych rozumiemy proste i złożone struktury danych, którym pamięć jest przydzielana i zwalniana na żądanie w trakcie

Bardziej szczegółowo

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static), Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których

Bardziej szczegółowo