Laboratorium 6
1. Cel ćwiczenia
Celem ćwiczenia jest zapoznanie się z obsługą C.
2. Przykłady
Zad1
Napisz program liczący silnie iteracyjnie i rekurencyjnie. Na wejście programu podawana będzie liczba, która jest parametrem funkcji.
#include <stdio.h>
#include <conio.h>
int silniaiteracyjnie(int x)
{
int i,silnia = 1;
for(i=1; i<=x; i++)
{
silnia *= i;
}
return silnia;
}
int silniarekurencyjnie(int x)
{
if(x==0)
{
return 1;
}
else
{
return x*silniarekurencyjnie(x-1);
}
}
int main(void)
{
int a,b;
printf("Z jakiej liczby mam obliczyc silnie iteracyjnie i rekurencyjnie? Podac liczba >0\n");
scanf("%d",&a);
if(a>0){
b = silniaiteracyjnie(a);
printf("Silnia iteracyjnie = %d\n",b);
b = silniarekurencyjnie(a);
printf("Silnia rekurencyjnie = %d\n",b);
}
if(a<=0){
printf("Podaj liczbe poprawnie\n");
}
getch();
}
Zad2
Napisać program wczytujący napis, a następnie szyfrujący go przez kolejne pobieranie elementów z obu końców napisu (element z początku przed elementem z końca) aż do osiągnięcia środka napisu. Na przykład napis „Pozdrowienia” po zaszyfrowaniu „Paoiznderiow” (użyć pętli while).
#include <stdio.h>
#include <string.h>
int main(void){
char nap[80];
int i,j;
printf("Wprowadz komunikat:\n");
gets(nap);
/*szyfrowanie*/
i=0;j=strlen(nap)-1;
while(i<=j){
if(i<j)printf("%c%c",nap[i],nap[j]);
else printf("%c",nap[i]);
i++;j--;
}
return 0;
}
Zad3
Napisać program, który porównuje dwa napisy. Napisy są podawana jako parametry, int main(int argc, char *argv[ ]). Zastosować funkcję strcmp. Funkcja strcmp() zwraca liczbę mniejszą od zera, gdy s1 < s2, 0 gdy s1 jest taki sam jak s2 oraz liczbę większą od zera gdy s1 > s2.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[ ]){
int i;
if(argc!=3){
printf("Nalezy podac dwa argumenty.\n");
exit(1);
}
i=strcmp(argv[1], argv[2]);
if(i<0)printf("\n %s jest rozny od %s",argv[2],argv[1]);
else if(i>0)printf("\n jest rozny od < %s",argv[2],argv[1]);
else printf("\n Sa takie same");
return 0;
}
3. Program ćwiczenia
Zad4
Napisać program zliczający liczbę znaków spacji, przecinków oraz kropek w ciągu znaków. Do określenia kategorii znaku należy skorzystać z instrukcji switch.
Zad5
Napisać program, który pobiera 10 liczb z klawiatury, następnie wyświetla sumę liczb parzystych i liczb nieparzystych (użyć tablicy).
Zad6
Napisać program, który pyta o podanie hasła 3 razy. W przypadku gdy hasło zostaje źle wpisane wyświetla się napis „Dostęp zabroniony”. Jeśli hasło zostało dobrze wpisane wyświetla się napis „Logowanie powiodło się”.
Zad7
Napisać program „komputerowa książka telefoniczna”. Program będzie używać następujących danych
Char telefon [ ][2][40]={
”Jozef”,”622-1010”,
”Maciej”, ”622-1234”,
”Bernadetta”,”629-0125”,
”Luis”, ”628-7193”
}
Pobierać ma imię osoby, kolejno ma wyświetlać telefon danej osoby (użyć tablic).
Laboratorium 7
1. Cel ćwiczenia
Celem ćwiczenia jest zapoznanie się z obsługą C++.
2. Przykłady
Zad1
Program na przeliczanie wysokości podanej w stopach na wysokość w metrach.
#include <iostream.h>
int main()
{
int stopy; double metry;
double mnoznik = 0.3;
cout << "Podaj wysokosc w stopach: ";
cin >> stopy;
metry = stopy * mnoznik;
cout << "\n";
cout << stopy << " stop - to jest: " << metry << " metrow\n";
}
Zad2
Napisać program sprawdzający wysokość lotu samolotu. Należy przyjąć kryterium bezpiecznej wysokości i używając instrukcji if sprawdzić, czy podana wysokość jest bezpieczna. W przypadku, gdy wysokość będzie za niska, należy wyświetlić odpowiedni komunikat z wykorzystaniem ostrzeżenia.
#include <iostream.h>
int main()
{
int wys, ostrzezenie;
cout << "Na jakiej wysokosci lecimy ? [w metrach]: ";
cin >> wys;
if(wys < 1000)
{
cout << "\n" << wys << " metrow to za nisko !\n";
ostrzezenie = 1;
}
else
{
cout << "\nNa wysokosci " << wys
<< " metrow jestes juz bezpieczny \n";
ostrzezenie = 0;
}
cout << "Masz " << ostrzezenie
<< " ostrzezen \n";
if(ostrzezenie) cout << "Zwieksz wysokosc !";
}
Zad3
Napisać program, który rysuje gwiazdy (*) na niebie. Należy użyć instrukcji while.
#include <iostream.h>
int main()
{
int ile;
cout << "Ile gwiazd ma być na niebie ? : ";
cin >> ile;
cout << "\n Narysujmy je wszystkie "
<< ile << " : ";
while(ile)
{
cout << "*";
ile = ile - 1;
}
}
3. Program ćwiczenia
Zad4
Napisać program, który będzie kończył swoje działanie w przypadku podania oczekiwanej litery (uprzednio zdefiniowanej przez autora w kodzie programu). W przypadku podania innej litery program będzie cały czas działał. Należy użyć pętli do while.
Zad5
Korzystając z pętli for napisać program, który po podaniu określonej ilości paczek do wysłania, będzie informował o wysłaniu każdej z nich. Dla każdej paczki będzie to osobny komunikat. Np. dla paczki nr 4 może to być: „Paczka nr 4 została wysłana”.
Zad6
Napisać program, w którym poszczególnym liczbom przyporządkowujemy określone kolory. Następnie po podaniu liczby powinien wyświetlić się komunikat jaki kolor jest jej przypisany. W przypadku gdy tej liczbie nie jest przypisany żaden kolor, program powinien wyświetlić stosowny komunikat. Należy wykorzystać instrukcję switch.
Zad7
Napisać program obliczający obwód kwadratu, prostokąta i koła. W programie należy zrobić menu w którym użytkownik będzie miał możliwość wyboru figury, której pole ma być obliczone. Program ma również zawierać możliwość jego zakończenia. Oto przykładowe menu:
1 Pole kwadratu
2 Pole prostokąta
3 Pole kola
0 Wyjscie
Laboratorium 8
1. Cel ćwiczenia
Celem ćwiczenia jest zapoznanie się z obsługą C++.
2. Przykłady
Zad1
Napisać program przedstawiający tablicę o dziesięciu elementach i wypisujący zawartość każdego z nich.
#include <iostream.h>
int main ()
{
int t[10] ;
for( int i = 0 ; i < 10 ; i++)
t[i] = 15 * i ;
cout << "Wykaz zawartosci tablicy : \n" ;
for ( int k = 0 ; k < 10 ; k++)
{
cout << "Element tablicy o numerze : " << k
<< " ma wartosc " << t[k] << "\n" << endl ;
}
return 0 ;
}
Zad2
Wskaźniki. Ze wskaźnikami i adresami związane są dwa operatory:
operator referencji & zwracający adres zmiennej podanej po prawej stronie tego operatora.
operator dereferencji ∗ identyfikujący obszar wskazywany przez wskaźnik podany po prawej stronie tego operatora.
Np.:
int liczba ;
int ∗wskaźnik ;
wskaznik = &liczba; // przypisanie zmiennej wskaźnik
// adresu zmiennej liczba
∗wskaźnik = 10; // przypisanie 10 zawartości zmiennej
// wskazywanej przez wskaźnik
// tutaj równoważne liczba = 10
Przykładowy program wykorzystujący wskaźniki.
#include <iostream.h>
using namespace std ;
int main()
{
int obiekt_pierwszy = 2 ;
int obiekt_drugi = 5000 ;
int *wskaznik ; // wskaznik na obiekty typu int
wskaznik = &obiekt_pierwszy ;
// prosty wypis na ekran ;
cout << "obiekt_pierwszy = " << obiekt_pierwszy
<< "\n Wskaznik natomiast odczytal nastepujaca wartosc = "
<< *wskaznik << endl ;
obiekt_pierwszy = 20 ; // następuje zmiana wartości obiektu pierwszego
cout << "obiekt_pierwszy = "<< obiekt_pierwszy
<< "\n Wskaznik natomiast odczytal nastepujaca wartosc = "
<< *wskaznik << endl ;
*wskaznik = 55 ; // do tego na co pokazuje wskaznik wpisz 55
cout << "obiekt_pierwszy = " << obiekt_pierwszy
<< "\n Wskaznik natomiast odczytal nastepujaca wartosc = "
<< *wskaznik << endl ;
wskaznik = &obiekt_drugi ; //przestawienie wskaznika na obiekt drugi
cout << "obiekt_pierwszy = "<< obiekt_pierwszy
<< "\n Wskaznik natomiast odczytal nastepujaca wartosc = "
<< *wskaznik << endl ;
}
3. Program ćwiczenia
Zad3
Należy napisać program, który będzie przekazywał tablicę do funkcji (należy pamiętać, że tablice przesyła się podając funkcji tylko adres początku tej tablicy).
Np.:
Jeśli mamy funkcję, która spodziewa się jako argumentu tablicy liczb typu float:
void funkcja (float tablica_przykladowa [ ] ) ;
to taką funkcję można wywołać na przykład tak:
float tablica[ ] = { 8 , 4.2 , 7.25 , 9 } ;
funkcja (tablica) - następuje wywołanie funkcji.
Tablica ma posiadać 1500 elementów W programie należy umieścić funkcję, która treść każdego elementu tablicy będzie mnożyć przez 5, następnie należy wyświetlić 10 pierwszych elementów tablicy przed i po wykonaniu mnożenia.
Zad4
Należy napisać program wykorzystujący dwa wskaźniki: mały i duży. Na 10 elementowej tablicy należy ustawić wskaźnik mały w ustalonej pozycji (np. na 5 elemencie). Następnie program ma poprosić o ustawienie wskaźnika dużego (na dowolnym elemencie tablicy, czyli od 0-9). W kolejnym kroku następuje porównanie ustawień wskaźnika dużego względem małego. Należy sprawdzić czy:
Wskaźnik duży pokazuje na element bliżej początku tablicy.
Wskaźnik duży pokazuje element o wyższym indeksie.
Wskaźniki pokazują ten sam element.
Po dokonaniu porównania należy wyświetlić komunikat informujący o zaistniałym przypadku.
Np. Po ustawieniu wskaźnika małego na 5 element tablicy, a dużego na 3, powinien wyświetlić się komunikat nr. 1.
Zad5
Należy napisać program, który będzie używał wskaźników w pracy z tablicami. Należy zdefiniować dwie tablice, jedna dla typu int, a drugą dla typu double. Następnie ustawić wskaźnik na początkowym elemencie tablicy double. Zapełnić ją wartościami początkowymi (przy użyciu instrukcji for). Wypisać na ekran otrzymane wartości. W kolejnym kroku należy zmienić ustawienie wskaźników: jeden wskaźnik ustawić na piątym elemencie tablicy typu int, drugi wskaźnik ustawić na trzecim elemencie tablicy double. W nowym ustawieniu wskaźników należy dodać do tablic nowe wartości. Następnie należy wypisać treść tablic po zastosowaniu zmian.
Laboratorium 9
1. Cel ćwiczenia
Celem ćwiczenia jest zapoznanie się z obsługą C++.
2. Przykłady
Zad1
Przykładowy program korzystający z definicji klas w języku C++. W programie przedstawiono definicję klasy o nazwie osoba i jeden obiekt tej klasy student1.
#include <iostream.h>
#include <string.h>
class osoba {
char nazwisko [80] ;
int wiek ;
public :
void zapamietaj (char * napis, int lata) ;
void wypisz ()
{
cout << "\t" << nazwisko << " , lat : "
<< wiek <<endl ;
}
} ;
void osoba :: zapamietaj (char * napis, int lata)
{
strcpy (nazwisko, napis) ;
wiek = lata ;
}
main ()
{
osoba student1 ;
student1.zapamietaj ("Jan Kowalski", 22) ;
cout << "Po wpisaniu informacji do obiektow. "
"Sprawdzamy : \n" ;
cout << "dane z obietku student1\n" ;
student1.wypisz () ;
}
Zad2
Przykładowy program na wykorzystanie klas. W tekście podanym przez użytkownika, program zlicza ilość powtórzeń litery A, zliczanie kończy się w momencie pojawienia się w tekście litery k (ub K).
# include <ctype.h>
# include <iostream.h>
class Licznik
{
char znak;
int ile;
public:
void Inicjuj(char);
void PlusJeden(void);
char Pokaz(void);
int Efekt(void);
};
void main()
{
char znak_we;
Licznik licznik;
licznik.Inicjuj('A');
cout << "\nWpisz tekst zawierajacy litery A";
cout << "\nPierwsze wystapienie litery k lub K";
cout << "\n - oznacza koniec zliczania: ";
for(;;)
{
cin >> znak_we;
if (znak_we == 'k' || znak_we == 'K') break;
if(licznik.Pokaz() == toupper(znak_we))
licznik.PlusJeden();
}
cout << "\nLitera " << licznik.Pokaz()
<< " wystapila " << licznik.Efekt()
<< " razy.";
}
/* Definicje wszystkich funkcji: */
void Licznik::Inicjuj(char x)
{
znak = x;
ile = 0;
}
void Licznik::PlusJeden(void)
{
ile++;
}
char Licznik::Pokaz(void)
{
return znak;
}
int Licznik::Efekt(void)
{
return ile;
}
3. Program ćwiczenia
Zad3
Bazując na przykładowym programie z Zad1, należy napisać program zawierający klasę o nazwie osoba i zdefiniować 4 obiekty tej klasy (student1, student2, student3, student4), przypisując poszczególnym obiektom inne wartości (nazwisko i wiek). Następnie należy wyświetlić informacje znajdujące się w poszczególnych obiektach.
Zad4
Należy napisać program wykorzystujący w swoim działaniu konstruktor. W programie określić parametry lotu samolotu takie jak: wysokość lotu, kierunek lotu i ciśnienie atmosferyczne panujące na danej wysokości. Następnie wykorzystując odpowiednią funkcję zmienić parametry lotu. Na ekranie należy wyświetlić początkowe jak i końcowe parametry.
Laboratorium 10
1. Cel ćwiczenia
Celem ćwiczenia jest zapoznanie się z obsługą C++.
2. Przykłady
Zad1
Przykład prezentujący istotę dziedziczenia klas. Dziedziczenie jest to technika pozwalająca na definiowanie nowej klasy przy wykorzystaniu już wcześniej istniejącej. Poniżej została przedstawiona klasa pojazd oraz jej pochodna klasa super_pojazd.
class pojazd // definiujemy klasę pojazd
{
public: // parametry klasy pojazd
int predkosc;
int przyspieszenie;
int marka;
int model;
int kolor;
};
Chcąc utworzyć klasę zbliżoną do klasy pojazd, nie trzeba pisać całej klasy od początku - można skorzystać z dziedziczenia klas (tworząc pochodną klasy pojazd).
class super_pojazd : public pojazd // informacja dla kompilatora, że klasa
// super_pojazd jest pochodną klasy pojazd
{
public:
int turbo; // rozbudowanie klasy pojazd o parametr turbo
};
Zad2
Przykładowy program korzystający z dziedziczenia klas w języku C++. W programie przedstawiono definicję klasy o nazwie osoba i jeden obiekt tej klasy student1. Następnie utworzono klasę nowa_osoba dziedziczącą z klasy osoba oraz obiekt tej klasy student2. W nowej klasie został dodany parametr plec (płeć).
#include <iostream.h>
#include <string.h>
#include <conio.h>
class osoba {
public :
char nazwisko [80] ; //zmienne nazwisko i wiek beda odziedziczone przez klase nowa_osoba
int wiek ;
void zapamietaj (char * napis, int lata) ; // deklaracja pierwotnej funkcji zapamietaj
void wypisz () // definicja pierwotnej funkcji wypisz
{
cout << "\t" << nazwisko << " , lat : "
<< wiek <<endl ;
}
} ;
void osoba :: zapamietaj (char * napis, int lata) // definicja pierwotnej funkcji zapamitej
{
strcpy (nazwisko, napis) ;
wiek = lata ;
}
class nowa_osoba : public osoba
{
public:
char plec [20];
void zapamietaj (char * napis, int lata, char * napis2) ; // deklaracja nowej funkcji zapamietaj
void wypisz () // definiujemy nowa funkcje wypisz
{
cout << "\t" << nazwisko << " , lat : "
<< wiek << " , " << plec <<endl ;
}
};
void nowa_osoba :: zapamietaj (char * napis, int lata, char * napis2) // definicja nowej funkcji zapamietaj
{
strcpy (nazwisko, napis) ;
strcpy (plec, napis2) ;
wiek = lata ;
}
main ()
{
osoba student1 ;
student1.zapamietaj ("Jan Kowalski", 22) ;
cout << "Po wpisaniu informacji do obiektow. "
"Sprawdzamy : \n" ;
cout << "dane z obietku student1\n" ;
student1.wypisz () ;
nowa_osoba student2 ;
student2.zapamietaj ("Ewa Kowalska", 24, "kobieta") ;
cout << "Po wpisaniu informacji do obiektow. "
"Sprawdzamy : \n" ;
cout << "dane z obietku student2\n" ;
student2.wypisz () ;
getch();
}
Zad3
Przykładowy program obrazujący polimorfizm (funkcje wirtualne). Funkcje wirtualne to jakby 'inteligentne' funkcje, które potrafią się dostosować do samego programu. Aby stworzyć taką funkcję, wystarczy poprzedzić deklarację słówkiem virtual i program stanie się 'inteligentny'.
Załóżmy, że mamy dwie klasy: klasę A i dziedziczącą po niej klasę B.
#include <iostream>
class A
{
public:
int Zmienna()
{ cout << "Bazowa"; }
};
class B: public A
{
public:
int Zmienna()
{ cout << "Pochodna"; }
};
Tworzymy obiekt klasy pochodnej trzymany za wskaźnik do klasy bazowej:
int main()
{
B b;
A* p = &b;
int a = p->Zmienna();
return 0;
}
Widzimy, że p wskazuje na obiekt typu B, to jednak zostanie wywołane A::Zmienna. Jednak ta metoda to zwykła funkcja. Skąd kompilator ma wiedzieć, że obiekt, na który wskazuje p jest obiektem typu B? Za chwilę w tym samym kodzie ten sam wskaźnik może wskazać na obiekt innego typu. Jak widzimy w tym miejscu informacja o dodatkach klasy B została utracona. Język C++ w zwykłych klasach nie umieszcza informacji o typie, który pozwalałaby go identyfikować. Nie oznacza to jednak, że w C++ są tylko takie klasy. Po dodaniu w deklaracji klasy A przed nazwą metody słowo kluczowe "virtual":
class A
{
public:
virtual int Zmienna()
{ cout << "Bazowa"; }
};
Jak widzimy, zmiana w klasie B nie jest już konieczna. Każda z klas, w której zadeklarowano choć jedną metodę wirtualną, staje się klasą "Polimorficzną" i zawiera w sobie informacje, pozwalające na identyfikację typu. Każda metoda, która jest zadeklarowana jako wirtualna, podlega "Dynamicznemu wiązaniu".
3. Program ćwiczenia
Zad4
Wzorując się na przykładowym programie z Zad2, należy napisać program zawierający klasę o nazwie osoba oraz jej klasę pochodną nowa_osoba. Zdefiniować po 4 obiekty tych klas (np. student1...student4 i nowy_student1...nowy_student4). Obiektom klasy osoba przypisać wartości nazwisko i wiek, natomiast obiekty klasy pochodnej uzupełnić o zmienną płeć. Następnie należy wyświetlić informacje znajdujące się w poszczególnych obiektach.
Zad5
Należy napisać program wykorzystujący w swoim działaniu polimorfizm (funkcje wirtualne). W programie należy zdefiniować klasę Kontynent i jej pochodną klasę Panstwo. W klasie Kontynent należy umieścić funkcję wyświetlającą na ekran informację, że np.: "Na mapie wskazywana jest cała Europa". Następnie w klasie Panstwo należy umieścic tą samą funkcję wyświetlającą na ekran, której użyto w klasie Kontynent, jednak wypisującą na ekran np: "Teraz na mapie wskazujemy na Polskę". Kolejno przy użyciu wskaźnika odwołującego się do funkcji wyświetlającej, należy wypisać na ekran informację podaną w klasie Panstwo. Dzięki zastosowaniu funkcji wirtualnych będzie to możliwe, gdyż program dostosuje się i wyświetli odpowiedni komunikat.
Laboratorium 11
1. Cel ćwiczenia
Celem ćwiczenia jest zapoznanie się z obsługą C++.
2. Przykłady
Zad1
Przykładowy program na zapisywanie danych do pliku.
#include <fstream>
#include <iostream>
using namespace std;
int main ()
{
char dane[80];
ofstream plik;
plik.open("studenci.txt");
cout << "Zapisywanie danych do pliku" << endl;
cout << "Wpisz nazwe grupy: ";
cin.getline(dane, 80);
plik << dane << endl;
cout << "Wpisz ilosc studentow: ";
cin >> dane;
cin.ignore();
plik << dane << endl;
plik.close();
system ("Pause");
return 0;
}
Zad2
Przykładowy program na odczytywanie danych z pliku. Przed pracą na tym programie należy wykonać poprzednie zadanie (Zad1) lub samodzielnie utworzyć plik o nazwie „studenci.txt”.
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main () {
string line;
ifstream plik ("studenci.txt");
if (plik.is_open())
{
while (! plik.eof() )
{
getline (plik,line);
cout << line << endl;
}
plik.close();
}else
cout << "Nie moge odczytac pliku, sprawdz czy plik o podanej nazwie istnieje." << endl ;
system ("Pause");
return 0;
}
3. Program ćwiczenia
Zad3
Należy napisać program zawierający klasę o nazwie panstwo oraz jej klasę pochodną nowe_panstwo. Zdefiniować po 3 obiekty tych klas (np. Polska, Francja, USA i Polska2, Francja2, USA2). Obiektom klasy panstwo przypisać wartości: nazwa państwa i ilość ludności, natomiast obiekty klasy pochodnej uzupełnić o nazwę stolicy. Wyświetlić na ekranie informacje znajdujące się w poszczególnych obiektach.
Zad4
Bazując na wiedzy i umiejętnościach nabytych do tej pory, należy wzbogacić program z Zad3 o możliwość zapisywania informacji do pliku. Napisać program tworzący dwa odrębne pliki. W pierwszym zapisać informację o dowolnym obiekcie klasy panstwo, w drugim informację o dowolnym obiekcie klasy nowe_panstwo.
Laboratorium 12
1. Cel ćwiczenia
Celem ćwiczenia jest zapoznanie się z obsługą C++ w środowisku Microsoft Visual C++.
2. Przykłady
Zad1
Przykład aplikacji która zawiera dwa przyciski. Jeden z przycisków za zadanie ma wyświetlić nowe okno z komunikatem „Dzień dobry”, drugi zamyka aplikację.
#pragma once
namespace test {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::Button^ button1;
private: System::Windows::Forms::Button^ button2;
protected:
private:
/// <summary>
/// Required designer variable.
/// </summary>
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent(void)
{
this->button1 = (gcnew System::Windows::Forms::Button());
this->button2 = (gcnew System::Windows::Forms::Button());
this->SuspendLayout();
//
// button1
//
this->button1->Location = System::Drawing::Point(52, 117);
this->button1->Name = L"button1";
this->button1->Size = System::Drawing::Size(147, 59);
this->button1->TabIndex = 0;
this->button1->Text = L"ZAKOŃCZ";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
//
// button2
//
this->button2->Location = System::Drawing::Point(52, 24);
this->button2->Name = L"button2";
this->button2->Size = System::Drawing::Size(147, 62);
this->button2->TabIndex = 2;
this->button2->Text = L"TEST";
this->button2->UseVisualStyleBackColor = true;
this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->BackgroundImageLayout = System::Windows::Forms::ImageLayout::None;
this->ClientSize = System::Drawing::Size(261, 219);
this->ControlBox = false;
this->Controls->Add(this->button2);
this->Controls->Add(this->button1);
this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::Fixed3D;
this->Name = L"Form1";
this->Text = L"Pierwszy program";
this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
this->ResumeLayout(false);
}
#pragma endregion
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
Close();
}
private: System::Void domainUpDown1_SelectedItemChanged(System::Object^ sender, System::EventArgs^ e) {
}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e)
{
MessageBox::Show ("Dzień dobry");
}
};
}
Zad2
Przykładowa aplikacja za zadanie ma zapamiętać wprowadzenie dziesięciu wartości liczbowych, następnie po wciśnięciu odpowiedniego przycisku wyświetlenie wszystkich zapamiętanych wartości.
#pragma once
namespace zmienne_tablicowe {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
int liczby[10];
int licznik = 0;
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::Label^ label1;
protected:
private: System::Windows::Forms::Label^ wynik;
private: System::Windows::Forms::Button^ button1;
private: System::Windows::Forms::Button^ button2;
private: System::Windows::Forms::TextBox^ textBox1;
private:
/// <summary>
/// Required designer variable.
/// </summary>
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent(void)
{
this->label1 = (gcnew System::Windows::Forms::Label());
this->wynik = (gcnew System::Windows::Forms::Label());
this->button1 = (gcnew System::Windows::Forms::Button());
this->button2 = (gcnew System::Windows::Forms::Button());
this->textBox1 = (gcnew System::Windows::Forms::TextBox());
this->SuspendLayout();
//
// label1
//
this->label1->AutoSize = true;
this->label1->Location = System::Drawing::Point(40, 22);
this->label1->Name = L"label1";
this->label1->Size = System::Drawing::Size(53, 13);
this->label1->TabIndex = 0;
this->label1->Text = L"Liczba nr.";
//
// wynik
//
this->wynik->AutoSize = true;
this->wynik->Location = System::Drawing::Point(99, 21);
this->wynik->Name = L"wynik";
this->wynik->Size = System::Drawing::Size(10, 13);
this->wynik->TabIndex = 1;
this->wynik->Text = L" ";
//
// button1
//
this->button1->Location = System::Drawing::Point(39, 86);
this->button1->Name = L"button1";
this->button1->Size = System::Drawing::Size(75, 23);
this->button1->TabIndex = 2;
this->button1->Text = L"Zapamiętaj";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
//
// button2
//
this->button2->Location = System::Drawing::Point(12, 128);
this->button2->Name = L"button2";
this->button2->Size = System::Drawing::Size(132, 23);
this->button2->TabIndex = 3;
this->button2->Text = L"Pokaż wszystkie liczby";
this->button2->UseVisualStyleBackColor = true;
this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
//
// textBox1
//
this->textBox1->Location = System::Drawing::Point(34, 48);
this->textBox1->Name = L"textBox1";
this->textBox1->Size = System::Drawing::Size(100, 20);
this->textBox1->TabIndex = 4;
this->textBox1->Text = L"1";
this->textBox1->TextChanged += gcnew System::EventHandler(this, &Form1::textBox1_TextChanged);
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(170, 191);
this->Controls->Add(this->textBox1);
this->Controls->Add(this->button2);
this->Controls->Add(this->button1);
this->Controls->Add(this->wynik);
this->Controls->Add(this->label1);
this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::FixedToolWindow;
this->Name = L"Form1";
this->Text = L" Zmienne";
this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
this->ResumeLayout(false);
this->PerformLayout();
}
#pragma endregion
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e)
{
for (int i=0;i<=9;i++)
{
liczby[i] = -1;
};
licznik = 0;
}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
liczby[licznik] = Convert::ToInt16 (textBox1->Text);
licznik++;
if (licznik>9)
{
licznik = 0;
};
wynik->Text = Convert::ToString (licznik);
}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e)
{
for (int i=0;i<=9;i++)
{
MessageBox::Show (Convert::ToString(liczby[i]),"Wartość liczby nr" +Convert::ToString(i));
}
}
private: System::Void textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e) {
}
};
}
Zad3
Przykładowa aplikacja za zadanie ma pomnożenie wpisanych przez użytkownika wartości liczbowych do pól tekstowych i zwróceniu ich iloczynu w nowym oknie po wciśnięciu odpowiedniego przycisku.
#pragma once
namespace Funkcje {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
long mnozenie(int par1,int par2)
{
long wynik;
wynik = par1*par2;
MessageBox::Show (Convert::ToString(wynik),"Wynik");
return (wynik);
};
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::Label^ label1;
protected:
private: System::Windows::Forms::Label^ label2;
private: System::Windows::Forms::Label^ label3;
private: System::Windows::Forms::TextBox^ wpis1;
private: System::Windows::Forms::TextBox^ wpis2;
private: System::Windows::Forms::TextBox^ wpis3;
private: System::Windows::Forms::Button^ button1;
private: System::Windows::Forms::Button^ button2;
private: System::Windows::Forms::Button^ button3;
private:
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
void InitializeComponent(void)
{
this->label1 = (gcnew System::Windows::Forms::Label());
this->label2 = (gcnew System::Windows::Forms::Label());
this->label3 = (gcnew System::Windows::Forms::Label());
this->wpis1 = (gcnew System::Windows::Forms::TextBox());
this->wpis2 = (gcnew System::Windows::Forms::TextBox());
this->wpis3 = (gcnew System::Windows::Forms::TextBox());
this->button1 = (gcnew System::Windows::Forms::Button());
this->button2 = (gcnew System::Windows::Forms::Button());
this->button3 = (gcnew System::Windows::Forms::Button());
this->SuspendLayout();
//
// label1
//
this->label1->AutoSize = true;
this->label1->Location = System::Drawing::Point(24, 13);
this->label1->Name = L"label1";
this->label1->Size = System::Drawing::Size(23, 13);
this->label1->TabIndex = 0;
this->label1->Text = L"A =";
//
// label2
//
this->label2->AutoSize = true;
this->label2->Location = System::Drawing::Point(24, 44);
this->label2->Name = L"label2";
this->label2->Size = System::Drawing::Size(23, 13);
this->label2->TabIndex = 1;
this->label2->Text = L"B =";
//
// label3
//
this->label3->AutoSize = true;
this->label3->Location = System::Drawing::Point(24, 80);
this->label3->Name = L"label3";
this->label3->Size = System::Drawing::Size(23, 13);
this->label3->TabIndex = 2;
this->label3->Text = L"C =";
//
// wpis1
//
this->wpis1->Location = System::Drawing::Point(70, 13);
this->wpis1->Name = L"wpis1";
this->wpis1->Size = System::Drawing::Size(100, 20);
this->wpis1->TabIndex = 3;
this->wpis1->Text = L"1";
//
// wpis2
//
this->wpis2->Location = System::Drawing::Point(70, 44);
this->wpis2->Name = L"wpis2";
this->wpis2->Size = System::Drawing::Size(100, 20);
this->wpis2->TabIndex = 4;
this->wpis2->Text = L"2";
//
// wpis3
//
this->wpis3->Location = System::Drawing::Point(70, 77);
this->wpis3->Name = L"wpis3";
this->wpis3->Size = System::Drawing::Size(100, 20);
this->wpis3->TabIndex = 5;
this->wpis3->Text = L"3";
//
// button1
//
this->button1->Location = System::Drawing::Point(27, 131);
this->button1->Name = L"button1";
this->button1->Size = System::Drawing::Size(75, 23);
this->button1->TabIndex = 6;
this->button1->Text = L"A * B";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
//
// button2
//
this->button2->Location = System::Drawing::Point(27, 169);
this->button2->Name = L"button2";
this->button2->Size = System::Drawing::Size(75, 23);
this->button2->TabIndex = 7;
this->button2->Text = L"B * C";
this->button2->UseVisualStyleBackColor = true;
this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
//
// button3
//
this->button3->Location = System::Drawing::Point(27, 208);
this->button3->Name = L"button3";
this->button3->Size = System::Drawing::Size(75, 23);
this->button3->TabIndex = 8;
this->button3->Text = L"A * C";
this->button3->UseVisualStyleBackColor = true;
this->button3->Click += gcnew System::EventHandler(this, &Form1::button3_Click);
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(186, 248);
this->Controls->Add(this->button3);
this->Controls->Add(this->button2);
this->Controls->Add(this->button1);
this->Controls->Add(this->wpis3);
this->Controls->Add(this->wpis2);
this->Controls->Add(this->wpis1);
this->Controls->Add(this->label3);
this->Controls->Add(this->label2);
this->Controls->Add(this->label1);
this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::FixedToolWindow;
this->Name = L"Form1";
this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen;
this->Text = L"Funkcja";
this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
this->ResumeLayout(false);
this->PerformLayout();
}
#pragma endregion
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e)
{
}
private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e)
{
mnozenie (Convert::ToInt16(wpis1->Text), Convert::ToInt16(wpis3->Text));
}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
int zm_a;
int zm_b;
long zm_wynik;
zm_a = Convert::ToInt16 (wpis1->Text);
zm_b = Convert::ToInt16 (wpis2->Text);
zm_wynik = mnozenie (zm_a,zm_b);
MessageBox::Show (Convert::ToString(zm_wynik),"Wartość zwrócona przez funkcję");
}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e)
{
mnozenie (Convert::ToInt16(wpis2->Text), Convert::ToInt16(wpis3->Text));
}
};
}
3. Program ćwiczenia
Zad4
Należy wykonać aplikację która będzie wyświetlać następujące komunikaty:
po najechaniu myszą na element Panel wyświetli tekst informujący o tym zdarzeniu
po kliknięciu myszą na element Panel wyświetli nowe okno z informacją o tym zdarzeniu
po najechaniu myszą na element textBox również wyświetli odpowiedni tekst
przy próbie zmiany rozmiaru okna głównego będzie informacja o tym zdarzeniu
Poniżej zdjęcie aplikacji.
Zad5
Należy wykonać aplikację kalkulator. Poniżej zdjęcie aplikacji.
Laboratorium 13
1. Cel ćwiczenia
Celem ćwiczenia jest zapoznanie się z obsługą C++ w środowisku Microsoft Visual C++.
2. Przykłady
Zad1
Przykład programu który po kliknięciu przycisku tworzy dynamicznie kopie okna głównego.
#pragma once
namespace dynamiczne {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
/// <summary>
int licznik = 1;
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::Button^ button1;
protected:
private: System::Windows::Forms::Button^ button2;
private:
/// <summary>
/// Required designer variable.
/// </summary>
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent(void)
{
this->button1 = (gcnew System::Windows::Forms::Button());
this->button2 = (gcnew System::Windows::Forms::Button());
this->SuspendLayout();
//
// button1
//
this->button1->Location = System::Drawing::Point(12, 12);
this->button1->Name = L"button1";
this->button1->Size = System::Drawing::Size(75, 23);
this->button1->TabIndex = 0;
this->button1->Text = L"Utwórz";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
//
// button2
//
this->button2->Location = System::Drawing::Point(108, 13);
this->button2->Name = L"button2";
this->button2->Size = System::Drawing::Size(75, 23);
this->button2->TabIndex = 1;
this->button2->Text = L"Zamknij";
this->button2->UseVisualStyleBackColor = true;
this->button2->Visible = false;
this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(194, 48);
this->Controls->Add(this->button2);
this->Controls->Add(this->button1);
this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::Fixed3D;
this->MaximizeBox = false;
this->MinimizeBox = false;
this->Name = L"Form1";
this->ShowIcon = false;
this->Text = L"Głowne";
this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
this->ResumeLayout(false);
}
#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
Form1 ^obiekt;
obiekt = gcnew Form1;
obiekt->ControlBox = false;
obiekt->button2->Visible = true;
obiekt->Text = "Okno nr " + Convert::ToString (licznik);
obiekt->Show();
licznik++;
}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e)
{
Close();
}
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
}
};
}
Zad2
Po wciśnięciu przycisku ma się pojawić okno z wyborem: Tak, Nie, Anuluj. Po kliknięciu na dowolny przycisk ma się pojawić stosowny komunikat informujący nas które polecenie zaznaczyliśmy.
#pragma once
namespace okno_dialogowe {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
/// <summary>
/// Summary for Form1
///
/// WARNING: If you change the name of this class, you will need to change the
/// 'Resource File Name' property for the managed resource compiler tool
/// associated with all .resx files this class depends on. Otherwise,
/// the designers will not be able to interact properly with localized
/// resources associated with this form.
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::Button^ button1;
protected:
private: System::Windows::Forms::TextBox^ textBox1;
private:
/// <summary>
/// Required designer variable.
/// </summary>
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent(void)
{
this->button1 = (gcnew System::Windows::Forms::Button());
this->textBox1 = (gcnew System::Windows::Forms::TextBox());
this->SuspendLayout();
//
// button1
//
this->button1->Location = System::Drawing::Point(83, 146);
this->button1->Name = L"button1";
this->button1->Size = System::Drawing::Size(110, 44);
this->button1->TabIndex = 0;
this->button1->Text = L"Przycisk";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
//
// textBox1
//
this->textBox1->Location = System::Drawing::Point(35, 42);
this->textBox1->Multiline = true;
this->textBox1->Name = L"textBox1";
this->textBox1->Size = System::Drawing::Size(225, 65);
this->textBox1->TabIndex = 1;
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(290, 212);
this->Controls->Add(this->textBox1);
this->Controls->Add(this->button1);
this->Name = L"Form1";
this->Text = L"Okno dialogowe";
this->ResumeLayout(false);
this->PerformLayout();
}
#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
System::Windows::Forms::DialogResult odp =
MessageBox::Show("Wybierz opcję : ",
"Pytanie", MessageBoxButtons::YesNoCancel, MessageBoxIcon::Question);
switch (odp) {
case System::Windows::Forms::DialogResult::Yes :
textBox1->AppendText("Wybrano odpowiedź TAK" +
System::Environment::NewLine);
break;
case System::Windows::Forms::DialogResult::No :
textBox1->AppendText("Wybrano odpowiedź Nie" +
System::Environment::NewLine);
break;
case System::Windows::Forms::DialogResult::Cancel :
textBox1->AppendText("Wybrano odpowiedź Anuluj" +
System::Environment::NewLine);
break;
}
};
}
3. Program ćwiczenia
Zad3
Aplikacja w której po wciśnięciu przycisku Formularz uruchamia się okno do wprowadzania danych takich jak: Wiek, Imię, Nazwisko i Płeć. Po zaakceptowaniu wprowadzonych danych, dane te wyświetlają się w oknie głównym.
Poniżej ilustracja odzwierciedlająca pożądaną aplikację.
Zad4
Aplikacja notatnik, powinna posiadać Menu z podstawowymi poleceniami edytora tekstu które spełniają swoje funkcje, oraz Menu kontekstowe.
Laboratorium 14
1. Cel ćwiczenia
Celem ćwiczenia jest zapoznanie się z obsługą C++ w środowisku Microsoft Visual C++.
2. Przykłady
Zad1
Aplikacja posiada 10 struktur. Do każdej struktury możemy przypisać takie dane jak Imię, Nazwisko oraz Wiek. Przy czym w każdej chwili możemy zobaczyć jakie dane zostały przypisane każdej ze struktur dzięki przyciskom numericUpDown.
#pragma once
namespace Struktura {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
/// <summary>
/// Summary for Form1
///
/// WARNING: If you change the name of this class, you will need to change the
/// 'Resource File Name' property for the managed resource compiler tool
/// associated with all .resx files this class depends on. Otherwise,
/// the designers will not be able to interact properly with localized
/// resources associated with this form.
/// </summary>
struct TDane
{
char imie[128];
char nazwisko[128];
int wiek;
} dane[10];
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::Label^ label1;
protected:
private: System::Windows::Forms::NumericUpDown^ numericUpDown1;
private: System::Windows::Forms::Label^ label2;
private: System::Windows::Forms::Label^ label3;
private: System::Windows::Forms::Label^ label4;
private: System::Windows::Forms::TextBox^ textBox1;
private: System::Windows::Forms::TextBox^ textBox2;
private: System::Windows::Forms::NumericUpDown^ numericUpDown2;
private: System::Windows::Forms::Button^ button1;
private:
/// <summary>
/// Required designer variable.
/// </summary>
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent(void)
{
this->label1 = (gcnew System::Windows::Forms::Label());
this->numericUpDown1 = (gcnew System::Windows::Forms::NumericUpDown());
this->label2 = (gcnew System::Windows::Forms::Label());
this->label3 = (gcnew System::Windows::Forms::Label());
this->label4 = (gcnew System::Windows::Forms::Label());
this->textBox1 = (gcnew System::Windows::Forms::TextBox());
this->textBox2 = (gcnew System::Windows::Forms::TextBox());
this->numericUpDown2 = (gcnew System::Windows::Forms::NumericUpDown());
this->button1 = (gcnew System::Windows::Forms::Button());
(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->numericUpDown1))->BeginInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->numericUpDown2))->BeginInit();
this->SuspendLayout();
//
// label1
//
this->label1->AutoSize = true;
this->label1->Location = System::Drawing::Point(13, 13);
this->label1->Name = L"label1";
this->label1->Size = System::Drawing::Size(81, 13);
this->label1->TabIndex = 0;
this->label1->Text = L"Numer struktury";
//
// numericUpDown1
//
this->numericUpDown1->Location = System::Drawing::Point(100, 11);
this->numericUpDown1->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) {9, 0, 0, 0});
this->numericUpDown1->Name = L"numericUpDown1";
this->numericUpDown1->Size = System::Drawing::Size(45, 20);
this->numericUpDown1->TabIndex = 1;
this->numericUpDown1->ValueChanged += gcnew System::EventHandler(this, &Form1::numericUpDown1_ValueChanged);
//
// label2
//
this->label2->AutoSize = true;
this->label2->Location = System::Drawing::Point(16, 45);
this->label2->Name = L"label2";
this->label2->Size = System::Drawing::Size(29, 13);
this->label2->TabIndex = 2;
this->label2->Text = L"Imię:";
//
// label3
//
this->label3->AutoSize = true;
this->label3->Location = System::Drawing::Point(16, 73);
this->label3->Name = L"label3";
this->label3->Size = System::Drawing::Size(56, 13);
this->label3->TabIndex = 3;
this->label3->Text = L"Nazwisko:";
//
// label4
//
this->label4->AutoSize = true;
this->label4->Location = System::Drawing::Point(16, 101);
this->label4->Name = L"label4";
this->label4->Size = System::Drawing::Size(35, 13);
this->label4->TabIndex = 4;
this->label4->Text = L"Wiek:";
//
// textBox1
//
this->textBox1->Location = System::Drawing::Point(86, 42);
this->textBox1->MaxLength = 127;
this->textBox1->Name = L"textBox1";
this->textBox1->Size = System::Drawing::Size(116, 20);
this->textBox1->TabIndex = 5;
//
// textBox2
//
this->textBox2->Location = System::Drawing::Point(86, 68);
this->textBox2->MaxLength = 127;
this->textBox2->Name = L"textBox2";
this->textBox2->Size = System::Drawing::Size(116, 20);
this->textBox2->TabIndex = 6;
//
// numericUpDown2
//
this->numericUpDown2->Location = System::Drawing::Point(86, 99);
this->numericUpDown2->Minimum = System::Decimal(gcnew cli::array< System::Int32 >(4) {1, 0, 0, 0});
this->numericUpDown2->Name = L"numericUpDown2";
this->numericUpDown2->Size = System::Drawing::Size(42, 20);
this->numericUpDown2->TabIndex = 7;
this->numericUpDown2->Value = System::Decimal(gcnew cli::array< System::Int32 >(4) {18, 0, 0, 0});
//
// button1
//
this->button1->Location = System::Drawing::Point(13, 142);
this->button1->Name = L"button1";
this->button1->Size = System::Drawing::Size(75, 23);
this->button1->TabIndex = 8;
this->button1->Text = L"Zapamiętaj";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(213, 182);
this->Controls->Add(this->button1);
this->Controls->Add(this->numericUpDown2);
this->Controls->Add(this->textBox2);
this->Controls->Add(this->textBox1);
this->Controls->Add(this->label4);
this->Controls->Add(this->label3);
this->Controls->Add(this->label2);
this->Controls->Add(this->numericUpDown1);
this->Controls->Add(this->label1);
this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::FixedToolWindow;
this->Name = L"Form1";
this->Text = L"Struktura";
this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->numericUpDown1))->EndInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->numericUpDown2))->EndInit();
this->ResumeLayout(false);
this->PerformLayout();
}
#pragma endregion
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e)
{
for (int i=0;i<=9;i++)
{
dane[i].imie[0] = 0;
dane[i].nazwisko[0] = 0;
dane[i].wiek = 18;
};
}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
int Index;
Index = Convert::ToInt16(numericUpDown1->Value);
for (int i=0;i<textBox1->Text->Length;i++)
{
dane[Index].imie[i] = textBox1->Text[i];
dane[Index].imie[i+1] = 0;
};
for (int i=0;i<textBox2->Text->Length;i++)
{
dane[Index].nazwisko[i] = textBox2->Text[i];
dane[Index].nazwisko[i+1] = 0;
};
dane[Index].wiek = Convert::ToInt16(numericUpDown2->Value);
}
private: System::Void numericUpDown1_ValueChanged(System::Object^ sender, System::EventArgs^ e)
{
int Index;
Index = Convert::ToInt16(numericUpDown1->Value);
int licznik = 0;
textBox1->Text = "";
while (dane[Index].imie[licznik] != 0)
{
textBox1->Text = textBox1->Text + Convert::ToChar(dane[Index].imie[licznik]);
licznik++;
};
licznik = 0;
textBox2->Text = "";
while (dane[Index].nazwisko[licznik] != 0)
{
textBox2->Text = textBox2->Text + Convert::ToChar(dane[Index].nazwisko[licznik]);
licznik++;
};
numericUpDown2->Value = dane[Index].wiek;
}
};
}
Zad2
Aplikacja posiada cztery klasy. Jako pierwsza, klasa konstruktora domyślnego będzie wyświetlała właściwości klasy. Druga klasa wykorzystuje konstruktor klasy z parametrami, gdzie parametry zmieniają się według argumentów podanych przy tworzeniu klasy. Trzecia klasa wykorzystuje domyślny konstruktor i używa metody klasy w następującej kolejności: pokaz - zmien - pokaz. Ostatnia klasa tworzona dynamicznie, wykorzystuje konstruktor z parametrami, następnie konstruktor domyślny.
Po każdej klasie wywoływany jest destruktor w celu wyczyszczenia pamięci.
#pragma once
#include "moja_klasa.h"
namespace Klasa {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
/// <summary>
/// Summary for Form1
///
/// WARNING: If you change the name of this class, you will need to change the
/// 'Resource File Name' property for the managed resource compiler tool
/// associated with all .resx files this class depends on. Otherwise,
/// the designers will not be able to interact properly with localized
/// resources associated with this form.
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::Button^ button1;
protected:
private: System::Windows::Forms::Button^ button2;
private: System::Windows::Forms::Button^ button3;
private: System::Windows::Forms::Button^ button4;
private:
/// <summary>
/// Required designer variable.
/// </summary>
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent(void)
{
this->button1 = (gcnew System::Windows::Forms::Button());
this->button2 = (gcnew System::Windows::Forms::Button());
this->button3 = (gcnew System::Windows::Forms::Button());
this->button4 = (gcnew System::Windows::Forms::Button());
this->SuspendLayout();
//
// button1
//
this->button1->Location = System::Drawing::Point(12, 12);
this->button1->Name = L"button1";
this->button1->Size = System::Drawing::Size(153, 23);
this->button1->TabIndex = 0;
this->button1->Text = L"Konstruktor domyślny";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
//
// button2
//
this->button2->Location = System::Drawing::Point(13, 42);
this->button2->Name = L"button2";
this->button2->Size = System::Drawing::Size(152, 23);
this->button2->TabIndex = 1;
this->button2->Text = L"Konstruktor z parametrami";
this->button2->UseVisualStyleBackColor = true;
this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
//
// button3
//
this->button3->Location = System::Drawing::Point(13, 72);
this->button3->Name = L"button3";
this->button3->Size = System::Drawing::Size(152, 23);
this->button3->TabIndex = 2;
this->button3->Text = L"Metoda zmień";
this->button3->UseVisualStyleBackColor = true;
this->button3->Click += gcnew System::EventHandler(this, &Form1::button3_Click);
//
// button4
//
this->button4->Location = System::Drawing::Point(13, 102);
this->button4->Name = L"button4";
this->button4->Size = System::Drawing::Size(152, 23);
this->button4->TabIndex = 3;
this->button4->Text = L"Klasa tworzona dynamicznie";
this->button4->UseVisualStyleBackColor = true;
this->button4->Click += gcnew System::EventHandler(this, &Form1::button4_Click);
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(177, 144);
this->Controls->Add(this->button4);
this->Controls->Add(this->button3);
this->Controls->Add(this->button2);
this->Controls->Add(this->button1);
this->Name = L"Form1";
this->Text = L"Klasy";
this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
this->ResumeLayout(false);
}
#pragma endregion
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
TZwierze klasa1;
klasa1.pokaz();
}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e)
{
TZwierze klasa2 (0,false,false,"ryba");
klasa2.pokaz();
}
private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e)
{
TZwierze klasa3;
klasa3.pokaz();
klasa3.zmien(2,true,true,"czlowiek");
klasa3.pokaz();
}
private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e)
{
TZwierze *wskaznik;
TZwierze *wskaznik2;
wskaznik = new TZwierze (1,false,false,"zmienna dynamiczna");
wskaznik2 = new TZwierze;
wskaznik->pokaz();
wskaznik2->pokaz();
delete wskaznik;
delete wskaznik2;
}
};
}
Wybieramy z menu głownego programu:
Project Add New Item… Code Header File (.h) i w polu name wpisać moja_klasa
I skopiować ten kod:
#include <string>
using namespace std;
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
class TZwierze
{
private:
int ile_nog;
bool oddycha;
bool chodzi;
string nazwa;
public:
TZwierze ();
~TZwierze ();
void zmien (int,bool, bool,string);
TZwierze (int, bool, bool, string);
void pokaz();
};
Wybieramy z menu głownego programu:
Project Add New Item… Code C++ File (.cpp) i w polu name wpisać moja_klasa
I skopiować ten kod:
#include "stdafx.h"
#include "moja_klasa.h"
TZwierze::TZwierze()
{
ile_nog = 4;
oddycha = true;
chodzi = true;
nazwa = "zwierzak";
MessageBox::Show ("Użyto konstruktora");
};
TZwierze::~TZwierze()
{
MessageBox::Show ("Użyto destruktora");
};
void TZwierze::zmien(int nogi, bool oddech, bool chodz, std::string naz)
{
ile_nog = nogi;
oddycha = oddech;
chodzi = chodz;
nazwa = naz;
};
TZwierze::TZwierze(int a, bool b, bool c, std::string d)
{
zmien (a,b,c,d);
MessageBox::Show ("Użyto konstruktora z parametrami");
};
void TZwierze::pokaz()
{
MessageBox::Show ("Twoje zwierze ma "+Convert::ToString(ile_nog)+" nogi/nóg");
if (oddycha == true)
{
MessageBox::Show ("Twoje zwierze oddycha");
}
else
{
MessageBox::Show ("Twoje zwierze nie oddycha");
};
if (chodzi == true)
{
MessageBox::Show ("Twoje zwierze chodzi");
}
else
{
MessageBox::Show ("Twoje zwierze nie chodzi");
};
String ^tekst;
tekst = gcnew String ("");
for (unsigned int i = 0; i<nazwa.length();i++)
{
tekst = tekst + Convert::ToChar(nazwa.data()[i]);
};
MessageBox::Show ("Twoje zwierze nazywa się: "+tekst);
delete tekst;
};
3. Program ćwiczenia
Zad3
Bazując na zadaniu nr 2 należy utworzyć nową klasę TCzlowiek która będzie dziedziczyła metody i właściwości domyślnej klasy TZwierze. Wpierw będzie wyświetlać odziedziczone wartości, następnie wartości zdefiniowane przy tworzeniu klasy TCzlowiek. Należy również zmienić ciała konstruktorów wszystkich klas tak aby wyświetlały w oknie dialogowym dokładne informacje o klasie do jakiej przynależą i typie konstruktora. Na koniec stworzyć destruktor dla klasy TCzlowiek o czym również ma informować okno dialogowe.
Zad4
Aplikacja Timer ma realizować następujące zadanie, po wciśnięciu przycisku Start wprawić mały kwadrat w ruch (przy dojechaniu kwadratu do jednego z boków okna aplikacji, kwadrat ten ulega odbiciu). Kwadrat porusza się aż do czasu wciśnięcia przycisku Stop.
Laboratorium 15
1. Cel ćwiczenia
Celem ćwiczenia jest zapoznanie się z obsługą C++ w środowisku Microsoft Visual C++.
2. Przykłady
Zad1
Przykład aplikacji logowanie, gdzie należy wpisać poprawny Login i Hasło aby dostać informację o wprowadzeniu prawidłowych danych. W przeciwnym wypadku dostaniemy komunikat iż wprowadzone przez nas dane są nieprawidłowe.
#pragma once
namespace logowanie {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
/// <summary>
/// Summary for Form1
///
/// WARNING: If you change the name of this class, you will need to change the
/// 'Resource File Name' property for the managed resource compiler tool
/// associated with all .resx files this class depends on. Otherwise,
/// the designers will not be able to interact properly with localized
/// resources associated with this form.
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::Label^ label1;
protected:
private: System::Windows::Forms::Label^ label2;
private: System::Windows::Forms::TextBox^ login;
private: System::Windows::Forms::TextBox^ haslo;
private: System::Windows::Forms::Button^ button1;
private: System::Windows::Forms::Button^ button2;
private: System::Windows::Forms::Timer^ timer1;
private: System::Windows::Forms::ProgressBar^ progressBar1;
private: System::ComponentModel::IContainer^ components;
private:
/// <summary>
/// Required designer variable.
/// </summary>
#pragma region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent(void)
{
this->components = (gcnew System::ComponentModel::Container());
this->label1 = (gcnew System::Windows::Forms::Label());
this->label2 = (gcnew System::Windows::Forms::Label());
this->login = (gcnew System::Windows::Forms::TextBox());
this->haslo = (gcnew System::Windows::Forms::TextBox());
this->button1 = (gcnew System::Windows::Forms::Button());
this->button2 = (gcnew System::Windows::Forms::Button());
this->timer1 = (gcnew System::Windows::Forms::Timer(this->components));
this->progressBar1 = (gcnew System::Windows::Forms::ProgressBar());
this->SuspendLayout();
//
// label1
//
this->label1->AutoSize = true;
this->label1->Location = System::Drawing::Point(12, 48);
this->label1->Name = L"label1";
this->label1->Size = System::Drawing::Size(33, 13);
this->label1->TabIndex = 0;
this->label1->Text = L"Login";
//
// label2
//
this->label2->AutoSize = true;
this->label2->Location = System::Drawing::Point(12, 81);
this->label2->Name = L"label2";
this->label2->Size = System::Drawing::Size(36, 13);
this->label2->TabIndex = 1;
this->label2->Text = L"Hasło";
//
// login
//
this->login->Location = System::Drawing::Point(53, 45);
this->login->Name = L"login";
this->login->Size = System::Drawing::Size(100, 20);
this->login->TabIndex = 2;
//
// haslo
//
this->haslo->Location = System::Drawing::Point(53, 78);
this->haslo->Name = L"haslo";
this->haslo->PasswordChar = '*';
this->haslo->Size = System::Drawing::Size(100, 20);
this->haslo->TabIndex = 3;
this->haslo->TextChanged += gcnew System::EventHandler(this, &Form1::textBox2_TextChanged);
//
// button1
//
this->button1->Location = System::Drawing::Point(68, 156);
this->button1->Name = L"button1";
this->button1->Size = System::Drawing::Size(75, 23);
this->button1->TabIndex = 4;
this->button1->Text = L"Zaloguj";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
//
// button2
//
this->button2->Location = System::Drawing::Point(68, 185);
this->button2->Name = L"button2";
this->button2->Size = System::Drawing::Size(75, 23);
this->button2->TabIndex = 5;
this->button2->Text = L"Koniec";
this->button2->UseVisualStyleBackColor = true;
this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
//
// timer1
//
this->timer1->Tick += gcnew System::EventHandler(this, &Form1::timer1_Tick);
//
// progressBar1
//
this->progressBar1->Location = System::Drawing::Point(53, 127);
this->progressBar1->Name = L"progressBar1";
this->progressBar1->Size = System::Drawing::Size(100, 23);
this->progressBar1->TabIndex = 6;
this->progressBar1->Click += gcnew System::EventHandler(this, &Form1::progressBar1_Click);
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(208, 242);
this->Controls->Add(this->progressBar1);
this->Controls->Add(this->button2);
this->Controls->Add(this->button1);
this->Controls->Add(this->haslo);
this->Controls->Add(this->login);
this->Controls->Add(this->label2);
this->Controls->Add(this->label1);
this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::SizableToolWindow;
this->Name = L"Form1";
this->Text = L"Logowanie";
this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
this->ResumeLayout(false);
this->PerformLayout();
}
#pragma endregion
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
}
private: System::Void textBox2_TextChanged(System::Object^ sender, System::EventArgs^ e) {
}
private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e)
{
if(progressBar1->Value <=99) // Warunek z progress barem
{
this->progressBar1->Value++; // Dodajemy 1 do progress bara
}
else
{
this->timer1->Stop(); // Wyłącznie timera
if(login->Text == "Student" && haslo->Text == "student1") // Wybieramy login i hasło
{
MessageBox::Show("Dane są poprawne. Jestes zalogowany jako: "+login->Text); // Wyswietlenie komunikatu ze dane sa prawidlowe
progressBar1->Value = 0; // Zerowanie progress baru
}
else
{
MessageBox::Show("Login lub hasło są nieprawidłowe."); // Wyswietlenie komunikatu ze dane sa zle
progressBar1->Value = 0; // Zerowanie progress baru
login->Text = ""; // Wyzerowanie loginu(puste pole)
haslo->Text = ""; // Wyzerowanie hasła(puste pole)
}
}
}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
this->timer1->Start(); // Włączamy timera
}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e)
{
Close(); // Funkcja zamykająca program
}
private: System::Void progressBar1_Click(System::Object^ sender, System::EventArgs^ e) {
}
};
}
Zad2
Przykładowa aplikacja za zadanie ma wypisywać w polu tekstowym wyraz który został wpisany w pole Tekst z częstotliwością czasu jaki został ustawiony w polu Czas (przy czym wartości wpisana 3000 = 3 sekundy). Przycisk Start służy do uruchomienia działania aplikacji, Stop do zatrzymania a przycisk OK do ustawienia (akceptowania) wprowadzonego czasu.
Aby było widoczne działanie aplikacji, należy uruchomić edytor tekstu (np. notatnik) i po wystartowaniu aplikacji, ustawieniu czasu postawić kursor myszy na polu tekstowym edytora tekstu (kliknąć myszą w polu edytora).
#pragma once
namespace spamer {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
/// <summary>
/// Summary for Form1
///
/// WARNING: If you change the name of this class, you will need to change the
/// 'Resource File Name' property for the managed resource compiler tool
/// associated with all .resx files this class depends on. Otherwise,
/// the designers will not be able to interact properly with localized
/// resources associated with this form.
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::Timer^ timer1;
protected:
private: System::Windows::Forms::TextBox^ textBox1;
private: System::Windows::Forms::TextBox^ textBox2;
private: System::Windows::Forms::Label^ Czas;
private: System::Windows::Forms::Label^ Tekst;
private: System::Windows::Forms::Button^ Start;
private: System::Windows::Forms::Button^ Stop;
private: System::Windows::Forms::Button^ Ustaw;
private: System::ComponentModel::IContainer^ components;
private:
/// <summary>
/// Required designer variable.
/// </summary>
#pragma region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent(void)
{
this->components = (gcnew System::ComponentModel::Container());
this->timer1 = (gcnew System::Windows::Forms::Timer(this->components));
this->textBox1 = (gcnew System::Windows::Forms::TextBox());
this->textBox2 = (gcnew System::Windows::Forms::TextBox());
this->Czas = (gcnew System::Windows::Forms::Label());
this->Tekst = (gcnew System::Windows::Forms::Label());
this->Start = (gcnew System::Windows::Forms::Button());
this->Stop = (gcnew System::Windows::Forms::Button());
this->Ustaw = (gcnew System::Windows::Forms::Button());
this->SuspendLayout();
//
// timer1
//
this->timer1->Tick += gcnew System::EventHandler(this, &Form1::timer1_Tick);
//
// textBox1
//
this->textBox1->Location = System::Drawing::Point(61, 26);
this->textBox1->Name = L"textBox1";
this->textBox1->Size = System::Drawing::Size(100, 20);
this->textBox1->TabIndex = 0;
//
// textBox2
//
this->textBox2->Location = System::Drawing::Point(61, 74);
this->textBox2->Name = L"textBox2";
this->textBox2->Size = System::Drawing::Size(100, 20);
this->textBox2->TabIndex = 1;
//
// Czas
//
this->Czas->AutoSize = true;
this->Czas->Location = System::Drawing::Point(13, 32);
this->Czas->Name = L"Czas";
this->Czas->Size = System::Drawing::Size(30, 13);
this->Czas->TabIndex = 2;
this->Czas->Text = L"Czas";
//
// Tekst
//
this->Tekst->AutoSize = true;
this->Tekst->Location = System::Drawing::Point(13, 81);
this->Tekst->Name = L"Tekst";
this->Tekst->Size = System::Drawing::Size(34, 13);
this->Tekst->TabIndex = 3;
this->Tekst->Text = L"Tekst";
//
// Start
//
this->Start->Location = System::Drawing::Point(182, 26);
this->Start->Name = L"Start";
this->Start->Size = System::Drawing::Size(75, 23);
this->Start->TabIndex = 4;
this->Start->Text = L"Start";
this->Start->UseVisualStyleBackColor = true;
this->Start->Click += gcnew System::EventHandler(this, &Form1::Start_Click);
//
// Stop
//
this->Stop->Location = System::Drawing::Point(182, 71);
this->Stop->Name = L"Stop";
this->Stop->Size = System::Drawing::Size(75, 23);
this->Stop->TabIndex = 5;
this->Stop->Text = L"Stop";
this->Stop->UseVisualStyleBackColor = true;
this->Stop->Click += gcnew System::EventHandler(this, &Form1::Stop_Click);
//
// Ustaw
//
this->Ustaw->Location = System::Drawing::Point(71, 112);
this->Ustaw->Name = L"Ustaw";
this->Ustaw->Size = System::Drawing::Size(75, 23);
this->Ustaw->TabIndex = 6;
this->Ustaw->Text = L"OK";
this->Ustaw->UseVisualStyleBackColor = true;
this->Ustaw->Click += gcnew System::EventHandler(this, &Form1::Ustaw_Click);
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(284, 158);
this->Controls->Add(this->Ustaw);
this->Controls->Add(this->Stop);
this->Controls->Add(this->Start);
this->Controls->Add(this->Tekst);
this->Controls->Add(this->Czas);
this->Controls->Add(this->textBox2);
this->Controls->Add(this->textBox1);
this->Name = L"Form1";
this->Text = L"Form1";
this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
this->ResumeLayout(false);
this->PerformLayout();
}
#pragma endregion
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
}
private: System::Void Start_Click(System::Object^ sender, System::EventArgs^ e)
{
timer1->Start(); // Włączamy timera
}
private: System::Void Stop_Click(System::Object^ sender, System::EventArgs^ e)
{
timer1->Stop(); // Wyłączamy timera
}
private: System::Void Ustaw_Click(System::Object^ sender, System::EventArgs^ e)
{
timer1->Interval = int::Parse(textBox1->Text); // Czas w ms
}
private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e)
{
SendKeys::Send(textBox2->Text); // Wypisanie tekstu jaki ustawimy
SendKeys::Send("{ENTER}"); // Za każdym kliknięciem naciskaj "ENTER"
}
};
}
Zad3
Przykładowa aplikacja za zadanie ma mnożyć wpisane przez użytkownika wartości. Odpowiednie wartości pól przy odpowiednim wciśnięciu przycisku.
#pragma once
namespace funkcja {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
/// <summary>
/// Summary for Form1
///
/// WARNING: If you change the name of this class, you will need to change the
/// 'Resource File Name' property for the managed resource compiler tool
/// associated with all .resx files this class depends on. Otherwise,
/// the designers will not be able to interact properly with localized
/// resources associated with this form.
/// </summary>
long mnozenie(int par1,int par2)
{
long wynik;
wynik = par1*par2;
MessageBox::Show (Convert::ToString(wynik),"Wynik");
return (wynik);
};
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::Label^ label1;
protected:
private: System::Windows::Forms::Label^ label2;
private: System::Windows::Forms::Label^ label3;
private: System::Windows::Forms::TextBox^ Wpis1;
private: System::Windows::Forms::TextBox^ Wpis2;
private: System::Windows::Forms::TextBox^ Wpis3;
private: System::Windows::Forms::Button^ button1;
private: System::Windows::Forms::Button^ button2;
private: System::Windows::Forms::Button^ button3;
private:
/// <summary>
/// Required designer variable.
/// </summary>
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent(void)
{
this->label1 = (gcnew System::Windows::Forms::Label());
this->label2 = (gcnew System::Windows::Forms::Label());
this->label3 = (gcnew System::Windows::Forms::Label());
this->Wpis1 = (gcnew System::Windows::Forms::TextBox());
this->Wpis2 = (gcnew System::Windows::Forms::TextBox());
this->Wpis3 = (gcnew System::Windows::Forms::TextBox());
this->button1 = (gcnew System::Windows::Forms::Button());
this->button2 = (gcnew System::Windows::Forms::Button());
this->button3 = (gcnew System::Windows::Forms::Button());
this->SuspendLayout();
//
// label1
//
this->label1->AutoSize = true;
this->label1->Location = System::Drawing::Point(12, 19);
this->label1->Name = L"label1";
this->label1->Size = System::Drawing::Size(23, 13);
this->label1->TabIndex = 0;
this->label1->Text = L"A =";
//
// label2
//
this->label2->AutoSize = true;
this->label2->Location = System::Drawing::Point(13, 50);
this->label2->Name = L"label2";
this->label2->Size = System::Drawing::Size(23, 13);
this->label2->TabIndex = 1;
this->label2->Text = L"B =";
//
// label3
//
this->label3->AutoSize = true;
this->label3->Location = System::Drawing::Point(13, 80);
this->label3->Name = L"label3";
this->label3->Size = System::Drawing::Size(23, 13);
this->label3->TabIndex = 2;
this->label3->Text = L"C =";
//
// Wpis1
//
this->Wpis1->Location = System::Drawing::Point(53, 19);
this->Wpis1->Name = L"Wpis1";
this->Wpis1->Size = System::Drawing::Size(58, 20);
this->Wpis1->TabIndex = 3;
this->Wpis1->Text = L"1";
this->Wpis1->TextChanged += gcnew System::EventHandler(this, &Form1::Wpis1_TextChanged);
//
// Wpis2
//
this->Wpis2->Location = System::Drawing::Point(53, 50);
this->Wpis2->Name = L"Wpis2";
this->Wpis2->Size = System::Drawing::Size(58, 20);
this->Wpis2->TabIndex = 4;
this->Wpis2->Text = L"2";
this->Wpis2->TextChanged += gcnew System::EventHandler(this, &Form1::Wpis2_TextChanged);
//
// Wpis3
//
this->Wpis3->Location = System::Drawing::Point(53, 80);
this->Wpis3->Name = L"Wpis3";
this->Wpis3->Size = System::Drawing::Size(58, 20);
this->Wpis3->TabIndex = 5;
this->Wpis3->Text = L"3";
//
// button1
//
this->button1->Location = System::Drawing::Point(136, 19);
this->button1->Name = L"button1";
this->button1->Size = System::Drawing::Size(75, 23);
this->button1->TabIndex = 6;
this->button1->Text = L"A * B";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
//
// button2
//
this->button2->Location = System::Drawing::Point(136, 50);
this->button2->Name = L"button2";
this->button2->Size = System::Drawing::Size(75, 23);
this->button2->TabIndex = 7;
this->button2->Text = L"B * C";
this->button2->UseVisualStyleBackColor = true;
this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
//
// button3
//
this->button3->Location = System::Drawing::Point(136, 80);
this->button3->Name = L"button3";
this->button3->Size = System::Drawing::Size(75, 23);
this->button3->TabIndex = 8;
this->button3->Text = L"A * C";
this->button3->UseVisualStyleBackColor = true;
this->button3->Click += gcnew System::EventHandler(this, &Form1::button3_Click);
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(247, 130);
this->Controls->Add(this->button3);
this->Controls->Add(this->button2);
this->Controls->Add(this->button1);
this->Controls->Add(this->Wpis3);
this->Controls->Add(this->Wpis2);
this->Controls->Add(this->Wpis1);
this->Controls->Add(this->label3);
this->Controls->Add(this->label2);
this->Controls->Add(this->label1);
this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::FixedToolWindow;
this->Name = L"Form1";
this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen;
this->Text = L"Funkcja";
this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
this->ResumeLayout(false);
this->PerformLayout();
}
#pragma endregion
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
int zm_A;
int zm_B;
long zm_Wynik;
zm_A = Convert::ToInt16 (Wpis1->Text);
zm_B = Convert::ToInt16 (Wpis2->Text);
zm_Wynik = mnozenie (zm_A,zm_B);
}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e)
{
mnozenie (Convert::ToInt16(Wpis2->Text), Convert::ToInt16(Wpis3->Text));
}
private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e)
{
mnozenie (Convert::ToInt16(Wpis1->Text), Convert::ToInt16(Wpis3->Text));
}
private: System::Void Wpis1_TextChanged(System::Object^ sender, System::EventArgs^ e) {
}
private: System::Void Wpis2_TextChanged(System::Object^ sender, System::EventArgs^ e) {
}
};
}
3. Program ćwiczenia
Zad4
Należy wykonać aplikację która będzie wykonywać odpowiednie operacje przy wciśnięciu konkretnego przycisku. Czyli, jeden przycisk jest odpowiedzialny za operację dzielenia, drugi za operację dodawania a trzeci za operację odejmowania. Przy wyświetlanym wyniku należy dodać informację z jakieś operacji jest ten wynik. Aplikacja ma być również wyposażona w przycisk który będzie zamykał aplikację.
Poniżej zdjęcie aplikacji.
Zad5
Należy wykonać aplikację która będzie dodawała wartości heksadecymalne (szesnastkowe) i następnie konwertowało wynik do postaci dziesiętnej. Poniżej zdjęcie aplikacji.
74
Podstawy Informatyki