Ćwiczenie laboratoryjne. Oprogramowanie i badanie stosu lub kolejki w środowisku Visual Basic 2005
|
|
- Izabela Staniszewska
- 8 lat temu
- Przeglądów:
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 Tematy ćwiczenia algorytm, opis języka programowania praca ze środowiskiem, formularz, obiekty
Bardziej szczegółowoPolitechnika 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ółowoWprowadzenie 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 Sprawozdanie Na każdym zajęciu laboratoryjnym sporządza się za pomocą edytora Word sprawozdanie. Bazowa zawartość
Bardziej szczegółowoTablice, 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ółowo2. 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ółowoPodstawy 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ółowoKlasa 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ółowoDataGridView. 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ółowoZadanie. 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ółowoTechnologie 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
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ółowoI - 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ółowoPlatforma.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ółowo2. 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ółowoJę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ółowoKiedy 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ółowoWykł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ółowoProgramowanie 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ółowoTemat: 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ółowoWykł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ółowoUwagi 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ółowoProgramowanie 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ółowoDynamiczny 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ółowoInstrukcje 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ółowoSposoby 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ółowoPodstawy 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ółowoTablice. 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ółowoVisual 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ółowoBudowa 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ółowoStruktury. 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ółowoInstrukcja 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ółowoRozdział 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ółowoProgramowanie 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ółowoLaboratorium 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ółowoWykł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ółowoAplikacje 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ółowoInstrukcja 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ółowoLaboratorium 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) 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ółowoJę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ółowoStrona 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ółowo01 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ółowoPlatforma.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ółowoZaawansowane 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ółowoKompilacja 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ółowoPodstawy 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ółowoInformatyka 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ółowoI. 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ółowoTypy 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ółowoTen 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ółowoWYKONANIE 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ółowoWydział 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ółowoInstrukcje 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ółowo1. 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ółowoWskaź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ółowoZASADY 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ółowoKlasy 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ółowo1. 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ółowoWykł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ółowoWprowadzenie 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ółowoTechniki 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ółowoWykł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ółowoDział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ółowoLaboratorium 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ółowoC++ - 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ółowoKLASA 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ółowoProgramowanie 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ółowoProgramowanie 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ółowoPlik->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ółowoPodstawy 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ółowoWprowadzenie 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ółowoTEMAT : 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ółowoKonwersje 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ółowoLab 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ółowoInformatyka 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ółowoProgramowanie 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ółowoPrivate 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ółowoProgramowanie 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ółowoPalindromy. 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ółowoLista, 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..., 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ółowoAlgorytmy 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ółowo3 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ółowoObsł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ółowoProgramowanie 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ółowoWykł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ółowoPodstawy 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ółowoKLASA 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ółowoInformatyzacja 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ółowoInformatyzacja 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ółowoVisual 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ółowoPodstawy 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ółowoPodstawy 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ółowoCzęść 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ółowoProgramowanie 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ółowoWybieramy 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ółowoINFORMATYKA 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ółowoDynamiczne 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ółowoObszar 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