Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
POLITECHNIKA CZ STOCHOWSKA
WYDZIAŁ IN YNIERII MECHANICZNEJ I INFORMATYKI
„Metody kompleksowego zarz dzania jako ci . Opracowanie programu
do kart kontrolnych wła ciwo ci liczbowych. Karta kontrolna redniej
ruchomej”
Napisał: Tomasz Bylica
Promotor: prof. dr. hab. in . Paweł Sewastianow
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
SPIS TRE CI
I.
WST P……………………………………………………………………….........
2
II.
METODY KOMPLEKSOWEGO ZARZ DZANIA JAKO CI ………………. 4
1.
Metody planowania…………………………………………………… 4
2.
Metody i techniki organizowania pracy……………………………… 5
3.
Metody motywowania………………………………………………… 7
4.
Techniki kontroli mened erskiej……………………………………….. 11
III.
STATYSTYCZNA ANALIZA WYDOLNO CI PROCESU…………………… 14
1.
Badanie wydolno ci procesu przy alternatywnej ocenie wła ciwo ci
produktu……………………………………………………………….. 15
2.
Badanie wydolno ci procesu przy liczbowej ocenie wła ciwo ci
produktu……………………………………………………………….. 15
IV.
STEROWANIA PROCESAMI ZA POMOC KART KONTROLNYCH……. 17
V.
WST P DO PROGRAMOWANIA W J ZYKU C/C++…………………………
21
1.
Wprowadzenie......................................................................................... 21
2.
Operatory.................................................................................................. 23
3.
Instrukcje................................................................................................. 25
4.
Funkcje.................................................................................................... 28
5.
Budowa programu. ................................................................................. 31
6.
Klasy i obiekty......................................................................................... 31
7.
Dziedziczenie i polimorfizm................................................................... 33
VI.
PROGRAMOWANIE DLA WINDOWS Z WYKORZYSTANIEM
OWL(OBIEKT WINDOW LIBRARY) ..................................................................
35
VII.
PRAKTYCZNY CZ
TWORZENIA PROGRAMU KART
KONTROLNYCH.................................................................................................. 41
VIII.
BIBIOGRAFIA....................................................................................................... 58
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
I. WST P
U podstaw wszelkich działa człowieka le y ch zaspokojenia odczuwanych potrzeb.
Pierwotne potrzeby człowieka pozostaj niemal niezmienione w całej historii cywilizacji.
Od pocz tku swych dziejów człowiek odczuwa:
potrzeb od ywiania si w celu utrzymania procesów yciowych
potrzeb posiadania ubrania w celu ochrony przed oddziaływaniem
czynników atmosferycznych
potrzeb posiadania mieszkania jako wydzielonej przestrzeni chroni cej
przed bezpo rednim oddziaływaniem otoczenia
potrzeb komunikowania si w celu wymiany informacji
potrzeb przemieszczania si .
Poziom wa no ci tych potrzeb jest okre lony przez rodowisko naturalne, a tak e
uwarunkowania społeczne i kulturalne.
Zbiór pierwotnych potrzeb człowieka, zaliczanych do tak zwanych potrzeb niedoboru,
pozostaje niemal stały, o tyle technologie ich zaspokajania podlegaj ci głym zmianom,
a technologia zaspokajania potrzeb jest pewn koncepcj zwi zan zwykle z praktycznym
wykorzystaniem wynalazku lub odkrycia naukowego, konkretny wyrób lub usługa jest
natomiast realizacj owej ogólnej koncepcji.
W systemach społeczno-ekonomicznych proces zaspokajania potrzeb rozwija si pod
wpływem bod ców emitowanych przez rynek. Pierwotnym ródłem tych bod ców s
rozbie no ci mi dzy istniej cym i oczekiwanym poziomem zaspokojenia odczuwanych
potrzeb. Im wyra niejsze s te rozbie no ci oraz im zamo niejsza jest popytowa strona
rynku, tym silniejszy jest nacisk na doskonalenie jako ci oferowanych na tym rynku
produktów. Produktów takiej sytuacji, zwłaszcza w przypadku owych zamo niejszych
rynków, jako oferowanego produktu staje si podstawowym i najbardziej efektywnym
instrumentem konkurencji handlowej. W coraz wi kszym stopniu pozycja
przedsi biorstwa na rynku zale y od jako ci produkowanych wyrobów lub wiadczonych
usług. Wynika st d bezpo rednio, e wszelkie problemy zwi zane z procesami kreowania
i ochrony jako ci produktów nale y postrzega w kontek cie uwarunkowa rynkowych.
Z punktu widzenia celów i potrzeb zarz dzania jako ci rynek jest systemem relacyjnym,
w którym kształtuj si zarówno decyzje konsumentów, dotycz ce zakupu konkretnych
produktów, jak i decyzje konsumentów, dotycz ce zakupu konkretnych produktów, jak
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
i decyzje producentów odniesieniu do jako ci wytwarzanych wyrobów albo
wiadczonych usług.
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
II. METODY KOMPLEKSOWEGO ZARZ DZANIA JAKO CI
1. Metody planowania
Ostatnie dziesi ciolecie cechuje rosn ca zmienno i zło ono warunków działania
podmiotów gospodarczych. Powoduje to, e nieustannie poszukuje si sposobów
rozpoznawania i ograniczania niepewno ci oraz minimalizacji ryzyka, jakie towarzyszy
podejmowanym decyzjom, zwłaszcza strategicznym. Rozpoznawaniu przyszło ci słu
metody prognozowania i planowania, w ród których wyró niamy:
a.
Metody scenariuszowe
Metoda scenariuszowa polega na budowie kilku wariantów scenariuszy przyszło ci,
czyli konstruowaniu logicznego, przypuszczalnego opisu zdarze , jakie mog
wyst pi w przedsi biorstwie jego otoczeniu w przyszło ci, aby okre li wła ciwe
cele i przygotowa odpowiednie strategie działania.
b.
Metody symulacyjne
Termin „symulacja” w nauce oznacza odwzorowanie oraz sztuczne odtwarzanie
i na ladowanie procesów realnych z zastosowaniem ró norodnych modeli
fizycznych, analogowych i matematycznych.
c.
Wykresy Gantta
Za pomoc wykresu Gantta mo na nie tylko planowa i kontrolowa wykonanie
planu, ale tak e – poprzez zastosowanie odpowiedniego systemu oznacze –
uwzgl dnia zmienno przebiegu wykonania zadania.
d.
Planowanie sieciowe
Technik planowania sieciowego stosuje si do planowania i kontroli realizacji
zło onych przedsi wzi gospodarczych, technicznych organizacyjnych przy
zało eniu racjonalnego wykorzystania zasobów. Przykładem zastosowania tej
techniki mo e by planowanie realizacji du ych inwestycji lub remontów
kapitalnych, uruchomienie produkcji nowego wyrobu, zorganizowanie du ej
imprezy itp.
e.
Metody analizy portfelowej
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
Metody analizy portfela umo liwiaj porównywanie, według jednolitych kryteriów
ró nych dziedzin działalno ci przedsi biorstwa i zarz dzanie „portfelem” tych
działalno ci w celu uzyskania mo liwie najlepszej pozycji konkurencyjnej.
f.
Metodyka budowy biznes planu przedsi biorstwa
Biznes plan to przygotowywany dla celów wewn trznych lub zewn trznych
dokument stanowi cy zbiór analiz, prognoz i planów opisuj cych całe
przedsi biorstwo lub pojedyncze przedsi wzi cie (np. wprowadzanie nowego
produktu na rynek) od strony celu, przedmiotu, zewn trznych i wewn trznych
uwarunkowa działalno ci, koniecznych do zaanga owania zasobów finansowych,
osobowych i rzeczowych, spodziewanych efektów finansowych, osobowych
i rzeczowych, spodziewanych efektów finansowych i czynników ryzyka.
1
2. Metody i techniki organizowania pracy
Analizuj c pogl dy ró nych autorów na temat metodologii badania i projektowania
organizatorskiego a nawet technicznego mo na zauwa y , e w praktyce istniej dwie
podstawowe metody projektowania i doskonalenia organizacji a mianowicie:
Metoda diagnostyczna.
Metoda prognostyczna.
W obu metodach, a tak e w doskonaleniu ka dego ludzkiego działania nale y
post powa według z góry okre lonej procedury organizacyjnej zapewniaj cej wysok
sprawno i efektywno .
Metoda diagnostyczna bazuje na przekonaniu,
e organizacj dotychczas
funkcjonuj cego systemu mo na usprawni tylko w drodze identyfikacji, diagnozy
i oceny stanu istniej cego, wykryciu wszelkich nieprawidłowo ci oraz zaprojektowaniu
i wdro eniu niezb dnych usprawnie . Rozpoczynaj c analiz diagnostyczn nale y
precyzyjnie ustali cele badawcze. Ogólnym celem badania jest zawsze poprawa
organizacji lub zarz dzania a przez to sprawno ci funkcjonowania przedsi biorstwa jako
cało ci, natomiast celem szczegółowym udoskonalenia struktury lub organizacji
przebiegu działa na konkretnym odcinku działalno ci przedsi biorstwa. Badanie
i usprawnienie organizacji w całym systemie jest zazwyczaj trudne, dlatego te
1
„Metody sprawnego zarz dzania” Henryk Bieniok i zespół, Agencja Wydawnicza „Placet” Warszawa
1999, str. 11-54
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
przedmiotem badania s tylko niektóre starannie wybrane podsystemy przedsi biorstwa.
W procesie wyboru przedmiotu badania nale y bra pod uwag kryteria:
• Ekonomiczne, uwzgl dniaj ce konieczno likwidacji w skich ogniw, popraw
indywidualnej wydajno ci pracy, obni k kosztów własnych, popraw
efektywno ci, rentowno ci itp.
• Techniczne, takie jak np. konieczno doprowadzenia nowo uruchomionej
instalacji do pełnej zdolno ci produkcyjnej, uruchomienie produkcji nowego
wyboru, skróceniu cyklu produkcyjnego itp.
• Fizjologiczno-psychologiczne, uwzgl dniaj ce zmniejszeniu zm czenia
fizycznego i psychicznego ludzi, popraw warunków bhp, zwi kszenie komfortu
pracy itp.
• rodowiskowe,
uwzgl dniaj ce
reakcj
otoczenia
oraz
samych
zainteresowanych.
Podstaw
metody prognostycznej jest przekonanie, e dokonanie istotnego usprawnienia
organizacji jest mo liwe jedynie w oderwaniu od istniej cych rozwi za , które obci aj
psychicznie organizatora, a przez to rzutuj ograniczaj co na projektowany system i nie
pozwalaj na nowatorskie spojrzenie.
Główn metod prognostyczn stworzon przez G. Nadlera jest synteza tzw. systemu
idealnego. System idealny jest pod ka dym wzgl dem najdoskonalszy, działaj cy bez
jakichkolwiek ogranicze i realizuj cy swoje zadania w idealnych warunkach. Przy jego
konstrukcji przyjmuje si nierzeczywiste zało enie istnienia doskonałych warunków
działania, w których system wypełnia w sposób idealny wyznaczone funkcje. Taki system
ma oczywi cie charakter czysto teoretyczny, w praktyce nieosi galny, jednak operowanie
tego typu wzorcem okazuje si wysoce przydatne, gdy uzyskany w ten sposób pó niej
system realny charakteryzuje si wy szym poziomem rozwi za ani eli system
otrzymany w drodze mozolnej analizy i doskonalenia stanu istniej cego (zastosowanie
metody diagnostycznej).
System Nadlera udawania, e racjonalne ukształtowanie organizacji nie jest wynikiem
syntezy usprawnionych elementów, lecz odwrotnie, pochodn cało ciowej koncepcji
idealnej. Kieruj c si dalej musimy poszuka rozwi zania realnego (kompromisowego)
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
wychodz cego od koncepcji idealnej i zbli aj c j stopniowo do koncepcji spełniaj cej
warunki ograniczaj ce istniej ce w realnej rzeczywisto ci.
2
3. Metody motywowania
Poprzez metody motywowania mo emy wyró ni :
a.
Zarz dzanie przez cele
Idea przewodnia i swoista filozofia Zarz dzani przez cele skoncentrowana jest na
wspólnym (przeło eni i podwładni) okre laniu negocjowaniu celów, wspólnym
ustalaniu mierników po danych wyników ko cowych oraz na wspólnych
okresowych przegl dach i ocenie uzyskanych rezultatów. Wprowadzaj c powy sz
ide powinni my pami ta , e:
• Im wi kszy udział kierowników i podwładnych we wspólnym
precyzowaniu celów, tym wy sze prawdopodobie stwo ich realizowania,
• Podwładni, którzy sami okre laj własne cele, albo współuczestnicz w ich
ustalaniu uzyskuj lepsze wyniki od tych, którym cele te s narzucane.
Pracownicy, którzy postawili przed sob konkretny cel osi gaj lepsze wyniki
od tych, którzy staraj si robi tylko to, co do nich nale y.
b.
Zarz dzanie prze delegowanie uprawnie
Naczeln zasad le c u podstaw zarz dzania przez delegowanie uprawnie jest
przekazywanie innej osobie, ni szym szczeblu zarz dzania cz ci formalnej władzy
i odpowiedzialno ci za wykonanie okre lonych zada .
c.
Zarz dzanie przez wyj tki (odchylenia)
Istot systemu zarz dzanie przez wyj tki jest identyfikacja „wyj tków” (odchyle ),
czyli wła nie tego, co odbiega od obowi zuj cych standardów, planów, wzorców,
norm i rutynowych zachowa organizacyjnych oraz oparty na wyj tkach systemu
informacji i decyzji w organizacji. W praktycznym rozumowaniu i zgodnie z zasad
wyj tków, kierownik powinien otrzymywa tylko skondensowane, streszczone
i porównywalne informacje, które powinny ujmowa najwa niejsze dla zarz dzania
elementy stanu rzeczywistego i wszystkie wyj tki w stosunku do dotychczasowych
warto ci przeci tnych lub standardowych zarówno te szczególnie dobre, jak
2
„Metody sprawnego zarz dzania” Henryk Bieniok i zespół, Agencja Wydawnicza „Placet” Warszawa
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
i szczególnie złe. Dzi ki nim kierownik mo e w ci gu kilku minut mie pełny
obraz, jak du y osi gni to post p.
d.
Zarz dzanie przez wyniki (rezultaty)
Zarz dzenie przez wyniki zakłada formułowanie konkretnych celów i zada dla
poszczególnych komórek organizacyjnych, z nast pnie rozliczanie ich
z uzyskanych wyników, które w naukach ekonomicznych, a zwłaszcza
w rachunkowo ci i finansach s definiowane jako ró nica mi dzy dochodami
a nakładami, czyli zysk.
e.
Zarz dzanie przez zadania
Zarz dzanie przez zadania polega najogólniej mówi c na formułowaniu przez
kierownika, konkretnych mobilizuj cych zada rzeczowych oraz na zlecaniu ich do
wykonania podwładnym wraz z okre leniem terminów ich realizacji. Ka demu
zadaniu ustala si na ogół norm (granic ) czas, w którym zadanie ma by
wykonane.
f.
Zarz dzanie przez innowacje
Zarz dzanie przez innowacje zmierza do rozwoju przedsi biorstwa przez
wprowadzanie szeroko poj tych zmian (usprawnie , udoskonale , innowacji)
przede
wszystkim
w
przełomowych
obszarach
działalno ci
firmy.
W przedsi biorstwach ukierunkowanych na rozwój innowacje s niekwestionowan
konieczno ci generuj c pozytywne tendencje efektywno ciowe. Aby si rozwija
trzeba odrzuci wygodnictwo, bierno i postawy zachowawcze, przyjmuj c
ofensywny styl działania, wymagaj cy stałego wysiłku i gotowo ci do reakcji na
obserwowane zachowania klientów i konkurentów.
g.
Zarz dzanie przez partycypacj
Celem zarz dzania przez partycypacj jest wzrost aktywno ci podwładnych oraz
zaspokojenie ich potrzeb wy szego rz du (samorealizacji, uznania, przynale no ci)
w drodze dopuszczenia ich do procesu podejmowania decyzji. Akceptuj c model
partycypacji pracowniczej kierownictwo ma nadziej , e mo e skutecznie
1999, str. 56-82
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
realizowa cele organizacji wyci gaj c pracowników do aktywnego
współuczestnictwa w procesy zarz dzania, organizowania pracy, kreowania
i wdra ania innowacji oraz do współdecydowania o wszystkich najwa niejszych
sprawach przedsi biorstwa. Nic tak nie szkodzi przedsi biorstwu, jak przekonanie
kierownictwa, e wie lepiej od pracowników, jakie s przyczyny niepowodze i e
ma wył czn m dro jak im zaradzi .
h.
Zarz dzanie przez komunikowanie si
Bezpo rednim celem zarz dzania przez komunikowanie si jest doinformowanie
i dowarto ciowanie załogi, w nadziei, e przyczyni si ona do stworzenia klimatu
wzajemnego zaufania pomi dzy kierownictwem a podwładnym, a dzi ki temu do
lepszej motywacji i pozytywnych zachowa pracowników na rzecz organizacji.
W przedsi biorstwie komunikowanie si jest głównym procesem organizacyjnym
polegaj cym na wymianie informacji mi dzy ró nymi uczestnikami procesów
społeczno-gospodarczych. Komunikowanie si kierownictwa z pracownikami słu y
dwom celom:
• Tłumaczy abstrakcyjne cele i plany kierownictwa na j zyk wyzwalaj cy
aktywne działania pracowników,
• Ł czy działania ludzi całej organizacji we wspólnym kierunku.
i.
Zarz dzanie przez konflikt
Zarz dzenie przez konflikt w przedsi biorstwie polega na mo liwie wczesnym
wykrywaniu potencjalnych ródeł sporów nieporozumie , aby podj odpowiednie
rodki zapobiegawcze. Zadaniem kierowników jest zapanowanie nad konfliktami
w sensie sterowania tymi procesami, w kierunku ich „skanalizowania”
i wykorzystania dla dobra przedsi biorstwa. Korzenie konfliktu tkwi przede
wszystkim w sferze emocjonalnej człowieka, a nie w obiektywnie istniej cej
rzeczywisto ci.
j.
Zarz dzanie przez motywacj
Motywowanie polega na wpływaniu na postawy i zachowania człowieka za
po rednictwem okre lonych bod ców, które przekształcaj si w motywy (pobudki)
działania uruchamiaj ce jego aktywno . Motywowanie do pracy polega na
stosowaniu szeregu zró nicowanych indywidualnie narz dzi i instrumentów
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
oddziaływania na człowieka. Sterowanie zachowaniami pracowników w kierunku
skłonienia ich do ofiarnej i efektywnej pracy na rzecz firmy polega na bezustannym
i systematycznym stwarzaniu ró nych sytuacji oddziałuj cych na ich indywidualne
i bardzo zró nicowane potrzeby. W szczególno ci pobudzanie do pracy sprowadza
si zasadniczo do:
• Stwarzania okre lonych zach t (sytuacji n c cych) b d to materialnych
(płaca, premia, nagroda, udział w zyskach itp.) b d niematerialnych (pro ba,
namowa, pochwała, wyrazy uznania itp.),
• Stwarzanie sytuacji przymusowej poprzez stosowanie nakazów, gró b
i ró nego rodzaju kar.
k.
Zarz dzania przez grupy autonomiczne
Zarz dzania przez grupy autonomiczne polega na tworzeniu, głównie na
najni szych szczeblach wykonawczych (np. na szczeblu brygady roboczej)
samodzielnych grup roboczych, pozbawionych formalnego kierownika, w których
funkcj t spełnia demokratycznie wybrany lider (przywódca).
l.
Zarz dzanie przez inspirowanie
Zarz dzanie przez inspirowanie zmierza do poprawy motywacji oraz podniesienia
ch ci działania podwładnych poprzez skłonienie do współpracy z oficjalnym
kierownictwem nieformalnego przywódcy grupy, w sytuacji, kiedy mało skuteczne
s inicjatywy, zamierzenia i polecenia kierownictwa formalnego.
m.
Zarz dzanie przez zespoły twórcze
Zarz dzanie przez zespoły twórcze polega na tworzeniu kilkuosobowych zespołów
innowacyjnych, zło onych ze specjalnie wyselekcjonowanych ludzi celu ledzenia
literaturze bli szym i dalszym otoczeniu najnowszych trendów rozwoju techniki,
technologii, ekonomii, organizacji i zarz dzania oraz wykorzystaniu ich literaturze
drodze adaptacji do budowy i doskonalenia strategii funkcjonowania i rozwoju
własnego przedsi biorstwa
n.
Zarz dzanie przez doskonalenie i rozwój pracowników
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
Zarz dzanie przez doskonalenie i rozwój pracowników polega na inwestowaniu
literaturze ludzi, aby zapewni sobie zdolnych i efektywnych współpracowników
oraz kompetentnych nast pców.
o.
Zarz dzanie przez formalizacj
Zarz dzanie przez formalizacj polega na kierowaniu lud mi i instytucjami za
pomoc szczegółowo okre lonych przepisów organizacyjnych w postaci zarz dze ,
okólników, regulaminów, instrukcji, kart stanowisk pracy, itp. Jego celem jest
ograniczenie dowolno ci (samowoli, woluntaryzmu) działania pracowników oraz
skłonienie ich do wzorcowego wykonywania pracy okre lonego przepisami.
p.
Zarz dzanie przez ryzyko
Zarz dzanie przez ryzyko polega na identyfikacji i analizowaniu sytuacji
ryzykownych wynikaj cych literaturze zagro e oraz szans i okazji pojawiaj cych
si literaturze otoczeniu w celu optymalizacji decyzji oraz opracowaniu strategii ich
wprowadzania w ycie, przy jednoczesnej minimalizacji niepewno ci.
W literaturze i praktyce mo na spotka bardzo wiele metod i technik, których celem
jest motywacja do pracy i wyzwalanie aktywno ci pracowniczej. Mo na wr cz
powiedzie , e cał filozofia efektywno ci przedsi biorstwa sprowadza si
bezpo rednio, albo po redni do pobudzania ludzi w kierunku ofiarnej pracy na rzecz
swojej firmy.
4. Techniki kontroli mened erskiej
a.
Zarz dzanie przez stosowanie zasad nadzoru i kontroli
Kontrola kierownicza polega na porównaniu uzyskanego wyniku działania
z zaplanowanym oraz w razie stwierdzenia odchyle , na doprowadzeniu stanu
rzeczywistego do po danego (pierwotnie zamierzonego). Proces kontroli obejmuje
nadzór bie cy nad przebiegiem działa , jak i kontrol ko cow .
b.
Zarz dzanie przez kontrol na zasadzie sprz enia zwrotnego
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
Podstaw techniki kontroli jest cybernetyczny model sprz enia zwrotnego
zakładaj cy konieczno ka dorazowego dopływu od obiektu sterowanego
(regulowanego) do obiektu steruj cego (reguluj cego) informacji zwrotnej
(wynikowej) o sposobie realizacji norm pierwotnie zadanych obiektowi
sterowanemu.
W modelu sterowania wyst puj w uproszczeniu dwa typy obiektów:
• Obiekt steruj cy (reguluj cy – regulator) generuj cy impulsy w postaci
pewnych norm i zada (jest to obiekt kieruj cy, czyli kierownik)
• Obiekt sterowany (regulowany) – (wykonawca)
Ł cznikiem mi dzy obu obiektami jest proces kontroli, w którym oceniamy osi gi
wyniki z punktu widzenia stopnia realizacji pierwotnie okre lonych celów
i wyznaczonych na tej podstawie zada (norm zadaniowych). Kierownicy s tym
ogniwem w procesach zarz dzania, którzy powinni ci le wi za planowanie
i kontrolowanie. Planowanie jest pierwsz funkcj planowania, a kontrolowanie jest
funkcj ostatni , weryfikuj c rzeczywisto z pierwotnymi zamierzeniami
i oczekiwaniami.
c.
Zarz dzanie przez obchód
Zało eniem tej prostej, ale bardzo skutecznej techniki zarz dzania jest codzienny
kontakt ze wszystkimi pracownikami w celu okazania im swojego szczerego
zainteresowania tym co i jak robi . Stosowanie techniki zarz dzania przez obchód
wymagana jest nawet kilkakrotnych, ale krótkich obecno ci kierownika w ród
podwładnych. Obecno ta wyra a si w formie najlepiej nieregularnych, ale
codziennych obchodów stanowisk pracy w czasie, których istnieje mo liwo :
• Osobistego przywitania si i rozmowy z pracownikami (nawet w sprawach
rodzinnych), w celu ich lepszego poznania,
• Dokonanie obserwacji i rejestracji zarówno pozytywów, jak i negatywów
w przebiegu pracy,
• Wyra enia natychmiastowej pochwały i uznania za dobr prac , tam, gdzie
to jest uzasadnione,
• Wydania stosownych dyspozycji w celu usuni cia ewentualnych
nieprawidłowo ci,
• Zach cenia do lepszej pracy i dodania otuchy.
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
d.
Zarz dzanie przez inwigilacj
Inwigilacja polega na dyskretnej, ale systematycznej obserwacji pracy podwładnych
lub maszyny po to, aby tok zdarze przebiegał zgodnie z zamierzeniami
kierownika. Inwigilacji winna towarzyszy minimalizacja interwencji kierownika –
przybiera ona wówczas posta tzw. Inwigilacji czystej. Wyra a si ona w tym
przypadku jedynie pilnowaniem i zabezpieczaniem samoczynnie przebiegaj cego
procesu, ewentualnie wprowadzaniem (ale w ostateczno ci) poprawek, ilekro
procesy pracy przebiegaj nie tak, jak nale y. Wynika z tego, e kierownik
pozostaje w ci głej gotowo ci do interwencji, je li zajdzie taka potrzeba.
e.
Zarz dzanie przez kontrol strategiczn
Celem kontroli strategicznej jest zapewnienie skutecznego dostosowania firmy do
otoczenia i jej działania w kierunku realizacji celów strategicznych. Za kluczowe
obszary kontroli uwa a si istotne czynniki ograniczaj ce lub punkty newralgiczne
decyduj ce o przetrwaniu i dalszym rozwoju firmy.
f.
Zarz dzanie przez controlling
Controlling jest to kompleksowy i ponadfunkcyjny system sterowania
i nadzorowania przedsi biorstwem, wspieraj cy dyrekcj i kierowników ni szych
szczebli przy podejmowaniu decyzji. Controlling musi obejmowa całe
przedsi biorstwo w system kompleksowego planowania zada rzeczowych,
finansowych i kosztów oraz sterowania jego działalno ci i dostarczania
niezb dnych informacji, a tak e nadzorowania i rozliczania centrów gospodarczych
z realizacji uzgodnionych zada . Jego zadaniem dodatkowym jest wspieranie
naczelnego kierownictwa nowymi wersjami strategii rozwoju przedsi biorstwa,
uwzgl dniaj cymi przy tym nie tylko ju zaobserwowane, ale tak e spodziewane
zmiany w otoczeniu.
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
III. STATYSTYCZNA ANALIZA WYDOLNO CI PROCESU
Decyzja o podj ciu produkcji wyrobu b d o rozpocz ciu wiadczenia dowolnej usługi
powinna by poprzedzona analiz wydolno ci procesu, a istot analizy jest badanie
zgodno ci mi dzy wymaganiami wynikaj cymi z projektu produktu a mo liwo ciami
procesu technologicznego, w którym ten produkt (wyrób lub usługa) ma by wytwarzany.
Podstaw oceny owej zgodno ci jest oczekiwany poziom jako ci wykonania. Je li mo na
oczekiwa wysokiej jako ci wykonania, a wi c je li proces ma zdolno do odtwarzania
projektu w praktycznie ka dym akcie produkcji, albo praktycznie ka dym akcie
wiadczenia usługi, to proces taki jest oceniany jako wydolny. I odwrotnie, proces jest
oceniany jako niewydolny, je li przeprowadzona analiza nie pozwala oczekiwa wysokiej
jako ci wykonania produktu. Celem statystycznej analizy wydolno ci procesu jest zawsze
rozstrzygni cie, czy konkretnym przypadku spełniona jest nierówno :
0
)
;
(
Q
Z
A
Q
≥
w której
)
;
( Z
A
Q
oznacz poziom jako ci wykonania, jakiego mo na oczekiwa realizuj c
projekt produktu A w procesie technologicznym Z, natomiast
0
Q
jest najni szym,
mo liwym do zaakceptowania poziomem jako ci konkretnego produktu. Je li wi c proces
nie ma dostatecznej wydolno ci, to konieczne s zmiany w projekcie, modyfikacje
procesu technologicznego albo działania zmierzaj ce w obu tych kierunkach
jednocze nie. Je li działania te nie prowadz do celu, to pozostaj poszukiwania innego,
mniej wymagaj cego odbiorcy produktu lub rezygnacja z jego wytwarzania.
Ogólna nierówno
0
)
;
(
Q
Z
A
Q
≥
nie wystarcza do rozwi zywania praktycznych
problemów w zakresie badania wydolno ci procesów. W takiej sytuacji nale y posłu y
si odpowiedni miar jako ci wykonania. Nale y tu wymieni przede wszystkim:
• Wadliwo ,
• Przeci tn liczb wad w jednostce produktu.
Dodatkowo z ka d z tych miar mo na wykorzysta dwojako. Mo na mianowicie ocenia
jako wykonania albo ze wzgl du na pojedyncz cech u ytkow lub techniczn , albo ze
wzgl du na pewien zbiór tych cech.
Je li zgodno mi dzy wymaganiami projektu i mo liwo ciami procesu jest oceniana na
podstawie oczekiwanej cz stkowej wadliwo ci strumienia produktu, to ogólna
nierówno
0
)
;
(
Q
Z
A
Q
≥
zast pujemy warunkiem:
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
)
(
)
(
0
X
p
X
P
≤
gdzie
)
(
0
X
p
jest najwi ksz dopuszczaln wadliwo ci produktu generowanego przez
badany proces ze wzgl du na zmienn diagnostyczn X.
Wyró niamy dwie mo liwo ci badania wydolno ci procesu:
1. Badanie wydolno ci procesu przy alternatywnej ocenie
wła ciwo ci produktu.
W tym przypadku liczbowym obrazem badanej cechy jest zero - jedynkowa zmienna
losowa X, o realizacjach (x) generowanych według procedury:
=
,
1
,
0
X
Miar poziomu jako ci jest w takiej sytuacji wadliwo
)
(X
p
, interpretowana jako
prawdopodobie stwo wygenerowania wadliwej jednostki produktu. Z tego wynika, e
wadliwo ci
)
(X
p
zale y od tego, w jaki sposób zostanie okre lona reguła, według której
rozstrzyga si , czy badana jednostka produktu spełnia wymagania jako ciowe, czy te nie
pełnia. Je li reguła ta zostanie okre lona bardzo liberalnie, to nawet bardzo lichy produkt
mo na uzna za dobry. I odwrotnie, je li owa reguła zostanie okre lona bardzo
rygorystycznie, to nawet najlepszy produkt mo na zdyskwalifikowa .
2. Badanie wydolno ci procesu przy liczbowej ocenie
wła ciwo ci produktu.
W tej sytuacji załó my, e liczbowym obrazem pojedynczej (u ytkowej lub technicznej)
cechy produktu jest ci gła zmienna losowa X, któr traktujemy jako zmienn
diagnostyczn na podzbiór warto ci po danych
0
X , w którym wyró niamy warto
docelow (najbardziej po dan , nominaln ) oznaczan symbolem
0
x . Przedział
tolerancji
0
X
mo e by ograniczony obustronnie albo jednostronnie. W przypadku, gdy
zmienna ta ma rozkład normalny
)
;
(
σ
M
N
X
≈
, gdzie odchylenie standardowe
σ
jest
miar precyzji procesu, M. natomiast jest zbiorem mo liwych do uzyskania warto ci.
Mo na zało y , e precyzja procesu jest ustalona, natomiast na poprawno procesu
w pewnych granicach oddziałuje si poprzez wybór odpowiednich parametrów procesu.
W wietle przedstawionych powy ej zale no ci mi dzy projektem i procesem
technologicznym zachodzi zgodno , gdy:
gdy jednostka produktu spełnia wymagania jako ciowe
gdy jednostka produktu nie spełnia wymagania jako ciowych
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
)
(
)
(
)
Pr(
0
0
X
p
X
p
X
x
≤
=
∉
albo
)
(
1
)
(
1
)
Pr(
0
0
X
p
X
p
X
x
−
≥
−
=
∈
.
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
IV. STEROWANIA
PROCESAMI
ZA
POMOC
KART
KONTROLNYCH
Statystyczna analiza wydolno ci procesu zamyka etap sterowania jako ci w trybie off-
line. Je li wynik tej analizy jest pozytywny, to mo na uruchomi proces produkcji albo
proces wiadczenia usługi. Przyst puje si jednocze nie do monitorowania przebiegu
uruchomionego procesu, a tak e do sterowania operacyjnego w trybie on-line.
Wykorzystuje si do tego celu metody i narz dzia SPC (statistical process control):
1.
Diagram przebiegu procesu
Diagram przebiegu procesu obrazuje powi zania mi dzy operacjami technologicznymi.
Jest on wykorzystywany przede wszystkim podczas projektowania systemu sterowania
jako ci . Pozwala on racjonalnie zlokalizowa punkty monitorowani procesu. Przy
lokalizowaniu tych punktów nale y bra pod uwag tempo przyrostu jednostkowego
kosztu produktu, a tak e intensywno powstawania wad, zwłaszcza nienaprawialnych.
2.
Karta kontrolna
Karty kontrolne s instalowane w blokach analizuj cych systemy sterowania jako ci
i słu do analizy strumieni informacji numerycznych generowanych przez bloki
pomiarowe tych systemów. Ze wzgl du na to, e ka dy proces technologiczny jest
A
B
1
B
2
C
1
C
2
D
X(t
t
Górna lina kontrolna
Lina centralna
Dolna lina kontrolna
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
zjawiskiem dynamicznym, nie całkiem zdeterminowanym przez zadane parametry, przeto
karty kontrolne konstruowane s na podstawie aparatu formalnego statystyki
matematycznej. Najcz ciej s to albo odpowiednio zorganizowane sekwencje
klasycznych testów istotno ci (karty kontrolne typu Shewharta), albo procedury
wykorzystuj ce testy sekwencyjne (karty kontrolne sum skumulowanych). W przypadku
wykrycia systematycznego zakłócenia obserwowanego procesu karta kontrolna emituje
odpowiedni sygnał, który uruchamia ci g skoordynowanych działa nazywanych cyklem
Shewharta, zmierzaj cych do wykrycia i wyeliminowania przyczyny tego zakłócenia.
3.
Arkusz analityczny
Kontrola dostaw
Rodzaj wady
A
B
C
D
E
F
Ogólna
ilo wad
Ilo wad
1
15
2
0
8
1
2
2
2
12
0
1
6
0
3
2
3
14
1
0
7
2
2
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Arkusz analityczny słu y do wykrycia, wyeliminowania przyczyn zakłóce .
4.
Diagram Ishikawy
przyczyny
przyczyny
skutek
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
Diagram Ishikowy słu y równie do realizacji wykrycia, wyeliminowania przyczyn
zakłócenia.
5.
Diagram Pareto
Diagramy Pareto słu do badania cz sto ci wyst powania wad produktu lub procesu.
Pozwalaj one identyfikowa te problemy, które powinny by rozwi zywane w pierwszej
kolejno ci. Ten sam cel mo na osi gn za pomoc diagramu Lorenza.
6.
Histogram
Histogram jest prostym i wygodnym narz dziem badania rozkładu obserwowanej
zmiennej diagnostycznej. Ma to znaczenie szczególnie podczas badania wydolno ci
x
f(x)
Przedział tolerancji
x
n(x
Rodzaje wady
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
procesu technologicznego, a tak e podczas poszukiwania przyczyn zakłóce tego
procesu.
7.
Punktowy diagram korelacji
Punktowy diagram korelacji jest bardzo prostym, graficznym narz dziem badania
współzale no ci mi dzy obserwowanymi zmiennymi diagnostycznymi. Podobnie jak w
przypadku histogramu, jest to tylko pocz tkowy etap pogł bionej analizy problemu za
pomoc narz dzi i metod, jakich dostarcza teoria regresji i korelacji.
Podstawow rol w tych działaniach odgrywaj karty kontrolne. S to podstawowe
i najwcze niejsze historycznie narz dzia statystycznego sterowania procesami. Pomysł
karty kontrolnej zawdzi czamy Shewhartowi, a pierwsze praktyczne zastosowania tego
pomysłu nast piło w 1924 roku. W owym czasie rodki obliczeniowe, jakimi dysponował
przemysł, były nader skromne i ograniczały si do liczydła, suwaka logarytmicznego
i arytmometru mechanicznego. Dlatego te zaproponowana przez Shewharta metoda
monitowania i regulacji pomy lana była jako procedura graficzna, w której główn rol
odgrywa odpowiednio zorganizowany diagram przegl dowy, minimalizuj cy liczb
niezb dnych operacji numerycznych, numerycznych jednocze nie pozwalaj cy
obserwowa w sposób usystematyzowany przebieg kontrolowanego procesu. Ta ogólna
idea karty kontrolnej pozostała niezmieniona do chwili obecnej. Decyzje podejmowane
przy u yciu karty kontrolnej oparte s na analizie informacji dostarczanej przez próbki
losowe pobierane ze strumienia produktu.
y
x
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
V. WST P DO PROGRAMOWANIA W J ZYKU C/C++
1.
WPROWADZENIE.
Nazwa j zyka C wywodzi si od j zyka o d wi cznej nazwie B, który został opracowany
w 1970 roku przez Kena Thompsona dla minikomputerów PDP. Poniewa j zyk
B zawiera pewne istotne ograniczenia, w roku1972 Dennis Ritchie i Ken Thompson
stworzyli j zyk C. Jednak nie od razu stał on si popularny przez pierwsze sze lat
stosowała go jedynie w ska grupa programistów. Dla C i C++ nadszedł historyczny
przełom w roku 1978, gdy Brian Kernighan i Dennis Ritchie napisali i opublikowali
ksi k „The C programming language”, która została wydana równie przez
wydawnictwo polskie WNT w 1987 roku pod tytułem: „J zyk C”. Pierwotnie j zyk
C został zaimplementowany na komputerach 8-bitowych pracuj cych pod systemem
operacyjnym CP/M. Kiedy w roku 1981 pojawił si IBM PC i rozpocz ła si
komputerowa rewolucja, j zyka C stał si jednym z najlepszych kandydatów do
zawładni cia spor cz ci rynku. Liczba komputerów PC i u ytkowników C szybko
wzrastała. Dzi ki popularno ci i wysokiemu zainteresowaniu C wiele firm rozpocz ło
prac nad stworzeniem kompilatorów j zyka C – ka da z nich rozpocz ła tworzenie
własnej wersji i ka da z nich rozpocz ła prac w zupełnie innym kierunku.
Rewolucja komputerowa i kariera j zyka została zagro ona powstaniem wielu
niekompatybilnych wersji kompilatorów. Z tego powodu w Ameryka skim Narodowym
Instytucie Standardów (ANSI) został utworzony specjalny komitet X3J11 maj cy za
zadanie utworzenie standardowej wersji j zyka C – co przyczyniło si do uratowanie jej
kariery. Nale y jednak zauwa y , e ANSI był zainteresowany w stworzeniu jednego
uniwersalnego standardu, maj cego zastosowanie dla wszystkich komputerów – nie tylko
dla PC. Mimo takich intencji, w opracowanym przez ANSI standardzie pojawiło si wiele
rzeczy maj cych odniesienie do specyficznej architektury IBM PC, nie maj cych
natomiast odniesienia do np. du ych komputerów klasy MAINFRAME. W miar rozwoju
standardów ANSI C wi kszo implementacji zbli a si do wspólnego standardu,
w miar jak proces standaryzacji post puje coraz gł biej, ale nie obejmuje on np. grafiki
ekranowej, pozostaje to wi c obszarem, na którym pomi dzy poszczególnymi wersjami
kompilatorów wyst puj znaczne rozbie no ci.
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
Rosn ca popularno j zyka C spowodowała powstanie ogromnej liczby programów
napisanych w tym wła nie j zyku. W miar , jak długo programów zacz ła wyra nie
wzrasta , wiele osób doszło do wniosku, e standardowe konstrukcje programów nie
nad aj za potrzebami i staj si coraz bardziej nieefektywne. Jedynym dost pnym
wyj ciem było zastosowanie funkcji w celu uzyskania programu podzielonego na
moduły. Przy rosn cej liczbie funkcji, które to funkcje musiały cz sto odwoływa si do
wspólnych danych i wywoływa si nawzajem, coraz trudniej było programistom
zapanowa nad t skomplikowan kombinacj . W roku 1983 Bjarne Stroustrup opracował
j zyk C++, który jest w zasadzie bardzo podobny do C, ma jednak kilka bardzo istotnych
dodatkowych mo liwo ci. Najwa niejszym nowym wprowadzeniem stały si obiekty.
Obiekt jest to co takiego, co mo na by okre li , jako nowy rodzaj struktur – z jedn
istotn ró nic : je li programista za yczy sobie tego, zarówno dane, jak i funkcje mog
w obiekcie uzyska status prywatny. Jak ju wspomniałem wcze nie, przewaga
obiektowego stylu programowania polega na mo liwo ci uzyskania skuteczniejszego
podziału programu na moduły czyli na pewne jednostki funkcjonalne o zrozumiałym
przeznaczeniu i prostych zasadach współdziałania z innymi elementami programu.
Chocia głównym celem przy opracowaniu j zyka C++ było umo liwienie skutecznego
podziału na moduły programów pisanych w j zyku C, to, nawet je li program jest krótki,
C++ te na co do zaoferowania. W krótkich programach operatorom j zyka C mo emy
w C++ nada nowe wybrane przez siebie działanie. W C++ mo na równie robi
niewyobra alne w innym j zykach sztuczki z funkcjami. Dla przykładu, wykorzystuj c
mo liwo rozbudowy funkcji mo emy np. zmusi istniej c ju w starym programie
napisanym w C funkcj , by dała si wywoła z argumentami ró nych typów.
W klasycznym C byłby to oczywisty bł d, w C++ natomiast, w zale no ci od wybranego
przez nas typu argumentów, zostanie wybrana stosowna wersja funkcji i wszystko
wykona si poprawnie. W miar upływu czasu instytut ANSI wprowadzał kolejne, coraz
bardziej rozbudowane wersje standardu ANSI C. Np. standard wprowadzony w 1990
roku 28-go lutego o nazwie ANSI C2.1. I na tym ko cz krótk histori C/C++
nast pnym krokiem b dzie krótki opis powy szego j zyka.
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
2.
OPERATORY.
J zyk C/C++ w porównaniu z innymi j zykami oferuje programi cie znaczn liczb
operatorów ró nego rodzaju. Ró norodno ta umo liwia bardzo efektywny zapis wielu
operacji. Wyra enie jest ci giem operatorów i znaków przestankowych okre laj cych
sposób wykonania danego obliczenia. Kluczow rol w konstrukcji wyra enia pełni
operatory. To one okre laj , co, w jaki sposób i w jakiej kolejno ci zostanie obliczone
wyra enie.
Operatory mo na podzieli na nast puj ce grupy:
♦ operatory arytmetyczne:
• addytywne
Do operatorów addytywnych zaliczamy dodawanie (+) i odejmowanie (-) a operandami
s wyra enia tego samego typu arytmetycznego lub wska nikami tego samego typu.
• multiplikatywne
Do operatorów multiplikatywnych zaliczamy mno enie (*), dzielenie (/) i reszta
z dzielenia (%) a operandami dz standardowe prawa arytmetyki ponadto w przypadku
reszty z dzielenia operandy s typami całkowitymi.
• operatory inkrementacji (++) i dekrementacji (--)
Powy sze operatory zaliczane s do operatorów jedno argumentowych operacja
zwi kszenia (inkrementacja) lub zmniejszania (dekrementacja) o jeden jest wykonywana
przez wi kszo procesorów w jednym rozkazie. Ponadto mog one wyst powa przed
(operator przedrostkowy) lub po (operator przyrostkowy) operandzie.
♦ operatory logiczne
Warto logiczna prawda jest reprezentowana jako liczba całkowita ró na od zera, za
fałsz jako zero typu całkowitego. Umo liwiaj one nast puj ce operacja na warto ciach
logicznych: koniunkcja (&&), alternatywa (||), negacja (!),
♦ operatory bitowe
Za pomoc operatorów bitowych mo na realizowa funkcje logiczne :
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
OR – alternatywa (|)
AND – iloczyn (&)
EXOR – suma modulo 2 (^)
NOT – negacja (~)
Stosowane operandy musz by typu całkowitego,
♦ operatory relacyjne
Operatory relacyjne pozwalaj stwierdzi , czy mi dzy operandami zachodzi dana relacja,
do powy szych operatorów zaliczamy: wi ksze ni (>), mniejsze ni (<), mniejsze równe
(<=), wi ksze równe (>=), równe (==), ró ne od (!=),
♦ operatory przypisania,
Operatory przypisania daj mo liwo zwi złego zapisu wyra e . Mo na podzieli je na
dwie grupy: prosty operator przypisania (=) operandowi przedrostkowemu zostaje
przypisana warto operandu przyrostowego, zło one operatory przypisania (+=, -=, *=,
/=, <<=, >>=, &=, ^=, |=) maj one ogóln posta operator= a zasada działania
przedstawi na przykładzie:
Wyra enie_1 = Wyra enie_1 operator Wyra enie_2;
co mo emy zast pi wykorzystuj c operator przypisania:
Wyra enie_1 operator= Wyra enie_2
♦ operator warunkowy
Wyra enie z operatora warunkowego wygl da nast puj co:
Wyra enie_1 ? Wyra enie_2 : Wyra enie_3;
w pierwszej kolejno ci obliczana jest warto Wyra enia_1 je li jest ona niezerowa
(prawda), obliczana jest warto Wyra enia_2, natomiast Wyra enie_3 jest ignorowane,
w przeciwnym razie (Wyra enie_1 jest równe zero – fałsz) obliczana jest warto
Wyra enia_3
, natomiast Wyra enie_2 pomijamy,
♦ operatory wyboru składniowych
Tych operatorów u ywa si celem wyboru składowej struktury, unii lub klasy. Operator
(.) umo liwia odwołanie do składowej okre lonej przez operand, operator (->) za
odwołanie do składowej wskazywanej przez operand,
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
♦ operator pobrania adresu zmiennej (&) oraz dost pu do zmiennej wskazywanej (*)
W przypadku wyra enia pobrania adresu warto wyra enia stanowi adres operandu a w
przypadku zmiennej wskazywanej warto wyra enia jest zmienna wskazywana przez
operand, za jego typ jest zgodny z typem wskazywanym operandu,
♦ operator pobrania rozmiaru(sizeof)
Operator mo e by u ywany w dwóch poni szych sposobach:
sizeof
(identyfikator_typu) – warto ci wyra enia jest rozmiar w bajtach typu okre lonego
przez podany identyfikator,
sizeof operand
– warto ci wyra enia jest rozmiar pami ci zajmowany przez operand,
♦ operatory dynamicznego przydziału pami ci
Operator przydziału pami ci new tworzy obiekt danego typu przydzielaj c sizeof
dany_typ
w obszarze stosu w zmiennych dynamicznych, operator zwalniania pami ci
delete
usuwa obiekt wskazywany przez wska nik,
♦ operatory indeksowania ([]) i wywołania funkcji(),
♦ operator konwersji
Operator konwersji ma posta : (typ)operand – warto ci wyra enia jest warto operandu
po konwersji do typu o podanej nazwie.
3.
INSTRUKCJE
Jednym z najwa niejszych elementów ka dego j zyka programowania s instrukcje.
Umo liwiaj one zapis algorytmu, a co za tym idzie – słu do sterowania przebiegiem
programu. W j zyku C++ ich lista jest do krótka, co nie oznacza bynajmniej ubóstwa.
Instrukcje te dzi ki swej efektywno ci w poł czeniu z ró norodno ci typów danych
i operatorów umo liwiaj tworzenie nawet najbardziej zaawansowanego
oprogramowania. Instrukcje mo na podzieli na:
♦ instrukcje warunkowe
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
W zapisie algorytmów cz stym problemem jest sprawdzenie, czy zachodzi dana
zale no i w zale no ci od tego wykonanie takich czy innych czynno ci. Sprawdzenie
warunków i przej cie do wykonania odpowiednich operacji umo liwiaj tzw. instrukcje
warunkowe. Do tej grupy instrukcji zaliczamy instrukcj „je eli” (if) oraz instrukcj
„wyboru” (switch).
Ogólna posta instrukcji warunkowej „je eli” przedstawia si nast puj co:
if(wyra enie_warunkowe) instuckcja_1 [else instukcja_2];
Wyra enie_warunkowe
musi by typu skalarnego. Je li warto wyra enia_warunkowego
jest ró na od zera (prawda), wówczas wykonywana jest insturkcja_1, w przeciwnym razie
(fałsz) – instukcja_2.
Instrukcja wyboru ma nast puj c posta ogóln :
switch( wyra enie_steruj ce)
{
case wyra enie_stałe_typu_całkowitego: instrukcje
...
case wyra enie_stałe_typu_całkowitego: instrukcje
default: instukcje
}
Na podstawie warto ci wyra enia steruj cego pozwala ona przenie wykonywanie
programu do wskazanego miejsca. Wyra enie_steruj ce musi by typu całkowitego, za
instrukcje s dowoln instrukcj j zyka C/C++. Wykonanie instrukcji wyboru polega na
obliczeniu warto ci wyra enia steruj cego i kontynuowaniu wykonywania programu
pocz wszy od etykiety wyboru, której wyra enie stałe ma warto równ obliczonej
wcze niej warto ci wyra enia steruj cego. Je li adne z wyra e stałych nie spełnia tej
równo ci, wówczas wykonywany jest skok do miejsca okre lonego domy ln (default)
etykiet wyboru lub je li jej nie ma – wykonywanie instrukcji wyboru ulega zako czeniu.
♦ Instrukcje iteracyjne
Instrukcje iteracyjne umo liwiaj wielokrotne wykonywanie pewnych sekwencji
instrukcji, czyli p tli, jak wiadomo, s podstaw programowania. Wyró niamy
nast puj ce instrukcje iteracyjne:
• Instrukcja „dla” (for)
Jej ogólna posta przedstawia si nast puj co:
for(wyra enie_inicjuj ce ; wyra enie_warunkowe ; wyra enie_zwi kszaj ce) instrukcja;
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
Wykonywanie p tli polega na obliczeniu wyra enia_inicjuj cego, co najcz ciej
powoduje zainicjowanie licznika p tli, nast pnie obliczane jest wyra enie_warunkowe,
je li jest ono niezerowe (prawda) wykonywana jest instrukcja zwi zana z instrukcj for.
Obliczane jest wyra enie_zwi kszaj ce, co powoduje zwykle zwi kszenie lub
zmniejszenie liczników p tli i ponownie obliczane jest wyra enie_warunkowe, je li jego
warto jest ró na od zera wykonywana jest ponownie instrukcja.
• Instrukcja „dopóki”(while)
Ogólna posta instrukcji „dopóki”:
While(wyra enie_warunkowe) instrukcja;
Instrukcja jest wykonywana do momentu, kiedy wyra enie_warunkowe osi gnie warto
0 (fałsz).
• Instrukcja „wykonuj dopóki” (do...while)
Ogólna posta instrukcji „wykonuj dopóki” przedstawia si nast puj co:
do instrukcja while(wyra enie_warunkowe);
Instrukcj do ... while mo na przetłumaczy jako: wykonuj instrukcj dopóki warto
wyra enia wyra enia_warunkowego oznacza prawd . Instrukcj t stosujemy zamiast
instrukcji while wówczas, gdy zale y nam, aby wykonana została przynajmniej jedna
iteracja.
♦ Instrukcje steruj ce przebiegiem programu
Umo liwiaj one opuszczenie p tli, przeniesienie wykonywania programu, zako czenie
wykonywania. Wspomniane tu instrukcje to:
• Instrukcja „przerwij” (break)
Składni instrukcji „przerwij” przedstawiam poni ej:
break;
Powoduje ona opuszczenie aktualnego poziomu p tli lub instrukcji wyboru.
• Instrukcja „kontynuuj” (continue)
Składnia instrukcji „kontynuuj” wygl da nast puj co:
continue;
Omawiana instrukcja mo e by u ywana tylko wewn trz instrukcji iteracyjnych. Jej
u ycie powoduje w przypadku p tli while – przeniesienie sterowania z wn trza p tli do
wyra enia warunkowego, które zostaje obliczone. W zale no ci od uzyskanego wyniku
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
wykonywanie p tli jest kontynuowane lub ulega zako czeniu. W przypadku p tli for –
przeniesienie sterowania do wyra enia zwi kszaj cego licznik p tli.
• Instrukcja „skoku” (goto)
Umo liwia przekazanie sterowania do okre lonego miejsca aktualnie wykonywanej
funkcji programu. Instrukcja skoku ma posta :
goto etykieta;
etykieta okre la miejsce w programie, do którego ma nast pi skok.
4.
FUNKCJE.
W pierwszej kolejno ci zwróc uwag na rozró nienie poj deklaracja i definicja.
Deklaracja funkcji, w odró nieniu od definicji, jest poj ciem logicznym, gdy stanowi
tylko informacj dla kompilatora, e funkcja o okre lonej nazwie, typie warto ci
i parametrów mo e zosta u yta gdzie w danym module programu. Definicja funkcji
okre la natomiast, co funkcja wła ciwie robi. Stanowi wi c ona zapis jakiego algorytmu
lub jego cz ci. Definicja funkcji powoduje, w odró nieniu od deklaracji, przydzielenie
obszaru pami ci, w którym znajdzie si kod wynikowy funkcji.
Wywołanie funkcji ma posta :
Nazwa_funkcji(Lista_paramtrów_wywołania);
Na list parametrów wywołania składaj si oddzielone przecinkami wyra enia typu
zgodnego z typem parametru funkcji.
J zyk C++ wprowadza kilka dodatkowych mo liwo ci w zakresie deklarowani,
definiowania i wykorzystania funkcji:
Funkcje przeci one zaliczamy co nich funkcje o tej samej nazwie, lecz ró ni cych si
parametrami i ewentualnie typem warto ci. Dwie funkcje przeci one nie mog ró ni si
wył cznie typem zwracanej warto ci. O tym, która z funkcji przeci onych zostanie
wywołana, decyduj parametry wywołania – ich typy i liczba.
Domy lne warto ci parametrów funkcji, które podajemy w deklaracji pozwala wywoła
funkcj z domy lnymi parametrami.
Funkcja mo e otrzymywa lub samodzielnie pobiera dane z otocznia, przetwarza je,
a nast pnie zwraca rezultaty przeprowadzonych działa . Przekazywanie parametrów
i zwracanie warto s wi c ze sob blisko zwi zane. Parametry mog by przekazywane
do funkcji na trzy sposoby:
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
♦ Przez warto
Przez dłu szy czas jedynym sposobem przekazywania parametrów funkcji było tzw.
przekazywanie przez warto . W wyniku przekazywania przez warto funkcja otrzymuje
kopi zmiennej na stosie procesora lub w jego rejestrze. Przekazany parametr jest
traktowany tak samo, jak wszystkie zmienne automatyczne zadeklarowane w ciele
definicji funkcji, tj. istnieje tylko podczas jej wykonywania,
♦ Przez wska nik
Przekazywanie argumentów funkcji przez wska nik jest wła ciwie tylko odmian
przekazywania przez warto – funkcja otrzymuje po prostu kopi wska nika. Nale y
zwróci bowiem uwag na fakt, e wska nik przekazany do funkcji mo e identyfikowa
zmienn nale c do innej funkcji. Przypisanie warto ci zmiennej wskazywanej przez
parametr wska nikowy pozwala wi c zmienia warto zmiennych utworzonych
w innych funkcjach programu. Przekazywanie parametrów przez wska nik jest
zasadniczo wykorzystywane w przekazywaniu struktur danych o du ych rozmiarach,
takich jak tablice czy ła cuchy lub umo liwienia zwrócenia wi cej ni jednej warto ci,
♦ Przez referencj
W j zyku C++ istnieje typ referencyjny, który umo liwia deklarowanie zmiennych
reprezentuj cych inne zmienne. Najszerzej zmienne referencyjne s wykorzystywane
przy przekazywaniu parametrów do i z funkcji. Tzw. przekazywanie parametrów przez
referencj jest odpowiednikiem przekazywania parametrów przez zmienn
(wykorzystywan w j zyku Turbo Pascal), cho mo e nie dokładnym, ale za to daj cym
znaczenie wi ksze mo liwo ci. Operacje s wi c przeprowadzane albo bezpo rednio na
zmiennej, której referencj przekazano do funkcji, albo na zmiennej tymczasowej, co ma
miejsce w przypadku niezgodno ci typu referencyjnego, i zmiennej, do której referencja
jest tworzona,
♦ Zwracanie warto ci
Do zwracania warto ci wykorzystujemy instrukcj return. Powoduje ona zako czenie
wykonywania funkcji i zwrócenie warto ci. Wykonywanie funkcji typu void mo e, lecz
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
nie musi ko czy si instrukcj return z parametrem okre laj cym warto funkcji,
w przeciwnym razie warto ta pozostaje nie okre lona.
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
5.
BUDOWA PROGAMU
Program napisany w j zyku C++ składa si w ogólnym przypadku z dyrektyw
preprocesora, komentarzy, deklaracji i instrukcji. Dyrektywy zajmuj pełne wiersze
i zaczynaj si od znaku # (hash). Komentarze natomiast mog by dwóch rodzajów:
o postaci: /*tekst*/ w której tekst jest dowolnym, by mo e wielowierszowym napisem
nie zawieraj cym dwu znaku */, albo jest napisem o postaci //tekst w której niejawnym
ko cem komentarza jest koniec wiersza.
Najcz ciej u ywan dyrektyw preprocesora jest #include, zazwyczaj wyst puj ca
w postaci: #include <name> w której name jest nazw pliku. Zinterpretowanie tej
dyrektywy powoduje wł czenie w miejscu jej wyst pienia, całej zawarto ci pliku name.
Plik name jest nazywany nagłówkowym i zawiera zazwyczaj deklaracje funkcji
standardowych u ytych w programie.
Ka dy program musi zawiera deklaracj funkcji o nazwie main. Jest to funkcja, od której
zaczyna si wykonywanie programu. Funkcja main jest najcz ciej bezparametrowa.
W programie jednostkami leksykalnymi s słowa kluczowe, identyfikatory, literały
i ograniczniki. Ogranicznikami s operatory (np.+, -, *). Podział programu na jednostki
leksykalne odbywa si w naturalnym porz dku, to jest od lewej do prawej i od góry do
dołu. Słowa kluczowe s to słowa wybrane z ustalonego repertuaru i pełni ce w j zyku
specjalne funkcje, takie jak np. słowo void w li cie parametrów funkcji main. Słowa te s
zastrze one i nie mog by u ywane do oznaczania takich obiektów programu, jak
zmienne, funkcje i typy. Literałem jest napis reprezentuj cy dan , z którego zapisu
i w ramach przyj tej interpretacji, wynikaj wszystkie atrybuty danej, w tym jej warto
i typ. W j zyku C++ literałami s liczby (np. 12, 23.7), znaki (np. ‘*’) i ła cuchy (np. „to
jest ła cuch”).
6.
KLASY I OBIEKTY
Dane definiuj ce przedmiot i metody okre laj ce jego wła ciwo ci umieszczamy we
wspólnym miejscu – klasie. W ten sposób nast puje integracja danych i metod
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
uprawnionych do ich wykorzystania. Nazwa programowanie obiektowe zwraca uwag na
fakt, e dane funkcje z nich korzystaj ce słu temu samemu celowi – definiowaniu
przedmiotów i okre laniu ich wła ciwo ci. To wła nie przedmioty – obiekty staj si
głównym przedmiotem zainteresowania wielu programistów i jednocze nie
podstawowym elementem konstrukcji programu. C/C++ nie jest j zykiem ci le
obiektowym, gdy pozwala równie na programowanie proceduralne. Takie poł czenie
nale y uzna za zalet , gdy nieprawd jest, i wszystkie problemy najwygodniej jest
rozwi zywa obiektowo. W wielu przypadkach wygodnie jest zdefiniowa kilka klas
definiuj cych cz sto spotykanych poj , natomiast cały program mo na napisa
proceduralne wykorzystuj c tak zdefiniowane klasy. Podstawowym poj ciem j zyka
C/C++ jest klasa. Z ka d klas jest zwi zany zbiór danych okre lonych przez jej pola
oraz zbiór operacji okre lony przez jej funkcje składowe. Pola i funkcje składowe mog
by publiczne, prywatne i zabezpieczone. Je li klasa nie zawiera funkcji składowych,
a wszystkie jej pola s publiczne, to jest po prostu struktur . Identyfikatory komponentów
prywatnych s dost pne jedynie w obr bie funkcji składowych klas oraz w obr bie
funkcji zaprzyja nionych z klas . Identyfikatory komponentów publicznych s dost pne
wsz dzie. Identyfikatory komponentów zabezpieczonych s traktowane tak jakby były
prywatne, ale ponadto s dost pne tak e w obr bie funkcji składowych
i zaprzyja nionych z klas pochodn danej klasy bazowej. Deklaracja funkcji
zaprzyja nionej z klas mo e wyst pi w dowolnym miejscu w obr bie deklaracji klasy,
ale musi by poprzedzona słowem kluczowym friend. Wymienione powy ej elementy
rozmieszcza si w sekcjach definicji klasy, co ilustruje poni szy schemat:
Class Klasa
{
public:
... (funkcje i dane składowe publiczne)
protected:
... (funkcje i dane składowe zabezpieczone)
private:
... (funkcje i dane składowe prywaten)
};
Deklarowaniu obiektów mo e towarzyszy ich inicjowanie. Inicjator obiektu składa si
z listy argumentów inicjacji uj tych w nawiasy okr głe, albo z wyra enia nast puj cego
po znak „=”. Sposób inicjowania poszczególnych pól obiektu jest okre lony przez funkcje
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
nazywan konstruktorem. Funkcja ta musi by publiczn składow obiektu i mo na j
rozpozna po tym, e jej nazwa jest identyczna z nazw klasy. Najcz ciej funkcja ta jest
przeci ona. Umo liwia to stosowanie do obiektów danej klasy inicjatorów o ró nej
liczbie i ró nych typach argumentów. Ponadto deklaracja konstruktora nie mo e zawiera
specyfikatora typu, a definicja konstruktora nie mo e zawiera instrukcji return. Inicjator
zapisany po znaku „=” maj cy posta nazwy zmiennej obiektowej tej samej klasy co
inicjowany obiekt, stanowi argument konstruktora. Je li taki konstruktor nie zostanie
zadeklarowany jawnie, to domniemywa si konstruktor kopiuj cy. Je li klasa zawiera
jawnie zadeklarowany konstruktor, to ka da deklaracja obiektu tej klasy musi zawiera
inicjator. Je li nie wyst puje on jawnie, to podczas opracowywania deklaracji obiektu jest
wywoływany konstruktor nazywany bezparametrowym.
Podobnie jak pozostałe zmienne, obiekty dziel si na statyczne i dynamiczne. Je li
opracowanie deklaracji zmiennej powoduje wywołanie konstruktora, to o miejscu
przydzielonym zmiennej mo na wnioskowa na podstawie warto ci danej przypisanej
zmiennej this. Wywołanie konstruktora dla zmiennej this wskazuje obiekt dla którego
wywołano konstruktor. Analogiczn funkcj jak podczas tworzenia obiektów pełni
konstruktor spełnia podczas ich usuwania destruktor. Podobnie jak konstruktor, destruktor
jest komponentem klasy do której nale y obiekt. Nazw destruktora jest napis składaj cy
si z identyfikatora klasy poprzedzonego znakiem ~ (tylda). Deklaracja destruktora nie
mo e zawiera specyfikacji typu, a jego definicja nie mo e zawiera instrukcji return.
Typowe u ycie destruktora sprowadza si do przywrócenia warunków pocz tkowych,
w tym do odzyskania pami ci operacyjnej przydzielonej podczas inicjowania obiektu.
7.
DZIEDZICZENIE I POLIMORFIZM
Jednym z podstawowych zada programowania obiektowego jest wspólny opis pewnej
klasy przedmiotów, zjawisk czy problemów. Temu celowi słu y maj dwa najwi ksze
osi gni cia programowania zorientowanego obiektowo: dziedziczenie i polimorfizm.
Dziedziczenie umo liwia przejmowanie wła ciwo ci innych klas zwanych pierwotnymi
lub bazowymi, przez klasy zwane potomnymi lub wprowadzonymi. Poniewa
wła ciwo ci klasy s definiowane przez jej składowe, dziedziczenie polega na mo liwo ci
przył czenia do klasy składowych klas bazowych. Podstawow korzy ci płyn c
z dziedziczenia jest automatyczne wykonywanie konwersji od wska nika klasy potomnej
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
– do wska nika klasy bazowej, co umo liwia traktowanie wszystkich obiektów
potomnych tak, jakby były abstrakcyjnej klasy bazowej.
Polimorfizm jest wła ciwo ci kolekcji funkcji o przeci onym identyfikatorze,
umo liwiaj c aktywowanie jednej z nich na rzecz obiektu, którego typ nie wynika
z nazwy obiektu, lecz jest zapami tany w obiekcie. Ogół funkcji polimorficznych
obranego typu składa si z funkcji zadeklarowanej ze specyfikatorem virtual oraz ze
wszystkich funkcji o takim samym identyfikatorze, zdefiniowanych w ci gu klas
pochodnych (ju bez specyfikatora virtual). Wyst pienie w deklaracji klasy chocia
jednej funkcji polimorficznej powoduje uzupełnieni ogółu pól tej klasy, ukrytym polem
identyfikacyjnym, w którym jest przechowywana informacja o typie obiektu. Niezale nie
od liczby funkcji polimorficznych danej klasy pole takie jest tylko jedno. W typowych
implementacjach jest ono umieszczane bezpo redni za wszystkimi polami tej klasy,
w której po raz pierwszy wyst piła funkcja polimorficzna. Aktywowanie funkcji
polimorficznej na rzecz obiektu przebiega w nast puj cy sposób: najpierw si ga si do
pola informacyjnego obiektu, w celu okre lenia klasy obiektu, a nast pnie aktywuje si
funkcj polimorficzn tej wła nie klasy na rzecz tego obiektu.
Funkcje polimorficzne pozwalaj na wywołanie funkcji zgodnie z klas obiektu, nawet
gdy odwołanie do tej funkcji odbywa si przez wska nik klasy pierwotnej, np. je li
w tablicy tab przechowywane s wska niki klasy podstawowej hierarchii, zawieraj cej
funkcj polimorficzn , to wywołanie tab[indeks]->funkcja_plimorficzna spowoduje
wywołanie funkcji odpowiadaj cej rzeczywistej klasie wskazywanego obiektu. Aby wi c
wywołanie odpowiedniego destruktora było mo liwe musi by on równie funkcj
wirtualn . Adres wywoływanej funkcji wirtualnej jest ustalany dopiero w czasie
wykonywania programu. Dzi ki temu raz skompilowana funkcja mo e odwoływa si do
funkcji wirtualnych klas, które w momencie jej kompilacji jeszcze nie istniały. Wybór
funkcji, która ma zosta wywołana, odbywa si za po rednictwem tzw. tablicy funkcji
wirtualnych. W pewnym uproszczeniu mo na powiedzie , e zawiera ona adresy danej
funkcji wirtualnej dla całej hierarchii klas. Po napotkaniu wywołania funkcji wirtualnej
rozpoczynane jest przeszukiwanie tej tablicy, maj ce na celu odnalezienie adresu funkcji
nale cej do klasy obiektu, dla którego jest ona wywoływana.
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
VI. PROGRAMOWANIE DLA WINDOWS Z
WYKORZYSTANIEM OWL (OBIEKT WINDOW LIBRARY)
W tym rozdziale omówi standardowe klasy potrzebne do tworzenia aplikacji.
Biblioteka OWL zawiera definicje klas potrzebnych do tworzenia aplikacji dla Windows.
Fundamentalne znaczenie dla wi kszo ci typowych aplikacji maj nast puj ce klasy:
TModule
(moduł – program lub biblioteka DLL)
TApplication
(program – aplikacja)
TWindow (okno)
Tworz c obiekt klasy danej aplikacji b d wykorzystywał dziedziczenie od klasy
bazowej TApplication:
class Moja_class : public TApplication
Podstawowym celem zastosowania tej wła nie klasy bazowej jest odziedziczenie gotowej
funkcji – metody virtual InitMainWindow() (zainicjuj główne okno programu).
Utworzenie obiektu Moja_class nast puje zwykle w czterech etapach:
• Windows uruchamiaj program wywołuj c główn funkcj WinMain() lub OwlMain()
wchodz c w skład ka dej aplikacji,
• Funkcja WinMain() tworzy przy pomocy operatora new nowy obiekt – aplikacj ,
• Obiekt – aplikacja zaczyna funkcjonowa . Konstruktor obiektu (własny, b d
odziedziczony po klasie TApplication) wywołuje funkcj – wirtualn metod
InitMainWidnow()
.
Funkcja przy pomocy operatora new tworzy obiekt – okno aplikacji. Wska nik do
utworzonego obiektu zwraca funkcja GetApplication(). Dla zobrazowania mechanizmów
poni ej przedstawi uproszczony „wyci g” z dwu opisywanych klas. Nie jest to dokładna
kopia kodu ródłowego Borlanda, lecz skrót tego kodu pozwalaj cy na zrozumienie
metod implementacji okienkowych mechanizmów wewn trz klas biblioteki OWL i tym
samym wewn trz obiektów obiektowo – zdarzeniowych aplikacji. A oto najwa niejsze
elementy implementacji klasy TApplication:
• Konstruktor obiektu:
TApplication::TApplication(const char far* name,
HINSTANCE Instance,
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
HINSTANCE prevInstance,
const char far* CmdLine,
Int CmdShow,
TModule*& gModule)
{
hPrevInstance=prevInstance;
nCmdShow = CmdShow;
MainWindow = 0;
HAccTable = 0;
BreakMessageLoop = FALSE;
AddApplicationObject(this);
gModule = this;
}
• Funkcja – metoda „Zainicjuj Instancj ”:
void TApplication::InitInstance()
{
InitMainWindow();
if(MainWindow)
{
MainWindow->SetFlag(wfMainWidnow);
MainWindow->Create();
MainWindow->Show(nCmdShow);
}
• Metoda „Zainicjuj główne okno aplikacji”:
void TApplication::InitMainWindow()
{
SetMainWindow(new TFrameWindow(0,GetName()));
}
• Metoda Run() – „Uruchom program”:
int TApplication::Run()
{
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
int status;
{
if(!hPrevInstance) InitApplication();
InitInstance();
status = MessageLoop();
}
• P tla pobierania komunikatów.
BOOL TApplication::PumpWaitingMessages()
{
MSG msg;
BOOL foundOne = FALSE;
while(::PeekMessage(&msg,0,0,0,PM_REMOVE))
{
foundOne = TRUE;
if(msg.message == WM_QUIT)
{
BreakMessageLoop = TRUE;
MessageLoopResult = msg.wParam;
::PostQuitMessage(msg.wParam);
break;
}
if(!ProcessAppMsg(msg))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
}
return foundOne;
}
int TApplication::MessageLoop()
{
long idleCount = 0;
MessageLoopResult = 0;
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
while(!BreakMessageLoop)
{
TRY{
if(!IdleAction(idleCount++))::WaitMessage();
if(PumpWaitingMessage()) idleCount = 0;
}
if(MessageLoopResult != 0)
{
::PostQuitMessage(MessageLoopResult);
break;
}
BreakMessageLoop = FALSE;
return MessageLoopREsult;
}
else if(::lsWindowEnable(wnd))
{
*(info->Wnds++) = wnd;
::EnableWidnow(wnd,FALSE);
}
return TRUE;
}
Klasa TWindow (Okno) zawiera implementacj wielu przydatnych przy tworzeniu
aplikacji „cegiełek”. Poni ej przedstawi fragment pliku ródłowego:
...
extern LRESULT FAR PASCAL _export InitWndProc(HWND,UINT,WPARAM,LPARAM)
...
struct TcurrentEvent
//Struktura Bie ce zdarzenie
{
Twindow* win;
//Wska nik do okno
UINT message;
//Komunikat
WPARAM wParam;
LPARAM lParam;
}
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
...
DEFINE_RESPONSE_TABLE(Twindow)
//Makro:zdefiniuj tablic odpowiedzi na zdarzenie
//EV_WM_SIZE – zdarzenie (Event) – nadszedł komunikat WM_SIZE
...
EV_WM_SETCURSOR,
EV_WM_SIZE,
EV_WM_MOVE,
EV_WM_PAINT,
EV_WM_LBUTTONDOWN,
EV_WM_KILLFOCUS,
EV_WM_CREATE,
EV_WM_CLOSE,
EV_WM_DESTROY,
EV_COMMAND(CM_EXIT,CmExit),
...
END_RESPONSE_TABLE;
• Funkcje – metody obsługuj ce komunikaty zaimplementowane wewn trz klasy
TWindow
TWindow::EvCreate(CREATESTRUCT far&)
{
SetupWindow();
return (int)DefaultProcessing();
}
void Twindow::EvSize(UINT size Type, Tsize&)
{
if(Scroller && size Type != SIZE_MINIMIZED)
{
Scroller->SetPageSize();
Scroller->SetBarRange();
}
}
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
• Metoda GetWindowClass()
void TWindow::GetWindowClass(WNDCLASS& wndClass)
{
wndClass.cbClsExtra = 0;
wndClass.cbWndExtra = 0;
wndClass.hInstance = *GetModule();
wndClass.hIcon = 0;
wndClass.hCursor = ::LoadCursor(0,IDC_ARROW);
wndClass.hbrBackground = HBRUSH(COLOR_WINDOW +1);
wndClass.lpszMenuName = 0;
wndClass.lpszClassName = GetClassName();
wndClass.style = CS_DBLCLKS;
wndClass.lpfnWndProc = InitWndProc;
}
Skoro te wszystkie elementy zostały ju zaimplementowane wewn trz definicji klas,
program powinien tylko umiej tnie z nich korzysta a tekst ródłowy programu powinien
ulec skróceniu i uproszczeniu.
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
VII. PRAKTYCZNY CZ
TWORZENIA PROGRAMU KART
KONTROLNYCH
Zaczyna prac nad nowym programem znaczy utworzy nowy projekt, czyli spis
wszystkich modułów. Tworz c projekt musimy zapozna si za nast puj cymi
zagadnieniami:
• Target Name
W okienku Target Name wpisuje nazw finalnego programu.
• Target Type
W Target Type wybieram wariant o nazwie Application – czyli zwykły windowsowy
program. Platform to pytanie o sprz t i oprogramowanie, na jakim ma by
uruchamiany ostateczny program. Wybieram platform Win32, czyli 32-bitowe
Windows9x. U ytkowników posiadaj cych 16-bitowy system operacyjny np.
Widnows3.11 wybieraj Windows 3.x(16).
• Target Model
Target Model
to pytanie sugeruj ce ró ne odpowiedzi, zale nie od wcze niej wybranej
platformy. Gdy platforma jest 16-bitowa, mam do wyboru model Large i Medium.
Wybieraj c Large program b dzie zawierał dalekie wywołania (b dzie obsługiwał
długie 4-bajtowe adresy) dzi ki czemu uniknie si bł dów zwi zanych z brakiem
modyfikatorów far w deklarowaniu zmiennych i definiowaniu funkcji. Nowoczesna
platforma 32-bitowa (czyli 4-bajtowa) nie rozró nia adresów dalekich (4-bajtowych)
i bliskich (2-bajtowych). Cały sprz t i całe oprogramowanie jest 4-bajtowe. Wybieram
aplikacj GUI, czyli graficzny interfejs u ytkownika.
• Frame work
Grupa opcji Frame work, co mo na tłumaczy jako szkielet, pozwoli wybra dialekt
j zyka, w którym chcemy programowa . Jest to wybór mi dzy ró nymi bibliotekami
klas – obiektów, ukrywaj cych w sobie zło one algorytmy i struktury danych.
Program nawi zuje do borlandowsiej biblioteki OWL. Mo na wybra te alternatyw ,
konkurencyjn bibliotek Microsoftu o nazwie MFC, bibliotek OCF, zawieraj ca
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
procedury do tworzenia tzw. powi za OLE i bibliotek „gołych klas” zwan Class
Library
. Nale y tutaj doda , e ró ne linie Frame works bardzo le znosz mieszanie
ró nych szkieletów w jednym programie.
• Grupa Controls
W Grupa Controls – typ sterowania programem – wybieramy kształt poszczególnych
elementów sterowania: przycisków, linii, tekstów, edytorów, list itd.
Biblioteki doł czane dynamicznie (a mogłyby by jeszcze wklejone statycznie)
zmniejszaj znacznie rozmiar ostatecznego pliku *.exe. Cały kod biblioteczny b dzie
znajdował si gdzie na dysku w plikach o nazwach *.dll (dynamicznie doł czone
biblioteki do wspólnego u ytku przez wiele programów). Program odwołuj cy si do
bibliotek wł czonych dynamicznie mo e nie działa na innym komputerze – po prostu
mo e tam nie by potrzebnego zbioru procedur *.dll.
• Advanced
Kilka opcji nowo tworzonego projektu zostało ukryte pod przyciskiem Advanced, pod
którym wybieramy z jakich pliki ma składa si program. Na program windosowy
pisany pod Boralndem składaj si zasadniczo trzy typy plików. Jest tam jeden lub
wi cej plików o rozszerzeniu *.cpp (tekst ródłowy), jeden lub wi cej plików *.rc
(opis map bitowych, ikon, przycisków, edytorów, list, itd.) i jeden krótki plik *.def,
zawieraj cy dane dla linkera, czyli narz dzia zbieraj cego wszystkie cz ci w jeden
ostateczny plik wykonywalny.
Program windosowy z zało enia jest obszerny. Przyczyn tego stanu rzeczy jest dialog,
jaki program prowadzi z systemem operacyjnym, zanim cokolwiek pojawi si na
ekranie. Program musi zosta podł czony do wielozadaniowego rodowiska. Pokazuje
wi c systemowi stosunkowo du o ró nych parametrów, które zło si na dane cechy
programu. Znajduje si tam nazwa procedury desygnowanej do obsługi napływaj cych
komunikatów, tytuł okna, rodzaj kursora, opis elementu graficznego, opis sposobu
reagowania na inne okna i jeszcze kilka innych rzeczy. Wszystkie te parametry s uj te
w struktur , któr po wypełnieniu nale y przesła do systemu. Je li system zaakceptuje
dania, co nazwa si rejestracj klasy okna, przyst puje si do utworzenia okna, te nie
bezpo rednio rysuj c co na ekranie, a wywołuj c specjalnie przygotowan funkcj ,
której argumentami s mi dzy innymi rozmiary i poło enie ramki. Po rejestracji da
i utworzeniu okna nale y podł czy si do strumienia komunikatów o naci ni tych
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
klawiszach, ruchach myszki, ewentualnie stanach innych urz dze . Pozostał jeszcze
czwarty element – cała reszta programu, zapisana jako funkcja (która oczywi cie mo e
operowa mnóstwem innych funkcji) reprezentuj ca specyficzne reakcje na ka dy
konkretny komunikat o zdarzeniach zewn trznych.
Programowanie obiektowe ma szczególne mo liwo ci ukrywania kodu, składaj cego si
na program. Konstruktor jakiego obiektu, b d cy zwykł funkcj wchodz c do gry
w momencie deklarowania konkretnej instancji tego obiektu, mógłby stanowi wi ksz
cz
programu. Publiczne funkcje obiektu, jak np. funkcja Run() obiekt typu
TApplication
, dopełniaj reszty cech programowania obiektowego. Wystarczy mie dobry
opis konkretnej klasy by móc pisa skomplikowane programy, wykorzystuj ce przy tym
prac innych programistów.
Filozofia programowania w OWL opiera si na poznaniu zasady modyfikowania
obiektów bibliotecznych.
Poni ej przedstawi cz
kodu ródłowego opisuj c wybrane funkcje i klasy:
#include"kk.h"
#include <owl\applicat.h>
#include <owl\inputdia.h>
#include <owl\opensave.h>
#include <owl\framewin.h>
#include <owl\gauge.h>
#include <owl\listbox.h>
#include <owl\window.h>
#include <owl\dialog.h>
#include <owl\edit.h>
#include <owl\dc.h>
#include <owl\combobox.h>
#include <owl\button.h>
#include <owl\color.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <dos.h>
#include <dir.h>
struct czas_utworzenia_pliku
//Tworzymy struktury usprawniaj c i czyni c prac czytelniejsz
{
unsigned sec:5;
unsigned min:6;
unsigned hrs:5;
};
struct _DANE_PARAMETROW_
{
char pdwd[10];
//przedział danych wejsciowych dolni
char pdwg[10]; //przedział danych wejsciowych górny
char lkd[10];
//linia kontrolna dolnia
char lkg[10]; //linia kontrolna górna
char alk[10]; //wylicz automatycznie linie kontrolne po zadanym okresie
char apdw[10]; //automatyczny przedział danych po zadanym okresie
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
};
class _DIALOG_PARAMETROW_ : public TDialog
//Tworzymy klas , która dziedziczy zasoby
po
//klasie bazowej TDialog
{
public:
_DIALOG_PARAMETROW_(TWindow *parent,_DANE_PARAMETROW_ *daneparam,int
resId); //definiujemy konstruktor klasy
};
_DIALOG_PARAMETROW_::_DIALOG_PARAMETROW_(TWindow
*parent,_DANE_PARAMETROW_ *daneparam,int resId) : TDialog(parent,resId)
{
new TEdit(this,IDC_PDWD,10);
new TEdit(this,IDC_PDWG,10);
new TEdit(this,IDC_LKD,10);
new TEdit(this,IDC_LKG,10);
new TEdit(this,IDC_ALK,10);
new TEdit(this,IDC_APDW,10);
SetTransferBuffer(daneparam);
}
struct _DANE_WEJSCIOWE_
{
char sd[180];
// cie ka dost pu do pliku wej ciowego
char cod[10];
//czas odczytu danych
};
class _DIALOG_DANE_WEJSCIOWE_ : public TDialog
{
public:
_DIALOG_DANE_WEJSCIOWE_(TWindow
*parent,_DANE_WEJSCIOWE_
*danewe,int
resId);
};
_DIALOG_DANE_WEJSCIOWE_::_DIALOG_DANE_WEJSCIOWE_(TWindow
*parent,_DANE_WEJSCIOWE_ *danewe,int resId) : TDialog(parent,resId)
{
new TEdit(this,IDC_SCIEZKADOSTEPU,180);
new TEdit(this,IDC_CZESTOTLIWOSC,10);
SetTransferBuffer(danewe);
}
class _WYKRES_
//Tworzymy klas do rysowania wykresów, której mo liwo ci wykraczaj poza
//wymagania programu
{
public:
_WYKRES_(TDC &dc,char *tytul,double xl,double yl,double xr,double yr,
int xel,int yel,int xer,int yer,int il_skala_x,int il_skala_y,
bool linia,bool skala_x,bool skala_y,bool siatka,
TColor kolor_punktu,TColor kolor_skali,TColor kolor_siatki);
~_WYKRES_()
{
_dc_->RestorePen();
}
void Plot(double x,double y);
float _x0_,_y0_;
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
private:
TDC *_dc_;
TColor _kolor_punktu_;
double _a_,_b_,_c_,_d_;
bool _linia_,_pierwszy_punkt_;
};
_WYKRES_::_WYKRES_(TDC &dc, char *tytul=NULL, double xl=-10, double yl=-8, double xr=10,
double yr=8,
int xel=30, int yel=30, int xer=90, int yer=90, int
il_skala_x=3, int il_skala_y=3,
bool
linia=false,
bool
skala_x=true,
bool
skala_y=true, bool siatka=true,
TColor kolor_punktu=0,
TColor kolor_skali=0, TColor kolor_siatki=0)
{
_dc_=&dc;
_kolor_punktu_=kolor_punktu;
_a_=(double)(xer-xel)/(xr-xl);
_b_=(double)xel-_a_*xl;
_c_=(double)(yer-yel)/(yr-yl);
_d_=(double)yel-_c_*yl;
if(tytul)
{
TSize rozmiar;
TFont mss("MS Sans Serif",10);
dc.SelectObject(mss);
rozmiar=dc.GetTextExtent(tytul,strlen(tytul));
dc.TextOut(xel+(xer-xel-rozmiar.cx)/2,250,tytul);
dc.RestoreFont();
}
if(linia)
{
_pierwszy_punkt_=true;
}
if(siatka)
{
dc.SelectObject(TPen(kolor_siatki));
int dx=(xer-xel)/il_skala_x;
for(int x=xel;x<=xer;x+=dx)
{
dc.MoveTo(x,yer);
dc.LineTo(x,yel);
}
int dy=(yer-yel)/il_skala_y;
for(int y=yel;y<=yer;y+=dy)
{
dc.MoveTo(xel,y);
dc.LineTo(xer,y);
}
}
if(skala_x)
{
dc.SelectObject(TPen(kolor_skali));
int dx=(xer-xel)/il_skala_x;
dc.MoveTo(xel,yer);
dc.LineTo(xer,yer);
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
for(int x=xel;x<=xer;x+=dx)
{
dc.MoveTo(x,yer-3);
dc.LineTo(x,yer+3);
}
dc.MoveTo(xel,yer);
dc.LineTo(xer,yer);
dc.MoveTo(xer+10,yer);
dc.LineTo(xer,yer-3);
dc.LineTo(xer,yer+3);
dc.LineTo(xer+10,yer);
}
if(skala_y)
{
dc.SelectObject(TPen(kolor_skali));
int dy=(yer-yel)/il_skala_y;
for(int y=yel;y<=yer;y+=dy)
{
dc.MoveTo(xel-3,y);
dc.LineTo(xel+3,y);
}
dc.MoveTo(xel,yer);
dc.LineTo(xel,yel);
dc.MoveTo(xel,yel-10);
dc.LineTo(xel-3,yel);
dc.LineTo(xel+3,yel);
dc.LineTo(xel,yel-10);
}
}
void _WYKRES_::Plot(double x,double y)
{
int xe,ye;
xe=_a_*x+_b_;
ye=_c_*y+_d_;
if(_linia_)
{
if(_pierwszy_punkt_)
{
_x0_=xe;
_y0_=ye;
_pierwszy_punkt_=false;
}
_dc_->SelectObject(TPen(_kolor_punktu_));
_dc_->MoveTo(_x0_,_y0_);
_dc_->LineTo(_x0_=xe,_y0_=ye);
}
else
_dc_->SetPixel(xe,ye,_kolor_punktu_);
}
Nast pn z najwa niejszych i najbardziej efektownych klas w OWL jest klasa TWindow.
Daje ona pocz tek wszystkim typom okien – w szczególno ci TFrameWindow. Nawet
zwykły przycisk jest potomkiem TWindow, co znaczy, e zwi zana z nim klasa powstała
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
w wyniku zastosowania składni dziedziczenia. Oczywi cie obiekt TWindow ma swoje
konstruktory, swoje publiczne i prywatne dane, swoje funkcje, z których kluczowa cz
jest wirtualna:
class _OKNO_ : public TWindow
{
public:
_OKNO_(TWindow* parent=0);
~_OKNO_();
int i,cmwapdw,cmwalk;
int xx;
TStatic* xi[10];
TStatic *odchylenies, *liniac;
TStatic *przedzialdanychgorny, *przedzialdanychdolni;
TStatic *sredniaruchoma, *dopuszczalneodchyl, *gornaliniakontrolna, *dolnialiniakontrolna;
TGauge *miernik;
char sd[180],cod[10];
char pdwd[10];
//przedział danych wejsciowych dolni
char pdwg[10]; //przedział danych wejsciowych górny
char lkd[10];
//linia kontrolna dolnia
char lkg[10]; //linia kontrolna górna
char alk[10]; //wylicz automatycznie linie kontrolne po zadanym okresie
char apdw[10]; //automatyczny przedział danych po zadanym okresie
char xip[10][5];
float x_0,y_0;
float ppdgp, ppddp;
float ppd[9],lc;
float ppdsrxx;
float ppddpt; //pomocniczy przedział danych dolnich tymczasowy
float ppdgpt;
//pomocniczy przedział danych górnych tymczasowy
float ppdsrk[10001];
//pomocniczy przedział danych rednich ruchomych kroki
double x;
long opoznij,lcif;
float wylicz_srednia_ruchoma(float[]);
float przedzial_danych_gorny(float[]);
float przedzial_danych_dolni(float[]);
float linia_centralna(float[]);
float odchylenie_stand(float[]);
float lcp[10]; //linia centralalna pomocnicza
bool IdleAction(long);
void SetupWindow(void);
void CmOprogramie(void);
void CmParametryObliczeniowe(void);
void CmDaneWejsciowe(void);
void Cmwapdw(void);
void Cmwalk(void);
void CmHelp(void);
bool CanClose(void);
float linia_kontrolna_dolnia(void);
float linia_kontrolna_gorna(void);
void CmStart(void){i=1;};
void CmStop(void){i=0;};
void Paint(TDC &dc,bool erase,TRect &r);
_DANE_WEJSCIOWE_ danewe;
_DANE_PARAMETROW_ daneparam;
private:
DECLARE_RESPONSE_TABLE(_OKNO_);
};
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
Jednym z najwa niejszych w programowaniu pod Windows terminem jest zdarzenie,
wiadomo , REAPONSE TABLE (tabela odzewów). Tabela ta okre la zdarzenie, którymi
interesuje si okno i z ka dym zdarzeniem wi e odpowiedni funkcj ze zbioru
procedur.
DEFINE_RESPONSE_TABLE1(_OKNO_,TWindow)
EV_WM_SIZE,
EV_COMMAND(IDM_OPROGRAMIE,CmOprogramie),
EV_COMMAND(IDM_PARAMETRYOBLICZENIOWE,CmParametryObliczeniowe),
EV_COMMAND(IDM_DANEWEJSCIOWE,CmDaneWejsciowe),
EV_COMMAND(ID_PRZYCISK_OPCJE,CmParametryObliczeniowe),
EV_COMMAND(ID_PRZYCISK_DANE,CmDaneWejsciowe),
EV_COMMAND(IDC_WAPDW,Cmwapdw),
EV_COMMAND(IDC_WALK,Cmwalk),
EV_COMMAND(IDHELP1,CmHelp),
EV_COMMAND(ID_PRZYCISK_START,CmStart),
EV_COMMAND(ID_PRZYCISK_STOP,CmStop),
END_RESPONSE_TABLE;
_OKNO_::_OKNO_(TWindow* parent) : TWindow(parent)
{
strcpy(sd,".//DANE//kk.txt");
strcpy(cod,"500");
strcpy(pdwd,"13");
strcpy(pdwg,"14");
strcpy(alk,"6");
strcpy(apdw,"6");
i=1;
TStatic *ramka1, *ramka2, *ramka3, *ramka4;
ramka1=new TStatic(this,-1,"",20,10,110,230);
ramka1->Attr.Style|=SS_ETCHEDFRAME;
ramka2=new TStatic(this,-1,"",20,245,600,240);
ramka2->Attr.Style|=SS_ETCHEDFRAME;
ramka3=new TStatic(this,-1,"",505,10,110,230);
ramka3->Attr.Style|=SS_ETCHEDFRAME;
ramka4=new TStatic(this,-1,"",140,10,355,205);
ramka4->Attr.Style|=SS_ETCHEDFRAME;
miernik=new TGauge(this,ID_MIERNIK,135,225,365,15);
SetBkgndColor(TColor::Sys3dFace);
for(int xii=0;xii<5;xii++)
{
new TStatic(this, -1,"xi=",30,20+(20*xii),40,18,18);
xi[xii]=new TStatic(this, -1," ",80,20+(20*xii),40,18,18);
};
new TStatic(this, -1,"Linia centralna:",170,20,100,18,18);
liniac=new TStatic(this,-1," ",280,20,60,20,18);
new TStatic(this, -1,"Odchylenie standardowe:",170,40,170,18,18);
odchylenies=new TStatic(this, -1," ",345,40,60,20,18);
new TStatic(this, -1,"Przedział dolni danych:",170,60,170,18,18);
przedzialdanychdolni=new TStatic(this, -1," ",345,60,60,20,18);
new TStatic(this, -1,"Przedział górny danych:",170,80,170,18,18);
przedzialdanychgorny=new TStatic(this, -1," ",345,80,60,20,18);
new TStatic(this, -1,"Górna linia kontrolna:",170,100,170,18,18);
gornaliniakontrolna=new TStatic(this, -1," ",345,100,60,20,218);
new TStatic(this, -1,"Dolnia linia kontrolna:",170,120,170,18,18);
dolnialiniakontrolna=new TStatic(this, -1," ",345,120,60,20,218);
new TStatic(this, -1,"Dopuszczalne odchylenie:",170,140,180,18,18);
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
dopuszczalneodchyl=new TStatic(this, -1," ",345,140,60,20,218);
new TStatic(this, -1," rednia ruchoma:",170,160,140,18,18);
sredniaruchoma=new TStatic(this, -1," ",315,160,60,20,18);
new TButton(this,ID_PRZYCISK_START,"START",515,30,90,25);
new TButton(this,ID_PRZYCISK_STOP,"STOP",515,70,90,25);
new TButton(this,ID_PRZYCISK_OPCJE,"OPCJE",515,110,90,25);
new TButton(this,ID_PRZYCISK_DANE,"DANE",515,150,90,25);
new TButton(this,IDHELP1,"HELP",515,190,90,25);
};
_OKNO_::~_OKNO_()
{
};
Klasa TWindow, jak przystało na okienkowy system operacyjny, jest niezwykle bogata
w szczegóły. Zawiera blisko dwie cie danych i funkcji. Przytocz tutaj tylko jedn , ale
chyba najwa niejsz funkcj klasy TWindow – Paint() (maluj):
virtual void Paint (TDC& dc, bool erase, TRect& rect);
Funkcja Paint() jest podporz dkowana systemowi. Wywoła j system, gdy nasze okno
znajdzie si na widocznym miejscu ekranu. Funkcja Paint() to danie na pokazanie
tre ci okna. Funkcja Paint() ma trzy argumenty. Pierwsza z nich jest powi zaniem
(referencj ) do obiektu typu TDC – urz dzenia graficznego (Device Context), które tutaj
jest pewnym kawałkiem ekranu. Drugi argument, o nazwie erase (skasuj) poinformuje,
czy odbudowie podlega cała zawarto okienka. Trzeci argument jest referencj do
zaskakuj co bogatego obiektu, który definiuje obszar wymagaj cy od wie enia. S tam
zdefiniowane mi dzy innymi współrz dne prostok ta, które okre l , jaki obszar okna
powinien by odbudowany:
void _OKNO_::Paint(TDC& dc,bool,TRect&)
{
TMemoryDC memDC;
double minx=0,maxx=100;
TRect r=GetClientRect();
_WYKRES_ w(dc,"Diagram karty kontrolnej rednich ruchomych",minx,(ppdgp+0.5),maxx,(ppddp-
0.5),r.left+30,r.top+270,r.right-30,r.bottom-30,
10,10,true,true,true,false,TColor(0,100,0),TColor(0,0,0),TColor(255,255,255));
if(i==100)
{
i=5;
Invalidate(true);
}
if(i<=atoi(apdw)+2)
{
y_0=lc;
i++;
if(i==atoi(apdw)+2)
{
w.Plot(0,13.5);
w.Plot(100,13.5);
w.Plot(0,13.5);
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
w.Plot(0,atof(lkg)+0.4);
w.Plot(100,atof(lkg)+0.4);
w.Plot(0,atof(lkg)+0.4);
w.Plot(0,atof(lkd)-0.4);
w.Plot(100,atof(lkd)-0.4);
}
}
else
{
w.Plot(x_0,y_0);
w.Plot(i++,ppdsrxx);
x_0=i-1;
y_0=ppdsrxx;
}
}
Poni ej zastosowałem funkcj , która symuluje wielozadaniowo w ramach programu,
pozwalaj c wykonywa pewne czasochłonne operacje poza normalnym okresem
aktywno ci programu i systemu:
bool _OKNO_::IdleAction(long)
{
if(i==0) return true;
FILE *plik_kk;
char ppdane[9];
unsigned g=0;
unsigned m=0;
unsigned s=0;
struct ffblk f_info;
czas_utworzenia_pliku cup;
int stat,index_modyfikacji=0;
while(index_modyfikacji<20)
{
stat=findfirst(sd,&f_info,FA_ARCH);
if(stat)
{
MessageBox("Brak zbioru wej ciowego ","Uwaga...",MB_OK|MB_ICONSTOP);
break;
}
else
{
memcpy(&cup,&f_info.ff_ftime, sizeof(czas_utworzenia_pliku));
if(!((cup.hrs==g)&(cup.min==m)&(cup.sec==s)))
{
plik_kk=fopen(sd,"r");
int ppdi=0;
while(!feof(plik_kk))
{
fgets(ppdane,sizeof(ppdane),plik_kk);
ppd[ppdi]=atof(ppdane);
ppdi++;
};
fclose(plik_kk);
};
g=cup.hrs;
m=cup.min;
s=cup.sec;
index_modyfikacji++;
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
char s[8][8],liniacentralna[8],odchyleniestand[8],przedzialgorny[8],przedzialdolni[8];
char sredniaruch[8],liniakontrolnadolnia[8], liniakontrolnagornia[8],dop[8];
if(++opoznij<(atoi(cod)*6)) return true; //p tla opu niaj ca wy wietlanie.
else opoznij=0;
for(int xii=0;xii<5;xii++)
{
gcvt(ppd[xii],4,s[xii]);
xi[xii]->SetText(s[xii]);
}
gcvt(linia_centralna(ppd),8,liniacentralna);
liniac->SetText(liniacentralna);
gcvt(odchylenie_stand(ppd),8,odchyleniestand);
odchylenies->SetText(odchyleniestand);
miernik->SetValue(100*odchylenie_stand(ppd));
gcvt(przedzial_danych_gorny(ppd),8,przedzialgorny);
przedzialdanychgorny->SetText(przedzialgorny);
gcvt(przedzial_danych_dolni(ppd),8,przedzialdolni);
przedzialdanychdolni->SetText(przedzialdolni);
gcvt(wylicz_srednia_ruchoma(ppd),8,sredniaruch);
sredniaruchoma->SetText(sredniaruch);
gcvt(linia_kontrolna_dolnia(),8,liniakontrolnadolnia);
dolnialiniakontrolna->SetText(liniakontrolnadolnia);
strcpy(lkd,liniakontrolnadolnia);
gcvt(linia_kontrolna_gorna(),8,liniakontrolnagornia);
gornaliniakontrolna->SetText(liniakontrolnagornia);
strcpy(lkg,liniakontrolnagornia);
gcvt((13.5-linia_kontrolna_dolnia()),8,dop);
dopuszczalneodchyl->SetText(dop);
lcif++;
Invalidate(false);
};
}
return true;
};
Dalsza cz
to funkcje klasy _OKNO_ zdefiniowane na potrzeby programu:
float _OKNO_::wylicz_srednia_ruchoma(float ppdsr[9])
{
float ppdsrx=0;
if(lcif<atoi(apdw))
{
for(int lcifi=0;lcifi<5;lcifi++) ppdsrx+=ppdsr[lcifi];
ppdsrk[lcif]=ppdsrx/5;
return 0;
}
else
{
for(int lcifi=0;lcifi<5;lcifi++) ppdsrx+=ppdsr[lcifi];
ppdsrk[lcif]=ppdsrx/5;
ppdsrxx=(ppdsrk[lcif-2]+ppdsrk[lcif-1]+ppdsrk[lcif])/3;
return ppdsrxx;
}
};
float _OKNO_::linia_kontrolna_dolnia(void)
{
return (13.5-((2.576)*0.20)/(sqrt(15)));
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
};
float _OKNO_::linia_kontrolna_gorna(void)
{
return (13.5+((2.576)*0.20)/(sqrt(15)));
};
float _OKNO_::przedzial_danych_gorny(float ppdg[9])
{
if(lcif>atoi(apdw)) return ppdgpt;
ppdgp=(-1000);
//pomocniczny przedział danych górny(pom)
if(lcif>0) ppdgp=ppdgpt;
for(int ppdgi=0;ppdgi<5;ppdgi++) if(ppdgp<ppdg[ppdgi]) ppdgp=ppdg[ppdgi];
ppdgpt=ppdgp;
return ppdgp;
};
float _OKNO_::przedzial_danych_dolni(float ppdd[9])
{
if(lcif>atoi(apdw)) return ppddpt;
ppddp=1000;
//pomocniczny przedział danych dolnich(pom)
if (lcif>0) ppddp=ppddpt;
for(int ppddi=0;ppddi<5;ppddi++) if(ppddp>ppdd[ppddi]) ppddp=ppdd[ppddi];
ppddpt=ppddp;
return ppddp;
}
float _OKNO_::linia_centralna(float ppdc[9])
//metoda stabilizacyjna - bez uwzgl dnienia
warto ci normatywnych
{
if(lcif>=(atoi(apdw))) return 13.5;
float lc1=0; //linia centralna
for(int lci=0;lci<5;lci++) lc1+=ppdc[lci];
if (lcif==0) lcp[lcif]=(lc1/5);
else lcp[lcif]=lcp[lcif-1]+(lc/5);
lc=(lc1/5);
return lc;
};
float _OKNO_::odchylenie_stand(float ppdo[9]) //wyliczenie odchylenia standardowego na podstawie
danych wej.
{
float oss=0;
for(int osi=0;osi<5;osi++) oss+=pow(ppdo[osi]-linia_centralna(ppd),2);
return sqrt(oss/4);
};
bool _OKNO_::CanClose(void)
//funkcja
wywyolywana przy daniu zamkni cia programu.
{
return (MessageBox("Koniec ?","Karty kontrolne",MB_YESNO|MB_ICONQUESTION)==IDYES);
}
void _OKNO_::CmOprogramie(void)
//funkcja wywołana
z menu - uruchamiaj ca okno dialogowe.
{
TDialog(this,IDD_OPROGRAMIE).Execute();
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
};
void _OKNO_::CmParametryObliczeniowe(void) //funkcja wywołuj ca parametry systemowe
{
_DIALOG_PARAMETROW_ dialogparam(this,&daneparam,IDD_PARAMETRYOBLICZENIOWE);
strcpy(daneparam.pdwd,pdwd);
strcpy(daneparam.pdwg,pdwg);
strcpy(daneparam.apdw,apdw);
strcpy(daneparam.lkd,lkd);
strcpy(daneparam.lkg,lkg);
strcpy(daneparam.alk,alk);
if(dialogparam.Execute()==IDOK)
{
strcpy(pdwd,daneparam.pdwd);
strcpy(pdwg,daneparam.pdwg);
strcpy(apdw,daneparam.apdw);
strcpy(lkd,daneparam.lkd);
strcpy(lkg,daneparam.lkg);
strcpy(alk,daneparam.alk);
}
};
void _OKNO_::CmDaneWejsciowe(void) //funkcja wywyołuj ca parametry danych wej ciowych
{
_DIALOG_DANE_WEJSCIOWE_ dialogdw(this,&danewe,IDD_DANEWEJSCIOWE);
strcpy(danewe.sd,sd);
strcpy(danewe.cod,cod);
if(dialogdw.Execute()==IDOK)
{
strcpy(cod,danewe.cod);
}
};
void _OKNO_::Cmwapdw(void)
{
cmwapdw=1;
};
void _OKNO_::Cmwalk(void)
{
cmwalk=1;
};
void _OKNO_::CmHelp(void)
{
TDialog(this,IDD_DIALOGHELP).Execute();
}
void _OKNO_::SetupWindow()
{
TWindow::SetupWindow();
}
Deklarujemy tutaj klas PROGRAM_, która dziedziczy po TApplication. Klasa
TApplication
zawiera kilka konstruktorów, ró ni cych si liczb parametrów:
class _PROGRAM_ : public TApplication
{
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
public:
void InitMainWindow()
{
TFrameWindow* ramka=new TFrameWindow(0,"Karta kontrolna redniej ruchomej",new
_OKNO_);
ramka->Attr.H=540;
ramka->Attr.W=640;
ramka->Attr.X=10;
ramka->Attr.Y=10;
ramka->Attr.Style=WS_VISIBLE|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX;
SetMainWindow(ramka);
MainWindow->SetIcon(this,"IKONA");
GetMainWindow()->AssignMenu(IDM_MENU);
}
};
TApplication
obsługuje kilkana cie funkcji. Jedn z nich jest – Run(), która tworzy
ekranow posta okienka i podł cza je do systemowej kolejki zdarze :
int OwlMain(int,char*[])
{
return _PROGRAM_().Run();
}
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
Nat pnym plikiem z kodem ródłowym programu jest jeden lub wi cej plików *.rc
opisuj cy map bitowe, ikony, przyciski, edytory, list, itd.:
#include "kk.h"
#include<owl/inputdia.rc>
IKONA ICON "icona.ico"
IDM_MENU MENU
{
POPUP "&Ustawienia"
{
MENUITEM "&Parametry obliczeniowe...",IDM_PARAMETRYOBLICZENIOWE
MENUITEM "&Dane wejsciowe",IDM_DANEWEJSCIOWE
}
MENUITEM "0 programi&e",IDM_OPROGRAMIE
}
IDD_OPROGRAMIE DIALOG 40,60,240,120
EXSTYLE WS_EX_DLGMODALFRAME
STYLE DS_MODALFRAME|DS_3DLOOK|WS_POPUP|WS_VISIBLE|WS_CAPTION
CAPTION "Karty kontrolne redniej ruchomej"
FONT 8, "MS Sans Serif"
{
CTEXT "Politechnika Cz stochowska Cz stochowa 2001",-1,12,80,220,9
CTEXT "Praca Dyplomowa", -1,12,15,220,9
CTEXT "Tomasz Bylica", -1,12,35,220,9
CTEXT "Promotor: prof. dr. hab. in . Paweł Sewastianow",-1,12,50,220,9
PUSHBUTTON "OK",IDOK,96,100,48,14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
CONTROL "Frame",-1,"static",SS_ETCHEDFRAME|WS_CHILD|WS_VISIBLE,6,6,228,86,0
}
IDD_PARAMETRYOBLICZENIOWE DIALOG 0, 0, 246, 206
{
CONTROL "PRZEDZIAŁ DANYCH WEJ CIOWYCH", IDC_GROUPBOX1PO, "button",
BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP, 12, 12, 220, 30
CONTROL "LINIE KONTROLNE", IDC_GROUPBOX2PO, "button", BS_GROUPBOX | WS_CHILD |
WS_VISIBLE | WS_GROUP, 12, 52, 220, 30
CONTROL "AUTOMATYCZNE PRZEDZIAŁY DANYCH WEJ CIOWYCH", IDC_GROUPBOX3PO,
"button", BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP, 12, 92, 220, 30
CONTROL "AUTOMATYCZNE LINIE KONTROLNE", IDC_GROUPBOX4PO, "button",
BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP, 12, 132, 220, 30
CONTROL "DOLNI:", IDC_STATICTEXT1PO, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 27,
27, 24, 9
CONTROL "GÓRNY:", IDC_STATICTEXT2PO, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 132,
27, 29, 9
CONTROL "DOLNIA:", IDC_STATICTEXT3PO, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 24,
67, 28, 9
CONTROL "GÓRNA:", IDC_STATICTEXT4PO, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 132,
67, 28, 9
CONTROL "OK", IDOK, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE
| WS_TABSTOP, 16, 180, 50, 14
CONTROL "Cancel", IDCANCEL, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD |
WS_VISIBLE | WS_TABSTOP, 92, 180, 50, 14
CONTROL "Help", IDHELP1, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD |
WS_VISIBLE | WS_TABSTOP, 172, 180, 50, 14
CONTROL "", IDC_LKD, "edit", ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER |
WS_TABSTOP, 64, 65, 40, 10
CONTROL "", IDC_PDWG, "edit", ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER |
WS_TABSTOP, 176, 25, 36, 10
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
CONTROL "", IDC_PDWD, "edit", ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER |
WS_TABSTOP, 64, 25, 40, 10
CONTROL "", IDC_LKG, "edit", ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER |
WS_TABSTOP, 176, 65, 36, 10
CONTROL "", IDC_APDW, "edit", ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER |
WS_TABSTOP, 184, 106, 36, 10
CONTROL "", IDC_ALK, "edit", ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER |
WS_TABSTOP, 184, 146, 36, 10
CONTROL
"Oblicz
automatycznie
po
zadanym
okresie:",
IDC_WAPDW,
"button",
BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 23, 107, 161, 11
CONTROL
"Oblicz
automatycznie
po
zadanym
okresie:",
IDC_WALK,
"button",
BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 23, 147, 158, 11
}
IDD_DANEWEJSCIOWE DIALOG 0, 0, 235, 110
STYLE DS_MODALFRAME | DS_3DLOOK | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE |
WS_CAPTION | WS_SYSMENU
CAPTION "DANE WEJ CIOWE"
FONT 8, "Times New Roman CE"
{
CONTROL "OK", IDOK, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE
| WS_TABSTOP, 12, 84, 50, 14
CONTROL "Cancel", IDCANCEL, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD |
WS_VISIBLE | WS_TABSTOP, 92, 84, 50, 14
CONTROL "Help", IDHELP, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD |
WS_VISIBLE | WS_TABSTOP, 172, 84, 50, 14
CONTROL " CIE KA DOST PU DO PLIKU WEJ CIOWEGO", IDC_SCIEZKADOPLIKU, "button",
BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP, 12, 8, 208, 28
CONTROL "", IDC_SCIEZKADOSTEPU, "edit", ES_LEFT | WS_CHILD | WS_VISIBLE |
WS_BORDER | WS_TABSTOP, 24, 20, 180, 10
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
CONTROL
"CZ STOTLIWO
POBIERANIA
DANYCH",
IDC_CZESTOTLIWOSCODCZYTUPLIKU, "button", BS_GROUPBOX | WS_CHILD | WS_VISIBLE |
WS_GROUP, 12, 44, 208, 28
CONTROL "", IDC_CZESTOTLIWOSC, "edit", ES_LEFT | WS_CHILD | WS_VISIBLE |
WS_BORDER | WS_TABSTOP, 24, 56, 40, 10
CONTROL "milisekund", IDC_STATICTEXT1DW, "static", SS_LEFT | WS_CHILD | WS_VISIBLE,
68, 56, 48, 8
}
IDD_DIALOGHELP DIALOG 0, 0, 217, 63
STYLE DS_MODALFRAME | DS_3DLOOK | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE |
WS_CAPTION | WS_SYSMENU
CAPTION ""
FONT 8, "MS Sans Serif"
{
CONTROL "OK", IDOK, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE
| WS_TABSTOP, 80, 40, 50, 14
CONTROL "Program do analizy procesu kart kontrolnych redniej ruchomej. W etapie testowym nale y
uruchomi program ./DANE/demon.exe w celu symulacji pobierania danych on-line.", IDC_HELP,
"static", SS_CENTER | WS_CHILD | WS_VISIBLE, 8, 4, 204, 28
}
Na tym ko cz opis teorii i niektórych przykładów z wiata programowania w C++ pod
systemem Windows.
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
VIII. BIBLIOGRAFIA
1.
Andrzej Zalewski „Programowanie w j zykach C i C++ z wykorzystaniem pakietu
Borland C++”
, Wydawnictwo Nakom, Pozna 1997.
2.
Adam Majczak „C++ w 48 godzin”.
3.
Steve Holzner „Programowanie w Microsoft C/C++”, Intersoftland, Warszawa 1993.
4.
Stanley B. Lippman „Podstawy j zyka C++”, Wydawnictwo Naukowo-Techniczne,
Warszawa 1994.
5.
Jan Bielecki „Od C do C++ programowanie obiektowe w j zyku C”.
6.
Piotr Wróblewski „Programowanie w Windows dla praktyków”, Wydawnictwo
Helion, Gliwice 1997.
7.
Andrzej Stasiewicz „C++ całkiem inny wiat”, Wydawnictwo Helion, Gliwice 1998.
8.
Jesse Liberty „C++ Ksi ga Eksperta”, Wydawnictwo Helion, Gliwice 1999.
9.
Sławomir Osiak „Programowanie w Windows”, ZNI „MIKOM”, Warszawa stycze
1997.
10.
Jens J. Dahlgaard, Kai Kristensen, Gopal K. Kanji „Podstawy zarz dzania jako ci ”,
Wydawnictwo Naukowe PWN, Warszawa 2000.
11.
Andrzej Iwasiewicz „Zarz dzanie Jako ci ”, Wydawnictwo Naukowe PWN,
Warszawa-Kraków 1999.
12.
Henryk Bieniok i zespół „Metody sprawnego zarz dzania”, Agencja Wydawnicza
„Placet”, Warszawa 1999.
13.
Ireneusz Durlik „In ynieria zarz dzania”, Agencja Wydawnicza „Placet”, Warszawa
1998.
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
SPIS TRE CI
IX.
WST P……………………………………………………………………….........
2
X.
METODY KOMPLEKSOWEGO ZARZ DZANIA JAKO CI ………………. 4
1.
Metody planowania…………………………………………………… 4
2.
Metody i techniki organizowania pracy……………………………… 5
3.
Metody motywowania………………………………………………… 7
4.
Techniki kontroli mened erskiej……………………………………….. 11
XI.
STATYSTYCZNA ANALIZA WYDOLNO CI PROCESU…………………… 14
1.
Badanie wydolno ci procesu przy alternatywnej ocenie wła ciwo ci
produktu……………………………………………………………….. 15
2.
Badanie wydolno ci procesu przy liczbowej ocenie wła ciwo ci
produktu……………………………………………………………….. 15
XII.
STEROWANIA PROCESAMI ZA POMOC KART KONTROLNYCH……. 17
XIII.
WST P DO PROGRAMOWANIA W J ZYKU C/C++…………………………
21
8.
Wprowadzenie......................................................................................... 21
9.
Operatory.................................................................................................. 23
10.
Instrukcje................................................................................................. 25
11.
Funkcje.................................................................................................... 28
12.
Budowa programu. ................................................................................. 31
13.
Klasy i obiekty......................................................................................... 31
14.
Dziedziczenie i polimorfizm................................................................... 33
XIV.
PROGRAMOWANIE DLA WINDOWS Z WYKORZYSTANIEM
OWL(OBIEKT WINDOW LIBRARY) ..................................................................
35
XV.
PRAKTYCZNY CZ
TWORZENIA PROGRAMU KART
KONTROLNYCH.................................................................................................. 41
XVI.
BIBIOGRAFIA....................................................................................................... 58
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
IX. WST P
U podstaw wszelkich działa człowieka le y ch zaspokojenia odczuwanych potrzeb.
Pierwotne potrzeby człowieka pozostaj niemal niezmienione w całej historii cywilizacji.
Od pocz tku swych dziejów człowiek odczuwa:
potrzeb od ywiania si w celu utrzymania procesów yciowych
potrzeb posiadania ubrania w celu ochrony przed oddziaływaniem
czynników atmosferycznych
potrzeb posiadania mieszkania jako wydzielonej przestrzeni chroni cej
przed bezpo rednim oddziaływaniem otoczenia
potrzeb komunikowania si w celu wymiany informacji
potrzeb przemieszczania si .
Poziom wa no ci tych potrzeb jest okre lony przez rodowisko naturalne, a tak e
uwarunkowania społeczne i kulturalne.
Zbiór pierwotnych potrzeb człowieka, zaliczanych do tak zwanych potrzeb niedoboru,
pozostaje niemal stały, o tyle technologie ich zaspokajania podlegaj ci głym zmianom,
a technologia zaspokajania potrzeb jest pewn koncepcj zwi zan zwykle z praktycznym
wykorzystaniem wynalazku lub odkrycia naukowego, konkretny wyrób lub usługa jest
natomiast realizacj owej ogólnej koncepcji.
W systemach społeczno-ekonomicznych proces zaspokajania potrzeb rozwija si pod
wpływem bod ców emitowanych przez rynek. Pierwotnym ródłem tych bod ców s
rozbie no ci mi dzy istniej cym i oczekiwanym poziomem zaspokojenia odczuwanych
potrzeb. Im wyra niejsze s te rozbie no ci oraz im zamo niejsza jest popytowa strona
rynku, tym silniejszy jest nacisk na doskonalenie jako ci oferowanych na tym rynku
produktów. Produktów takiej sytuacji, zwłaszcza w przypadku owych zamo niejszych
rynków, jako oferowanego produktu staje si podstawowym i najbardziej efektywnym
instrumentem konkurencji handlowej. W coraz wi kszym stopniu pozycja
przedsi biorstwa na rynku zale y od jako ci produkowanych wyrobów lub wiadczonych
usług. Wynika st d bezpo rednio, e wszelkie problemy zwi zane z procesami kreowania
i ochrony jako ci produktów nale y postrzega w kontek cie uwarunkowa rynkowych.
Z punktu widzenia celów i potrzeb zarz dzania jako ci rynek jest systemem relacyjnym,
w którym kształtuj si zarówno decyzje konsumentów, dotycz ce zakupu konkretnych
produktów, jak i decyzje konsumentów, dotycz ce zakupu konkretnych produktów, jak
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
i decyzje producentów odniesieniu do jako ci wytwarzanych wyrobów albo
wiadczonych usług.
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
X. METODY KOMPLEKSOWEGO ZARZ DZANIA JAKO CI
5. Metody planowania
Ostatnie dziesi ciolecie cechuje rosn ca zmienno i zło ono warunków działania
podmiotów gospodarczych. Powoduje to, e nieustannie poszukuje si sposobów
rozpoznawania i ograniczania niepewno ci oraz minimalizacji ryzyka, jakie towarzyszy
podejmowanym decyzjom, zwłaszcza strategicznym. Rozpoznawaniu przyszło ci słu
metody prognozowania i planowania, w ród których wyró niamy:
a.
Metody scenariuszowe
Metoda scenariuszowa polega na budowie kilku wariantów scenariuszy przyszło ci,
czyli konstruowaniu logicznego, przypuszczalnego opisu zdarze , jakie mog
wyst pi w przedsi biorstwie jego otoczeniu w przyszło ci, aby okre li wła ciwe
cele i przygotowa odpowiednie strategie działania.
b.
Metody symulacyjne
Termin „symulacja” w nauce oznacza odwzorowanie oraz sztuczne odtwarzanie
i na ladowanie procesów realnych z zastosowaniem ró norodnych modeli
fizycznych, analogowych i matematycznych.
c.
Wykresy Gantta
Za pomoc wykresu Gantta mo na nie tylko planowa i kontrolowa wykonanie
planu, ale tak e – poprzez zastosowanie odpowiedniego systemu oznacze –
uwzgl dnia zmienno przebiegu wykonania zadania.
d.
Planowanie sieciowe
Technik planowania sieciowego stosuje si do planowania i kontroli realizacji
zło onych przedsi wzi gospodarczych, technicznych organizacyjnych przy
zało eniu racjonalnego wykorzystania zasobów. Przykładem zastosowania tej
techniki mo e by planowanie realizacji du ych inwestycji lub remontów
kapitalnych, uruchomienie produkcji nowego wyrobu, zorganizowanie du ej
imprezy itp.
e.
Metody analizy portfelowej
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
Metody analizy portfela umo liwiaj porównywanie, według jednolitych kryteriów
ró nych dziedzin działalno ci przedsi biorstwa i zarz dzanie „portfelem” tych
działalno ci w celu uzyskania mo liwie najlepszej pozycji konkurencyjnej.
f.
Metodyka budowy biznes planu przedsi biorstwa
Biznes plan to przygotowywany dla celów wewn trznych lub zewn trznych
dokument stanowi cy zbiór analiz, prognoz i planów opisuj cych całe
przedsi biorstwo lub pojedyncze przedsi wzi cie (np. wprowadzanie nowego
produktu na rynek) od strony celu, przedmiotu, zewn trznych i wewn trznych
uwarunkowa działalno ci, koniecznych do zaanga owania zasobów finansowych,
osobowych i rzeczowych, spodziewanych efektów finansowych, osobowych
i rzeczowych, spodziewanych efektów finansowych i czynników ryzyka.
3
6. Metody i techniki organizowania pracy
Analizuj c pogl dy ró nych autorów na temat metodologii badania i projektowania
organizatorskiego a nawet technicznego mo na zauwa y , e w praktyce istniej dwie
podstawowe metody projektowania i doskonalenia organizacji a mianowicie:
Metoda diagnostyczna.
Metoda prognostyczna.
W obu metodach, a tak e w doskonaleniu ka dego ludzkiego działania nale y
post powa według z góry okre lonej procedury organizacyjnej zapewniaj cej wysok
sprawno i efektywno .
Metoda diagnostyczna bazuje na przekonaniu,
e organizacj dotychczas
funkcjonuj cego systemu mo na usprawni tylko w drodze identyfikacji, diagnozy
i oceny stanu istniej cego, wykryciu wszelkich nieprawidłowo ci oraz zaprojektowaniu
i wdro eniu niezb dnych usprawnie . Rozpoczynaj c analiz diagnostyczn nale y
precyzyjnie ustali cele badawcze. Ogólnym celem badania jest zawsze poprawa
organizacji lub zarz dzania a przez to sprawno ci funkcjonowania przedsi biorstwa jako
cało ci, natomiast celem szczegółowym udoskonalenia struktury lub organizacji
przebiegu działa na konkretnym odcinku działalno ci przedsi biorstwa. Badanie
i usprawnienie organizacji w całym systemie jest zazwyczaj trudne, dlatego te
3
„Metody sprawnego zarz dzania” Henryk Bieniok i zespół, Agencja Wydawnicza „Placet” Warszawa
1999, str. 11-54
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
przedmiotem badania s tylko niektóre starannie wybrane podsystemy przedsi biorstwa.
W procesie wyboru przedmiotu badania nale y bra pod uwag kryteria:
• Ekonomiczne, uwzgl dniaj ce konieczno likwidacji w skich ogniw, popraw
indywidualnej wydajno ci pracy, obni k kosztów własnych, popraw
efektywno ci, rentowno ci itp.
• Techniczne, takie jak np. konieczno doprowadzenia nowo uruchomionej
instalacji do pełnej zdolno ci produkcyjnej, uruchomienie produkcji nowego
wyboru, skróceniu cyklu produkcyjnego itp.
• Fizjologiczno-psychologiczne, uwzgl dniaj ce zmniejszeniu zm czenia
fizycznego i psychicznego ludzi, popraw warunków bhp, zwi kszenie komfortu
pracy itp.
• rodowiskowe,
uwzgl dniaj ce
reakcj
otoczenia
oraz
samych
zainteresowanych.
Podstaw
metody prognostycznej jest przekonanie, e dokonanie istotnego usprawnienia
organizacji jest mo liwe jedynie w oderwaniu od istniej cych rozwi za , które obci aj
psychicznie organizatora, a przez to rzutuj ograniczaj co na projektowany system i nie
pozwalaj na nowatorskie spojrzenie.
Główn metod prognostyczn stworzon przez G. Nadlera jest synteza tzw. systemu
idealnego. System idealny jest pod ka dym wzgl dem najdoskonalszy, działaj cy bez
jakichkolwiek ogranicze i realizuj cy swoje zadania w idealnych warunkach. Przy jego
konstrukcji przyjmuje si nierzeczywiste zało enie istnienia doskonałych warunków
działania, w których system wypełnia w sposób idealny wyznaczone funkcje. Taki system
ma oczywi cie charakter czysto teoretyczny, w praktyce nieosi galny, jednak operowanie
tego typu wzorcem okazuje si wysoce przydatne, gdy uzyskany w ten sposób pó niej
system realny charakteryzuje si wy szym poziomem rozwi za ani eli system
otrzymany w drodze mozolnej analizy i doskonalenia stanu istniej cego (zastosowanie
metody diagnostycznej).
System Nadlera udawania, e racjonalne ukształtowanie organizacji nie jest wynikiem
syntezy usprawnionych elementów, lecz odwrotnie, pochodn cało ciowej koncepcji
idealnej. Kieruj c si dalej musimy poszuka rozwi zania realnego (kompromisowego)
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
wychodz cego od koncepcji idealnej i zbli aj c j stopniowo do koncepcji spełniaj cej
warunki ograniczaj ce istniej ce w realnej rzeczywisto ci.
4
7. Metody motywowania
Poprzez metody motywowania mo emy wyró ni :
q.
Zarz dzanie przez cele
Idea przewodnia i swoista filozofia Zarz dzani przez cele skoncentrowana jest na
wspólnym (przeło eni i podwładni) okre laniu negocjowaniu celów, wspólnym
ustalaniu mierników po danych wyników ko cowych oraz na wspólnych
okresowych przegl dach i ocenie uzyskanych rezultatów. Wprowadzaj c powy sz
ide powinni my pami ta , e:
• Im wi kszy udział kierowników i podwładnych we wspólnym
precyzowaniu celów, tym wy sze prawdopodobie stwo ich realizowania,
• Podwładni, którzy sami okre laj własne cele, albo współuczestnicz w ich
ustalaniu uzyskuj lepsze wyniki od tych, którym cele te s narzucane.
Pracownicy, którzy postawili przed sob konkretny cel osi gaj lepsze wyniki
od tych, którzy staraj si robi tylko to, co do nich nale y.
r.
Zarz dzanie prze delegowanie uprawnie
Naczeln zasad le c u podstaw zarz dzania przez delegowanie uprawnie jest
przekazywanie innej osobie, ni szym szczeblu zarz dzania cz ci formalnej władzy
i odpowiedzialno ci za wykonanie okre lonych zada .
s.
Zarz dzanie przez wyj tki (odchylenia)
Istot systemu zarz dzanie przez wyj tki jest identyfikacja „wyj tków” (odchyle ),
czyli wła nie tego, co odbiega od obowi zuj cych standardów, planów, wzorców,
norm i rutynowych zachowa organizacyjnych oraz oparty na wyj tkach systemu
informacji i decyzji w organizacji. W praktycznym rozumowaniu i zgodnie z zasad
wyj tków, kierownik powinien otrzymywa tylko skondensowane, streszczone
i porównywalne informacje, które powinny ujmowa najwa niejsze dla zarz dzania
elementy stanu rzeczywistego i wszystkie wyj tki w stosunku do dotychczasowych
warto ci przeci tnych lub standardowych zarówno te szczególnie dobre, jak
4
„Metody sprawnego zarz dzania” Henryk Bieniok i zespół, Agencja Wydawnicza „Placet” Warszawa
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
i szczególnie złe. Dzi ki nim kierownik mo e w ci gu kilku minut mie pełny
obraz, jak du y osi gni to post p.
t.
Zarz dzanie przez wyniki (rezultaty)
Zarz dzenie przez wyniki zakłada formułowanie konkretnych celów i zada dla
poszczególnych komórek organizacyjnych, z nast pnie rozliczanie ich
z uzyskanych wyników, które w naukach ekonomicznych, a zwłaszcza
w rachunkowo ci i finansach s definiowane jako ró nica mi dzy dochodami
a nakładami, czyli zysk.
u.
Zarz dzanie przez zadania
Zarz dzanie przez zadania polega najogólniej mówi c na formułowaniu przez
kierownika, konkretnych mobilizuj cych zada rzeczowych oraz na zlecaniu ich do
wykonania podwładnym wraz z okre leniem terminów ich realizacji. Ka demu
zadaniu ustala si na ogół norm (granic ) czas, w którym zadanie ma by
wykonane.
v.
Zarz dzanie przez innowacje
Zarz dzanie przez innowacje zmierza do rozwoju przedsi biorstwa przez
wprowadzanie szeroko poj tych zmian (usprawnie , udoskonale , innowacji)
przede
wszystkim
w
przełomowych
obszarach
działalno ci
firmy.
W przedsi biorstwach ukierunkowanych na rozwój innowacje s niekwestionowan
konieczno ci generuj c pozytywne tendencje efektywno ciowe. Aby si rozwija
trzeba odrzuci wygodnictwo, bierno i postawy zachowawcze, przyjmuj c
ofensywny styl działania, wymagaj cy stałego wysiłku i gotowo ci do reakcji na
obserwowane zachowania klientów i konkurentów.
w.
Zarz dzanie przez partycypacj
Celem zarz dzania przez partycypacj jest wzrost aktywno ci podwładnych oraz
zaspokojenie ich potrzeb wy szego rz du (samorealizacji, uznania, przynale no ci)
w drodze dopuszczenia ich do procesu podejmowania decyzji. Akceptuj c model
partycypacji pracowniczej kierownictwo ma nadziej , e mo e skutecznie
1999, str. 56-82
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
realizowa cele organizacji wyci gaj c pracowników do aktywnego
współuczestnictwa w procesy zarz dzania, organizowania pracy, kreowania
i wdra ania innowacji oraz do współdecydowania o wszystkich najwa niejszych
sprawach przedsi biorstwa. Nic tak nie szkodzi przedsi biorstwu, jak przekonanie
kierownictwa, e wie lepiej od pracowników, jakie s przyczyny niepowodze i e
ma wył czn m dro jak im zaradzi .
x.
Zarz dzanie przez komunikowanie si
Bezpo rednim celem zarz dzania przez komunikowanie si jest doinformowanie
i dowarto ciowanie załogi, w nadziei, e przyczyni si ona do stworzenia klimatu
wzajemnego zaufania pomi dzy kierownictwem a podwładnym, a dzi ki temu do
lepszej motywacji i pozytywnych zachowa pracowników na rzecz organizacji.
W przedsi biorstwie komunikowanie si jest głównym procesem organizacyjnym
polegaj cym na wymianie informacji mi dzy ró nymi uczestnikami procesów
społeczno-gospodarczych. Komunikowanie si kierownictwa z pracownikami słu y
dwom celom:
• Tłumaczy abstrakcyjne cele i plany kierownictwa na j zyk wyzwalaj cy
aktywne działania pracowników,
• Ł czy działania ludzi całej organizacji we wspólnym kierunku.
y.
Zarz dzanie przez konflikt
Zarz dzenie przez konflikt w przedsi biorstwie polega na mo liwie wczesnym
wykrywaniu potencjalnych ródeł sporów nieporozumie , aby podj odpowiednie
rodki zapobiegawcze. Zadaniem kierowników jest zapanowanie nad konfliktami
w sensie sterowania tymi procesami, w kierunku ich „skanalizowania”
i wykorzystania dla dobra przedsi biorstwa. Korzenie konfliktu tkwi przede
wszystkim w sferze emocjonalnej człowieka, a nie w obiektywnie istniej cej
rzeczywisto ci.
z.
Zarz dzanie przez motywacj
Motywowanie polega na wpływaniu na postawy i zachowania człowieka za
po rednictwem okre lonych bod ców, które przekształcaj si w motywy (pobudki)
działania uruchamiaj ce jego aktywno . Motywowanie do pracy polega na
stosowaniu szeregu zró nicowanych indywidualnie narz dzi i instrumentów
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
oddziaływania na człowieka. Sterowanie zachowaniami pracowników w kierunku
skłonienia ich do ofiarnej i efektywnej pracy na rzecz firmy polega na bezustannym
i systematycznym stwarzaniu ró nych sytuacji oddziałuj cych na ich indywidualne
i bardzo zró nicowane potrzeby. W szczególno ci pobudzanie do pracy sprowadza
si zasadniczo do:
• Stwarzania okre lonych zach t (sytuacji n c cych) b d to materialnych
(płaca, premia, nagroda, udział w zyskach itp.) b d niematerialnych (pro ba,
namowa, pochwała, wyrazy uznania itp.),
• Stwarzanie sytuacji przymusowej poprzez stosowanie nakazów, gró b
i ró nego rodzaju kar.
aa.
Zarz dzania przez grupy autonomiczne
Zarz dzania przez grupy autonomiczne polega na tworzeniu, głównie na
najni szych szczeblach wykonawczych (np. na szczeblu brygady roboczej)
samodzielnych grup roboczych, pozbawionych formalnego kierownika, w których
funkcj t spełnia demokratycznie wybrany lider (przywódca).
bb.
Zarz dzanie przez inspirowanie
Zarz dzanie przez inspirowanie zmierza do poprawy motywacji oraz podniesienia
ch ci działania podwładnych poprzez skłonienie do współpracy z oficjalnym
kierownictwem nieformalnego przywódcy grupy, w sytuacji, kiedy mało skuteczne
s inicjatywy, zamierzenia i polecenia kierownictwa formalnego.
cc.
Zarz dzanie przez zespoły twórcze
Zarz dzanie przez zespoły twórcze polega na tworzeniu kilkuosobowych zespołów
innowacyjnych, zło onych ze specjalnie wyselekcjonowanych ludzi celu ledzenia
literaturze bli szym i dalszym otoczeniu najnowszych trendów rozwoju techniki,
technologii, ekonomii, organizacji i zarz dzania oraz wykorzystaniu ich literaturze
drodze adaptacji do budowy i doskonalenia strategii funkcjonowania i rozwoju
własnego przedsi biorstwa
dd.
Zarz dzanie przez doskonalenie i rozwój pracowników
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
Zarz dzanie przez doskonalenie i rozwój pracowników polega na inwestowaniu
literaturze ludzi, aby zapewni sobie zdolnych i efektywnych współpracowników
oraz kompetentnych nast pców.
ee.
Zarz dzanie przez formalizacj
Zarz dzanie przez formalizacj polega na kierowaniu lud mi i instytucjami za
pomoc szczegółowo okre lonych przepisów organizacyjnych w postaci zarz dze ,
okólników, regulaminów, instrukcji, kart stanowisk pracy, itp. Jego celem jest
ograniczenie dowolno ci (samowoli, woluntaryzmu) działania pracowników oraz
skłonienie ich do wzorcowego wykonywania pracy okre lonego przepisami.
ff.
Zarz dzanie przez ryzyko
Zarz dzanie przez ryzyko polega na identyfikacji i analizowaniu sytuacji
ryzykownych wynikaj cych literaturze zagro e oraz szans i okazji pojawiaj cych
si literaturze otoczeniu w celu optymalizacji decyzji oraz opracowaniu strategii ich
wprowadzania w ycie, przy jednoczesnej minimalizacji niepewno ci.
W literaturze i praktyce mo na spotka bardzo wiele metod i technik, których celem
jest motywacja do pracy i wyzwalanie aktywno ci pracowniczej. Mo na wr cz
powiedzie , e cał filozofia efektywno ci przedsi biorstwa sprowadza si
bezpo rednio, albo po redni do pobudzania ludzi w kierunku ofiarnej pracy na rzecz
swojej firmy.
8. Techniki kontroli mened erskiej
a.
Zarz dzanie przez stosowanie zasad nadzoru i kontroli
Kontrola kierownicza polega na porównaniu uzyskanego wyniku działania
z zaplanowanym oraz w razie stwierdzenia odchyle , na doprowadzeniu stanu
rzeczywistego do po danego (pierwotnie zamierzonego). Proces kontroli obejmuje
nadzór bie cy nad przebiegiem działa , jak i kontrol ko cow .
b.
Zarz dzanie przez kontrol na zasadzie sprz enia zwrotnego
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
Podstaw techniki kontroli jest cybernetyczny model sprz enia zwrotnego
zakładaj cy konieczno ka dorazowego dopływu od obiektu sterowanego
(regulowanego) do obiektu steruj cego (reguluj cego) informacji zwrotnej
(wynikowej) o sposobie realizacji norm pierwotnie zadanych obiektowi
sterowanemu.
W modelu sterowania wyst puj w uproszczeniu dwa typy obiektów:
• Obiekt steruj cy (reguluj cy – regulator) generuj cy impulsy w postaci
pewnych norm i zada (jest to obiekt kieruj cy, czyli kierownik)
• Obiekt sterowany (regulowany) – (wykonawca)
Ł cznikiem mi dzy obu obiektami jest proces kontroli, w którym oceniamy osi gi
wyniki z punktu widzenia stopnia realizacji pierwotnie okre lonych celów
i wyznaczonych na tej podstawie zada (norm zadaniowych). Kierownicy s tym
ogniwem w procesach zarz dzania, którzy powinni ci le wi za planowanie
i kontrolowanie. Planowanie jest pierwsz funkcj planowania, a kontrolowanie jest
funkcj ostatni , weryfikuj c rzeczywisto z pierwotnymi zamierzeniami
i oczekiwaniami.
c.
Zarz dzanie przez obchód
Zało eniem tej prostej, ale bardzo skutecznej techniki zarz dzania jest codzienny
kontakt ze wszystkimi pracownikami w celu okazania im swojego szczerego
zainteresowania tym co i jak robi . Stosowanie techniki zarz dzania przez obchód
wymagana jest nawet kilkakrotnych, ale krótkich obecno ci kierownika w ród
podwładnych. Obecno ta wyra a si w formie najlepiej nieregularnych, ale
codziennych obchodów stanowisk pracy w czasie, których istnieje mo liwo :
• Osobistego przywitania si i rozmowy z pracownikami (nawet w sprawach
rodzinnych), w celu ich lepszego poznania,
• Dokonanie obserwacji i rejestracji zarówno pozytywów, jak i negatywów
w przebiegu pracy,
• Wyra enia natychmiastowej pochwały i uznania za dobr prac , tam, gdzie
to jest uzasadnione,
• Wydania stosownych dyspozycji w celu usuni cia ewentualnych
nieprawidłowo ci,
• Zach cenia do lepszej pracy i dodania otuchy.
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
d.
Zarz dzanie przez inwigilacj
Inwigilacja polega na dyskretnej, ale systematycznej obserwacji pracy podwładnych
lub maszyny po to, aby tok zdarze przebiegał zgodnie z zamierzeniami
kierownika. Inwigilacji winna towarzyszy minimalizacja interwencji kierownika –
przybiera ona wówczas posta tzw. Inwigilacji czystej. Wyra a si ona w tym
przypadku jedynie pilnowaniem i zabezpieczaniem samoczynnie przebiegaj cego
procesu, ewentualnie wprowadzaniem (ale w ostateczno ci) poprawek, ilekro
procesy pracy przebiegaj nie tak, jak nale y. Wynika z tego, e kierownik
pozostaje w ci głej gotowo ci do interwencji, je li zajdzie taka potrzeba.
e.
Zarz dzanie przez kontrol strategiczn
Celem kontroli strategicznej jest zapewnienie skutecznego dostosowania firmy do
otoczenia i jej działania w kierunku realizacji celów strategicznych. Za kluczowe
obszary kontroli uwa a si istotne czynniki ograniczaj ce lub punkty newralgiczne
decyduj ce o przetrwaniu i dalszym rozwoju firmy.
f.
Zarz dzanie przez controlling
Controlling jest to kompleksowy i ponadfunkcyjny system sterowania
i nadzorowania przedsi biorstwem, wspieraj cy dyrekcj i kierowników ni szych
szczebli przy podejmowaniu decyzji. Controlling musi obejmowa całe
przedsi biorstwo w system kompleksowego planowania zada rzeczowych,
finansowych i kosztów oraz sterowania jego działalno ci i dostarczania
niezb dnych informacji, a tak e nadzorowania i rozliczania centrów gospodarczych
z realizacji uzgodnionych zada . Jego zadaniem dodatkowym jest wspieranie
naczelnego kierownictwa nowymi wersjami strategii rozwoju przedsi biorstwa,
uwzgl dniaj cymi przy tym nie tylko ju zaobserwowane, ale tak e spodziewane
zmiany w otoczeniu.
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
XI. STATYSTYCZNA ANALIZA WYDOLNO CI PROCESU
Decyzja o podj ciu produkcji wyrobu b d o rozpocz ciu wiadczenia dowolnej usługi
powinna by poprzedzona analiz wydolno ci procesu, a istot analizy jest badanie
zgodno ci mi dzy wymaganiami wynikaj cymi z projektu produktu a mo liwo ciami
procesu technologicznego, w którym ten produkt (wyrób lub usługa) ma by wytwarzany.
Podstaw oceny owej zgodno ci jest oczekiwany poziom jako ci wykonania. Je li mo na
oczekiwa wysokiej jako ci wykonania, a wi c je li proces ma zdolno do odtwarzania
projektu w praktycznie ka dym akcie produkcji, albo praktycznie ka dym akcie
wiadczenia usługi, to proces taki jest oceniany jako wydolny. I odwrotnie, proces jest
oceniany jako niewydolny, je li przeprowadzona analiza nie pozwala oczekiwa wysokiej
jako ci wykonania produktu. Celem statystycznej analizy wydolno ci procesu jest zawsze
rozstrzygni cie, czy konkretnym przypadku spełniona jest nierówno :
0
)
;
(
Q
Z
A
Q
≥
w której
)
;
( Z
A
Q
oznacz poziom jako ci wykonania, jakiego mo na oczekiwa realizuj c
projekt produktu A w procesie technologicznym Z, natomiast
0
Q
jest najni szym,
mo liwym do zaakceptowania poziomem jako ci konkretnego produktu. Je li wi c proces
nie ma dostatecznej wydolno ci, to konieczne s zmiany w projekcie, modyfikacje
procesu technologicznego albo działania zmierzaj ce w obu tych kierunkach
jednocze nie. Je li działania te nie prowadz do celu, to pozostaj poszukiwania innego,
mniej wymagaj cego odbiorcy produktu lub rezygnacja z jego wytwarzania.
Ogólna nierówno
0
)
;
(
Q
Z
A
Q
≥
nie wystarcza do rozwi zywania praktycznych
problemów w zakresie badania wydolno ci procesów. W takiej sytuacji nale y posłu y
si odpowiedni miar jako ci wykonania. Nale y tu wymieni przede wszystkim:
• Wadliwo ,
• Przeci tn liczb wad w jednostce produktu.
Dodatkowo z ka d z tych miar mo na wykorzysta dwojako. Mo na mianowicie ocenia
jako wykonania albo ze wzgl du na pojedyncz cech u ytkow lub techniczn , albo ze
wzgl du na pewien zbiór tych cech.
Je li zgodno mi dzy wymaganiami projektu i mo liwo ciami procesu jest oceniana na
podstawie oczekiwanej cz stkowej wadliwo ci strumienia produktu, to ogólna
nierówno
0
)
;
(
Q
Z
A
Q
≥
zast pujemy warunkiem:
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
)
(
)
(
0
X
p
X
P
≤
gdzie
)
(
0
X
p
jest najwi ksz dopuszczaln wadliwo ci produktu generowanego przez
badany proces ze wzgl du na zmienn diagnostyczn X.
Wyró niamy dwie mo liwo ci badania wydolno ci procesu:
1. Badanie wydolno ci procesu przy alternatywnej ocenie
wła ciwo ci produktu.
W tym przypadku liczbowym obrazem badanej cechy jest zero - jedynkowa zmienna
losowa X, o realizacjach (x) generowanych według procedury:
=
,
1
,
0
X
Miar poziomu jako ci jest w takiej sytuacji wadliwo
)
(X
p
, interpretowana jako
prawdopodobie stwo wygenerowania wadliwej jednostki produktu. Z tego wynika, e
wadliwo ci
)
(X
p
zale y od tego, w jaki sposób zostanie okre lona reguła, według której
rozstrzyga si , czy badana jednostka produktu spełnia wymagania jako ciowe, czy te nie
pełnia. Je li reguła ta zostanie okre lona bardzo liberalnie, to nawet bardzo lichy produkt
mo na uzna za dobry. I odwrotnie, je li owa reguła zostanie okre lona bardzo
rygorystycznie, to nawet najlepszy produkt mo na zdyskwalifikowa .
2. Badanie wydolno ci procesu przy liczbowej ocenie
wła ciwo ci produktu.
W tej sytuacji załó my, e liczbowym obrazem pojedynczej (u ytkowej lub technicznej)
cechy produktu jest ci gła zmienna losowa X, któr traktujemy jako zmienn
diagnostyczn na podzbiór warto ci po danych
0
X
, w którym wyró niamy warto
docelow (najbardziej po dan , nominaln ) oznaczan symbolem
0
x
. Przedział
tolerancji
0
X
mo e by ograniczony obustronnie albo jednostronnie. W przypadku, gdy
zmienna ta ma rozkład normalny
)
;
(
σ
M
N
X
≈
, gdzie odchylenie standardowe
σ
jest
miar precyzji procesu, M. natomiast jest zbiorem mo liwych do uzyskania warto ci.
Mo na zało y , e precyzja procesu jest ustalona, natomiast na poprawno procesu
w pewnych granicach oddziałuje si poprzez wybór odpowiednich parametrów procesu.
W wietle przedstawionych powy ej zale no ci mi dzy projektem i procesem
technologicznym zachodzi zgodno , gdy:
gdy jednostka produktu spełnia wymagania jako ciowe
gdy jednostka produktu nie spełnia wymagania jako ciowych
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
)
(
)
(
)
Pr(
0
0
X
p
X
p
X
x
≤
=
∉
albo
)
(
1
)
(
1
)
Pr(
0
0
X
p
X
p
X
x
−
≥
−
=
∈
.
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
XII. STEROWANIA
PROCESAMI
ZA
POMOC
KART
KONTROLNYCH
Statystyczna analiza wydolno ci procesu zamyka etap sterowania jako ci w trybie off-
line. Je li wynik tej analizy jest pozytywny, to mo na uruchomi proces produkcji albo
proces wiadczenia usługi. Przyst puje si jednocze nie do monitorowania przebiegu
uruchomionego procesu, a tak e do sterowania operacyjnego w trybie on-line.
Wykorzystuje si do tego celu metody i narz dzia SPC (statistical process control):
1.
Diagram przebiegu procesu
Diagram przebiegu procesu obrazuje powi zania mi dzy operacjami technologicznymi.
Jest on wykorzystywany przede wszystkim podczas projektowania systemu sterowania
jako ci . Pozwala on racjonalnie zlokalizowa punkty monitorowani procesu. Przy
lokalizowaniu tych punktów nale y bra pod uwag tempo przyrostu jednostkowego
kosztu produktu, a tak e intensywno powstawania wad, zwłaszcza nienaprawialnych.
2.
Karta kontrolna
Karty kontrolne s instalowane w blokach analizuj cych systemy sterowania jako ci
i słu do analizy strumieni informacji numerycznych generowanych przez bloki
pomiarowe tych systemów. Ze wzgl du na to, e ka dy proces technologiczny jest
A
B
1
B
2
C
1
C
2
D
X(t)
t
Górna lina kontrolna
Lina centralna
Dolna lina kontrolna
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
zjawiskiem dynamicznym, nie całkiem zdeterminowanym przez zadane parametry, przeto
karty kontrolne konstruowane s na podstawie aparatu formalnego statystyki
matematycznej. Najcz ciej s to albo odpowiednio zorganizowane sekwencje
klasycznych testów istotno ci (karty kontrolne typu Shewharta), albo procedury
wykorzystuj ce testy sekwencyjne (karty kontrolne sum skumulowanych). W przypadku
wykrycia systematycznego zakłócenia obserwowanego procesu karta kontrolna emituje
odpowiedni sygnał, który uruchamia ci g skoordynowanych działa nazywanych cyklem
Shewharta, zmierzaj cych do wykrycia i wyeliminowania przyczyny tego zakłócenia.
3.
Arkusz analityczny
Kontrola dostaw
Rodzaj wady
A
B
C
D
E
F
Ogólna
ilo wad
Ilo wad
1
15
2
0
8
1
2
2
2
12
0
1
6
0
3
2
3
14
1
0
7
2
2
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Arkusz analityczny słu y do wykrycia, wyeliminowania przyczyn zakłóce .
4.
Diagram Ishikawy
przyczyny
przyczyny
skutek
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
Diagram Ishikowy słu y równie do realizacji wykrycia, wyeliminowania przyczyn
zakłócenia.
5.
Diagram Pareto
Diagramy Pareto słu do badania cz sto ci wyst powania wad produktu lub procesu.
Pozwalaj one identyfikowa te problemy, które powinny by rozwi zywane w pierwszej
kolejno ci. Ten sam cel mo na osi gn za pomoc diagramu Lorenza.
6.
Histogram
Histogram jest prostym i wygodnym narz dziem badania rozkładu obserwowanej
zmiennej diagnostycznej. Ma to znaczenie szczególnie podczas badania wydolno ci
x
f(x)
Przedział tolerancji
x
n(x)
Rodzaje wady
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
procesu technologicznego, a tak e podczas poszukiwania przyczyn zakłóce tego
procesu.
7.
Punktowy diagram korelacji
Punktowy diagram korelacji jest bardzo prostym, graficznym narz dziem badania
współzale no ci mi dzy obserwowanymi zmiennymi diagnostycznymi. Podobnie jak w
przypadku histogramu, jest to tylko pocz tkowy etap pogł bionej analizy problemu za
pomoc narz dzi i metod, jakich dostarcza teoria regresji i korelacji.
Podstawow rol w tych działaniach odgrywaj karty kontrolne. S to podstawowe
i najwcze niejsze historycznie narz dzia statystycznego sterowania procesami. Pomysł
karty kontrolnej zawdzi czamy Shewhartowi, a pierwsze praktyczne zastosowania tego
pomysłu nast piło w 1924 roku. W owym czasie rodki obliczeniowe, jakimi dysponował
przemysł, były nader skromne i ograniczały si do liczydła, suwaka logarytmicznego
i arytmometru mechanicznego. Dlatego te zaproponowana przez Shewharta metoda
monitowania i regulacji pomy lana była jako procedura graficzna, w której główn rol
odgrywa odpowiednio zorganizowany diagram przegl dowy, minimalizuj cy liczb
niezb dnych operacji numerycznych, numerycznych jednocze nie pozwalaj cy
obserwowa w sposób usystematyzowany przebieg kontrolowanego procesu. Ta ogólna
idea karty kontrolnej pozostała niezmieniona do chwili obecnej. Decyzje podejmowane
przy u yciu karty kontrolnej oparte s na analizie informacji dostarczanej przez próbki
losowe pobierane ze strumienia produktu.
y
x
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
XIII. WST P DO PROGRAMOWANIA W J ZYKU C/C++
8.
WPROWADZENIE.
Nazwa j zyka C wywodzi si od j zyka o d wi cznej nazwie B, który został opracowany
w 1970 roku przez Kena Thompsona dla minikomputerów PDP. Poniewa j zyk
B zawiera pewne istotne ograniczenia, w roku1972 Dennis Ritchie i Ken Thompson
stworzyli j zyk C. Jednak nie od razu stał on si popularny przez pierwsze sze lat
stosowała go jedynie w ska grupa programistów. Dla C i C++ nadszedł historyczny
przełom w roku 1978, gdy Brian Kernighan i Dennis Ritchie napisali i opublikowali
ksi k „The C programming language”, która została wydana równie przez
wydawnictwo polskie WNT w 1987 roku pod tytułem: „J zyk C”. Pierwotnie j zyk
C został zaimplementowany na komputerach 8-bitowych pracuj cych pod systemem
operacyjnym CP/M. Kiedy w roku 1981 pojawił si IBM PC i rozpocz ła si
komputerowa rewolucja, j zyka C stał si jednym z najlepszych kandydatów do
zawładni cia spor cz ci rynku. Liczba komputerów PC i u ytkowników C szybko
wzrastała. Dzi ki popularno ci i wysokiemu zainteresowaniu C wiele firm rozpocz ło
prac nad stworzeniem kompilatorów j zyka C – ka da z nich rozpocz ła tworzenie
własnej wersji i ka da z nich rozpocz ła prac w zupełnie innym kierunku.
Rewolucja komputerowa i kariera j zyka została zagro ona powstaniem wielu
niekompatybilnych wersji kompilatorów. Z tego powodu w Ameryka skim Narodowym
Instytucie Standardów (ANSI) został utworzony specjalny komitet X3J11 maj cy za
zadanie utworzenie standardowej wersji j zyka C – co przyczyniło si do uratowanie jej
kariery. Nale y jednak zauwa y , e ANSI był zainteresowany w stworzeniu jednego
uniwersalnego standardu, maj cego zastosowanie dla wszystkich komputerów – nie tylko
dla PC. Mimo takich intencji, w opracowanym przez ANSI standardzie pojawiło si wiele
rzeczy maj cych odniesienie do specyficznej architektury IBM PC, nie maj cych
natomiast odniesienia do np. du ych komputerów klasy MAINFRAME. W miar rozwoju
standardów ANSI C wi kszo implementacji zbli a si do wspólnego standardu,
w miar jak proces standaryzacji post puje coraz gł biej, ale nie obejmuje on np. grafiki
ekranowej, pozostaje to wi c obszarem, na którym pomi dzy poszczególnymi wersjami
kompilatorów wyst puj znaczne rozbie no ci.
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
Rosn ca popularno j zyka C spowodowała powstanie ogromnej liczby programów
napisanych w tym wła nie j zyku. W miar , jak długo programów zacz ła wyra nie
wzrasta , wiele osób doszło do wniosku, e standardowe konstrukcje programów nie
nad aj za potrzebami i staj si coraz bardziej nieefektywne. Jedynym dost pnym
wyj ciem było zastosowanie funkcji w celu uzyskania programu podzielonego na
moduły. Przy rosn cej liczbie funkcji, które to funkcje musiały cz sto odwoływa si do
wspólnych danych i wywoływa si nawzajem, coraz trudniej było programistom
zapanowa nad t skomplikowan kombinacj . W roku 1983 Bjarne Stroustrup opracował
j zyk C++, który jest w zasadzie bardzo podobny do C, ma jednak kilka bardzo istotnych
dodatkowych mo liwo ci. Najwa niejszym nowym wprowadzeniem stały si obiekty.
Obiekt jest to co takiego, co mo na by okre li , jako nowy rodzaj struktur – z jedn
istotn ró nic : je li programista za yczy sobie tego, zarówno dane, jak i funkcje mog
w obiekcie uzyska status prywatny. Jak ju wspomniałem wcze nie, przewaga
obiektowego stylu programowania polega na mo liwo ci uzyskania skuteczniejszego
podziału programu na moduły czyli na pewne jednostki funkcjonalne o zrozumiałym
przeznaczeniu i prostych zasadach współdziałania z innymi elementami programu.
Chocia głównym celem przy opracowaniu j zyka C++ było umo liwienie skutecznego
podziału na moduły programów pisanych w j zyku C, to, nawet je li program jest krótki,
C++ te na co do zaoferowania. W krótkich programach operatorom j zyka C mo emy
w C++ nada nowe wybrane przez siebie działanie. W C++ mo na równie robi
niewyobra alne w innym j zykach sztuczki z funkcjami. Dla przykładu, wykorzystuj c
mo liwo rozbudowy funkcji mo emy np. zmusi istniej c ju w starym programie
napisanym w C funkcj , by dała si wywoła z argumentami ró nych typów.
W klasycznym C byłby to oczywisty bł d, w C++ natomiast, w zale no ci od wybranego
przez nas typu argumentów, zostanie wybrana stosowna wersja funkcji i wszystko
wykona si poprawnie. W miar upływu czasu instytut ANSI wprowadzał kolejne, coraz
bardziej rozbudowane wersje standardu ANSI C. Np. standard wprowadzony w 1990
roku 28-go lutego o nazwie ANSI C2.1. I na tym ko cz krótk histori C/C++
nast pnym krokiem b dzie krótki opis powy szego j zyka.
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
9.
OPERATORY.
J zyk C/C++ w porównaniu z innymi j zykami oferuje programi cie znaczn liczb
operatorów ró nego rodzaju. Ró norodno ta umo liwia bardzo efektywny zapis wielu
operacji. Wyra enie jest ci giem operatorów i znaków przestankowych okre laj cych
sposób wykonania danego obliczenia. Kluczow rol w konstrukcji wyra enia pełni
operatory. To one okre laj , co, w jaki sposób i w jakiej kolejno ci zostanie obliczone
wyra enie.
Operatory mo na podzieli na nast puj ce grupy:
♦ operatory arytmetyczne:
• addytywne
Do operatorów addytywnych zaliczamy dodawanie (+) i odejmowanie (-) a operandami
s wyra enia tego samego typu arytmetycznego lub wska nikami tego samego typu.
• multiplikatywne
Do operatorów multiplikatywnych zaliczamy mno enie (*), dzielenie (/) i reszta
z dzielenia (%) a operandami dz standardowe prawa arytmetyki ponadto w przypadku
reszty z dzielenia operandy s typami całkowitymi.
• operatory inkrementacji (++) i dekrementacji (--)
Powy sze operatory zaliczane s do operatorów jedno argumentowych operacja
zwi kszenia (inkrementacja) lub zmniejszania (dekrementacja) o jeden jest wykonywana
przez wi kszo procesorów w jednym rozkazie. Ponadto mog one wyst powa przed
(operator przedrostkowy) lub po (operator przyrostkowy) operandzie.
♦ operatory logiczne
Warto logiczna prawda jest reprezentowana jako liczba całkowita ró na od zera, za
fałsz jako zero typu całkowitego. Umo liwiaj one nast puj ce operacja na warto ciach
logicznych: koniunkcja (&&), alternatywa (||), negacja (!),
♦ operatory bitowe
Za pomoc operatorów bitowych mo na realizowa funkcje logiczne :
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
OR – alternatywa (|)
AND – iloczyn (&)
EXOR – suma modulo 2 (^)
NOT – negacja (~)
Stosowane operandy musz by typu całkowitego,
♦ operatory relacyjne
Operatory relacyjne pozwalaj stwierdzi , czy mi dzy operandami zachodzi dana relacja,
do powy szych operatorów zaliczamy: wi ksze ni (>), mniejsze ni (<), mniejsze równe
(<=), wi ksze równe (>=), równe (==), ró ne od (!=),
♦ operatory przypisania,
Operatory przypisania daj mo liwo zwi złego zapisu wyra e . Mo na podzieli je na
dwie grupy: prosty operator przypisania (=) operandowi przedrostkowemu zostaje
przypisana warto operandu przyrostowego, zło one operatory przypisania (+=, -=, *=,
/=, <<=, >>=, &=, ^=, |=) maj one ogóln posta operator= a zasada działania
przedstawi na przykładzie:
Wyra enie_1 = Wyra enie_1 operator Wyra enie_2;
co mo emy zast pi wykorzystuj c operator przypisania:
Wyra enie_1 operator= Wyra enie_2
♦ operator warunkowy
Wyra enie z operatora warunkowego wygl da nast puj co:
Wyra enie_1 ? Wyra enie_2 : Wyra enie_3;
w pierwszej kolejno ci obliczana jest warto Wyra enia_1 je li jest ona niezerowa
(prawda), obliczana jest warto Wyra enia_2, natomiast Wyra enie_3 jest ignorowane,
w przeciwnym razie (Wyra enie_1 jest równe zero – fałsz) obliczana jest warto
Wyra enia_3
, natomiast Wyra enie_2 pomijamy,
♦ operatory wyboru składniowych
Tych operatorów u ywa si celem wyboru składowej struktury, unii lub klasy. Operator
(.) umo liwia odwołanie do składowej okre lonej przez operand, operator (->) za
odwołanie do składowej wskazywanej przez operand,
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
♦ operator pobrania adresu zmiennej (&) oraz dost pu do zmiennej wskazywanej (*)
W przypadku wyra enia pobrania adresu warto wyra enia stanowi adres operandu a w
przypadku zmiennej wskazywanej warto wyra enia jest zmienna wskazywana przez
operand, za jego typ jest zgodny z typem wskazywanym operandu,
♦ operator pobrania rozmiaru(sizeof)
Operator mo e by u ywany w dwóch poni szych sposobach:
sizeof
(identyfikator_typu) – warto ci wyra enia jest rozmiar w bajtach typu okre lonego
przez podany identyfikator,
sizeof operand
– warto ci wyra enia jest rozmiar pami ci zajmowany przez operand,
♦ operatory dynamicznego przydziału pami ci
Operator przydziału pami ci new tworzy obiekt danego typu przydzielaj c sizeof
dany_typ
w obszarze stosu w zmiennych dynamicznych, operator zwalniania pami ci
delete
usuwa obiekt wskazywany przez wska nik,
♦ operatory indeksowania ([]) i wywołania funkcji(),
♦ operator konwersji
Operator konwersji ma posta : (typ)operand – warto ci wyra enia jest warto operandu
po konwersji do typu o podanej nazwie.
10.
INSTRUKCJE
Jednym z najwa niejszych elementów ka dego j zyka programowania s instrukcje.
Umo liwiaj one zapis algorytmu, a co za tym idzie – słu do sterowania przebiegiem
programu. W j zyku C++ ich lista jest do krótka, co nie oznacza bynajmniej ubóstwa.
Instrukcje te dzi ki swej efektywno ci w poł czeniu z ró norodno ci typów danych
i operatorów umo liwiaj tworzenie nawet najbardziej zaawansowanego
oprogramowania. Instrukcje mo na podzieli na:
♦ instrukcje warunkowe
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
W zapisie algorytmów cz stym problemem jest sprawdzenie, czy zachodzi dana
zale no i w zale no ci od tego wykonanie takich czy innych czynno ci. Sprawdzenie
warunków i przej cie do wykonania odpowiednich operacji umo liwiaj tzw. instrukcje
warunkowe. Do tej grupy instrukcji zaliczamy instrukcj „je eli” (if) oraz instrukcj
„wyboru” (switch).
Ogólna posta instrukcji warunkowej „je eli” przedstawia si nast puj co:
if(wyra enie_warunkowe) instuckcja_1 [else instukcja_2];
Wyra enie_warunkowe
musi by typu skalarnego. Je li warto wyra enia_warunkowego
jest ró na od zera (prawda), wówczas wykonywana jest insturkcja_1, w przeciwnym razie
(fałsz) – instukcja_2.
Instrukcja wyboru ma nast puj c posta ogóln :
switch( wyra enie_steruj ce)
{
case wyra enie_stałe_typu_całkowitego: instrukcje
...
case wyra enie_stałe_typu_całkowitego: instrukcje
default: instukcje
}
Na podstawie warto ci wyra enia steruj cego pozwala ona przenie wykonywanie
programu do wskazanego miejsca. Wyra enie_steruj ce musi by typu całkowitego, za
instrukcje s dowoln instrukcj j zyka C/C++. Wykonanie instrukcji wyboru polega na
obliczeniu warto ci wyra enia steruj cego i kontynuowaniu wykonywania programu
pocz wszy od etykiety wyboru, której wyra enie stałe ma warto równ obliczonej
wcze niej warto ci wyra enia steruj cego. Je li adne z wyra e stałych nie spełnia tej
równo ci, wówczas wykonywany jest skok do miejsca okre lonego domy ln (default)
etykiet wyboru lub je li jej nie ma – wykonywanie instrukcji wyboru ulega zako czeniu.
♦ Instrukcje iteracyjne
Instrukcje iteracyjne umo liwiaj wielokrotne wykonywanie pewnych sekwencji
instrukcji, czyli p tli, jak wiadomo, s podstaw programowania. Wyró niamy
nast puj ce instrukcje iteracyjne:
• Instrukcja „dla” (for)
Jej ogólna posta przedstawia si nast puj co:
for(wyra enie_inicjuj ce ; wyra enie_warunkowe ; wyra enie_zwi kszaj ce) instrukcja;
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
Wykonywanie p tli polega na obliczeniu wyra enia_inicjuj cego, co najcz ciej
powoduje zainicjowanie licznika p tli, nast pnie obliczane jest wyra enie_warunkowe,
je li jest ono niezerowe (prawda) wykonywana jest instrukcja zwi zana z instrukcj for.
Obliczane jest wyra enie_zwi kszaj ce, co powoduje zwykle zwi kszenie lub
zmniejszenie liczników p tli i ponownie obliczane jest wyra enie_warunkowe, je li jego
warto jest ró na od zera wykonywana jest ponownie instrukcja.
• Instrukcja „dopóki”(while)
Ogólna posta instrukcji „dopóki”:
While(wyra enie_warunkowe) instrukcja;
Instrukcja jest wykonywana do momentu, kiedy wyra enie_warunkowe osi gnie warto
0 (fałsz).
• Instrukcja „wykonuj dopóki” (do...while)
Ogólna posta instrukcji „wykonuj dopóki” przedstawia si nast puj co:
do instrukcja while(wyra enie_warunkowe);
Instrukcj do ... while mo na przetłumaczy jako: wykonuj instrukcj dopóki warto
wyra enia wyra enia_warunkowego oznacza prawd . Instrukcj t stosujemy zamiast
instrukcji while wówczas, gdy zale y nam, aby wykonana została przynajmniej jedna
iteracja.
♦ Instrukcje steruj ce przebiegiem programu
Umo liwiaj one opuszczenie p tli, przeniesienie wykonywania programu, zako czenie
wykonywania. Wspomniane tu instrukcje to:
• Instrukcja „przerwij” (break)
Składni instrukcji „przerwij” przedstawiam poni ej:
break;
Powoduje ona opuszczenie aktualnego poziomu p tli lub instrukcji wyboru.
• Instrukcja „kontynuuj” (continue)
Składnia instrukcji „kontynuuj” wygl da nast puj co:
continue;
Omawiana instrukcja mo e by u ywana tylko wewn trz instrukcji iteracyjnych. Jej
u ycie powoduje w przypadku p tli while – przeniesienie sterowania z wn trza p tli do
wyra enia warunkowego, które zostaje obliczone. W zale no ci od uzyskanego wyniku
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
wykonywanie p tli jest kontynuowane lub ulega zako czeniu. W przypadku p tli for –
przeniesienie sterowania do wyra enia zwi kszaj cego licznik p tli.
• Instrukcja „skoku” (goto)
Umo liwia przekazanie sterowania do okre lonego miejsca aktualnie wykonywanej
funkcji programu. Instrukcja skoku ma posta :
goto etykieta;
etykieta okre la miejsce w programie, do którego ma nast pi skok.
11.
FUNKCJE.
W pierwszej kolejno ci zwróc uwag na rozró nienie poj deklaracja i definicja.
Deklaracja funkcji, w odró nieniu od definicji, jest poj ciem logicznym, gdy stanowi
tylko informacj dla kompilatora, e funkcja o okre lonej nazwie, typie warto ci
i parametrów mo e zosta u yta gdzie w danym module programu. Definicja funkcji
okre la natomiast, co funkcja wła ciwie robi. Stanowi wi c ona zapis jakiego algorytmu
lub jego cz ci. Definicja funkcji powoduje, w odró nieniu od deklaracji, przydzielenie
obszaru pami ci, w którym znajdzie si kod wynikowy funkcji.
Wywołanie funkcji ma posta :
Nazwa_funkcji(Lista_paramtrów_wywołania);
Na list parametrów wywołania składaj si oddzielone przecinkami wyra enia typu
zgodnego z typem parametru funkcji.
J zyk C++ wprowadza kilka dodatkowych mo liwo ci w zakresie deklarowani,
definiowania i wykorzystania funkcji:
Funkcje przeci one zaliczamy co nich funkcje o tej samej nazwie, lecz ró ni cych si
parametrami i ewentualnie typem warto ci. Dwie funkcje przeci one nie mog ró ni si
wył cznie typem zwracanej warto ci. O tym, która z funkcji przeci onych zostanie
wywołana, decyduj parametry wywołania – ich typy i liczba.
Domy lne warto ci parametrów funkcji, które podajemy w deklaracji pozwala wywoła
funkcj z domy lnymi parametrami.
Funkcja mo e otrzymywa lub samodzielnie pobiera dane z otocznia, przetwarza je,
a nast pnie zwraca rezultaty przeprowadzonych działa . Przekazywanie parametrów
i zwracanie warto s wi c ze sob blisko zwi zane. Parametry mog by przekazywane
do funkcji na trzy sposoby:
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
♦ Przez warto
Przez dłu szy czas jedynym sposobem przekazywania parametrów funkcji było tzw.
przekazywanie przez warto . W wyniku przekazywania przez warto funkcja otrzymuje
kopi zmiennej na stosie procesora lub w jego rejestrze. Przekazany parametr jest
traktowany tak samo, jak wszystkie zmienne automatyczne zadeklarowane w ciele
definicji funkcji, tj. istnieje tylko podczas jej wykonywania,
♦ Przez wska nik
Przekazywanie argumentów funkcji przez wska nik jest wła ciwie tylko odmian
przekazywania przez warto – funkcja otrzymuje po prostu kopi wska nika. Nale y
zwróci bowiem uwag na fakt, e wska nik przekazany do funkcji mo e identyfikowa
zmienn nale c do innej funkcji. Przypisanie warto ci zmiennej wskazywanej przez
parametr wska nikowy pozwala wi c zmienia warto zmiennych utworzonych
w innych funkcjach programu. Przekazywanie parametrów przez wska nik jest
zasadniczo wykorzystywane w przekazywaniu struktur danych o du ych rozmiarach,
takich jak tablice czy ła cuchy lub umo liwienia zwrócenia wi cej ni jednej warto ci,
♦ Przez referencj
W j zyku C++ istnieje typ referencyjny, który umo liwia deklarowanie zmiennych
reprezentuj cych inne zmienne. Najszerzej zmienne referencyjne s wykorzystywane
przy przekazywaniu parametrów do i z funkcji. Tzw. przekazywanie parametrów przez
referencj jest odpowiednikiem przekazywania parametrów przez zmienn
(wykorzystywan w j zyku Turbo Pascal), cho mo e nie dokładnym, ale za to daj cym
znaczenie wi ksze mo liwo ci. Operacje s wi c przeprowadzane albo bezpo rednio na
zmiennej, której referencj przekazano do funkcji, albo na zmiennej tymczasowej, co ma
miejsce w przypadku niezgodno ci typu referencyjnego, i zmiennej, do której referencja
jest tworzona,
♦ Zwracanie warto ci
Do zwracania warto ci wykorzystujemy instrukcj return. Powoduje ona zako czenie
wykonywania funkcji i zwrócenie warto ci. Wykonywanie funkcji typu void mo e, lecz
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
nie musi ko czy si instrukcj return z parametrem okre laj cym warto funkcji,
w przeciwnym razie warto ta pozostaje nie okre lona.
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
12.
BUDOWA PROGAMU
Program napisany w j zyku C++ składa si w ogólnym przypadku z dyrektyw
preprocesora, komentarzy, deklaracji i instrukcji. Dyrektywy zajmuj pełne wiersze
i zaczynaj si od znaku # (hash). Komentarze natomiast mog by dwóch rodzajów:
o postaci: /*tekst*/ w której tekst jest dowolnym, by mo e wielowierszowym napisem
nie zawieraj cym dwu znaku */, albo jest napisem o postaci //tekst w której niejawnym
ko cem komentarza jest koniec wiersza.
Najcz ciej u ywan dyrektyw preprocesora jest #include, zazwyczaj wyst puj ca
w postaci: #include <name> w której name jest nazw pliku. Zinterpretowanie tej
dyrektywy powoduje wł czenie w miejscu jej wyst pienia, całej zawarto ci pliku name.
Plik name jest nazywany nagłówkowym i zawiera zazwyczaj deklaracje funkcji
standardowych u ytych w programie.
Ka dy program musi zawiera deklaracj funkcji o nazwie main. Jest to funkcja, od której
zaczyna si wykonywanie programu. Funkcja main jest najcz ciej bezparametrowa.
W programie jednostkami leksykalnymi s słowa kluczowe, identyfikatory, literały
i ograniczniki. Ogranicznikami s operatory (np.+, -, *). Podział programu na jednostki
leksykalne odbywa si w naturalnym porz dku, to jest od lewej do prawej i od góry do
dołu. Słowa kluczowe s to słowa wybrane z ustalonego repertuaru i pełni ce w j zyku
specjalne funkcje, takie jak np. słowo void w li cie parametrów funkcji main. Słowa te s
zastrze one i nie mog by u ywane do oznaczania takich obiektów programu, jak
zmienne, funkcje i typy. Literałem jest napis reprezentuj cy dan , z którego zapisu
i w ramach przyj tej interpretacji, wynikaj wszystkie atrybuty danej, w tym jej warto
i typ. W j zyku C++ literałami s liczby (np. 12, 23.7), znaki (np. ‘*’) i ła cuchy (np. „to
jest ła cuch”).
13.
KLASY I OBIEKTY
Dane definiuj ce przedmiot i metody okre laj ce jego wła ciwo ci umieszczamy we
wspólnym miejscu – klasie. W ten sposób nast puje integracja danych i metod
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
uprawnionych do ich wykorzystania. Nazwa programowanie obiektowe zwraca uwag na
fakt, e dane funkcje z nich korzystaj ce słu temu samemu celowi – definiowaniu
przedmiotów i okre laniu ich wła ciwo ci. To wła nie przedmioty – obiekty staj si
głównym przedmiotem zainteresowania wielu programistów i jednocze nie
podstawowym elementem konstrukcji programu. C/C++ nie jest j zykiem ci le
obiektowym, gdy pozwala równie na programowanie proceduralne. Takie poł czenie
nale y uzna za zalet , gdy nieprawd jest, i wszystkie problemy najwygodniej jest
rozwi zywa obiektowo. W wielu przypadkach wygodnie jest zdefiniowa kilka klas
definiuj cych cz sto spotykanych poj , natomiast cały program mo na napisa
proceduralne wykorzystuj c tak zdefiniowane klasy. Podstawowym poj ciem j zyka
C/C++ jest klasa. Z ka d klas jest zwi zany zbiór danych okre lonych przez jej pola
oraz zbiór operacji okre lony przez jej funkcje składowe. Pola i funkcje składowe mog
by publiczne, prywatne i zabezpieczone. Je li klasa nie zawiera funkcji składowych,
a wszystkie jej pola s publiczne, to jest po prostu struktur . Identyfikatory komponentów
prywatnych s dost pne jedynie w obr bie funkcji składowych klas oraz w obr bie
funkcji zaprzyja nionych z klas . Identyfikatory komponentów publicznych s dost pne
wsz dzie. Identyfikatory komponentów zabezpieczonych s traktowane tak jakby były
prywatne, ale ponadto s dost pne tak e w obr bie funkcji składowych
i zaprzyja nionych z klas pochodn danej klasy bazowej. Deklaracja funkcji
zaprzyja nionej z klas mo e wyst pi w dowolnym miejscu w obr bie deklaracji klasy,
ale musi by poprzedzona słowem kluczowym friend. Wymienione powy ej elementy
rozmieszcza si w sekcjach definicji klasy, co ilustruje poni szy schemat:
Class Klasa
{
public:
... (funkcje i dane składowe publiczne)
protected:
... (funkcje i dane składowe zabezpieczone)
private:
... (funkcje i dane składowe prywaten)
};
Deklarowaniu obiektów mo e towarzyszy ich inicjowanie. Inicjator obiektu składa si
z listy argumentów inicjacji uj tych w nawiasy okr głe, albo z wyra enia nast puj cego
po znak „=”. Sposób inicjowania poszczególnych pól obiektu jest okre lony przez funkcje
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
nazywan konstruktorem. Funkcja ta musi by publiczn składow obiektu i mo na j
rozpozna po tym, e jej nazwa jest identyczna z nazw klasy. Najcz ciej funkcja ta jest
przeci ona. Umo liwia to stosowanie do obiektów danej klasy inicjatorów o ró nej
liczbie i ró nych typach argumentów. Ponadto deklaracja konstruktora nie mo e zawiera
specyfikatora typu, a definicja konstruktora nie mo e zawiera instrukcji return. Inicjator
zapisany po znaku „=” maj cy posta nazwy zmiennej obiektowej tej samej klasy co
inicjowany obiekt, stanowi argument konstruktora. Je li taki konstruktor nie zostanie
zadeklarowany jawnie, to domniemywa si konstruktor kopiuj cy. Je li klasa zawiera
jawnie zadeklarowany konstruktor, to ka da deklaracja obiektu tej klasy musi zawiera
inicjator. Je li nie wyst puje on jawnie, to podczas opracowywania deklaracji obiektu jest
wywoływany konstruktor nazywany bezparametrowym.
Podobnie jak pozostałe zmienne, obiekty dziel si na statyczne i dynamiczne. Je li
opracowanie deklaracji zmiennej powoduje wywołanie konstruktora, to o miejscu
przydzielonym zmiennej mo na wnioskowa na podstawie warto ci danej przypisanej
zmiennej this. Wywołanie konstruktora dla zmiennej this wskazuje obiekt dla którego
wywołano konstruktor. Analogiczn funkcj jak podczas tworzenia obiektów pełni
konstruktor spełnia podczas ich usuwania destruktor. Podobnie jak konstruktor, destruktor
jest komponentem klasy do której nale y obiekt. Nazw destruktora jest napis składaj cy
si z identyfikatora klasy poprzedzonego znakiem ~ (tylda). Deklaracja destruktora nie
mo e zawiera specyfikacji typu, a jego definicja nie mo e zawiera instrukcji return.
Typowe u ycie destruktora sprowadza si do przywrócenia warunków pocz tkowych,
w tym do odzyskania pami ci operacyjnej przydzielonej podczas inicjowania obiektu.
14.
DZIEDZICZENIE I POLIMORFIZM
Jednym z podstawowych zada programowania obiektowego jest wspólny opis pewnej
klasy przedmiotów, zjawisk czy problemów. Temu celowi słu y maj dwa najwi ksze
osi gni cia programowania zorientowanego obiektowo: dziedziczenie i polimorfizm.
Dziedziczenie umo liwia przejmowanie wła ciwo ci innych klas zwanych pierwotnymi
lub bazowymi, przez klasy zwane potomnymi lub wprowadzonymi. Poniewa
wła ciwo ci klasy s definiowane przez jej składowe, dziedziczenie polega na mo liwo ci
przył czenia do klasy składowych klas bazowych. Podstawow korzy ci płyn c
z dziedziczenia jest automatyczne wykonywanie konwersji od wska nika klasy potomnej
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
– do wska nika klasy bazowej, co umo liwia traktowanie wszystkich obiektów
potomnych tak, jakby były abstrakcyjnej klasy bazowej.
Polimorfizm jest wła ciwo ci kolekcji funkcji o przeci onym identyfikatorze,
umo liwiaj c aktywowanie jednej z nich na rzecz obiektu, którego typ nie wynika
z nazwy obiektu, lecz jest zapami tany w obiekcie. Ogół funkcji polimorficznych
obranego typu składa si z funkcji zadeklarowanej ze specyfikatorem virtual oraz ze
wszystkich funkcji o takim samym identyfikatorze, zdefiniowanych w ci gu klas
pochodnych (ju bez specyfikatora virtual). Wyst pienie w deklaracji klasy chocia
jednej funkcji polimorficznej powoduje uzupełnieni ogółu pól tej klasy, ukrytym polem
identyfikacyjnym, w którym jest przechowywana informacja o typie obiektu. Niezale nie
od liczby funkcji polimorficznych danej klasy pole takie jest tylko jedno. W typowych
implementacjach jest ono umieszczane bezpo redni za wszystkimi polami tej klasy,
w której po raz pierwszy wyst piła funkcja polimorficzna. Aktywowanie funkcji
polimorficznej na rzecz obiektu przebiega w nast puj cy sposób: najpierw si ga si do
pola informacyjnego obiektu, w celu okre lenia klasy obiektu, a nast pnie aktywuje si
funkcj polimorficzn tej wła nie klasy na rzecz tego obiektu.
Funkcje polimorficzne pozwalaj na wywołanie funkcji zgodnie z klas obiektu, nawet
gdy odwołanie do tej funkcji odbywa si przez wska nik klasy pierwotnej, np. je li
w tablicy tab przechowywane s wska niki klasy podstawowej hierarchii, zawieraj cej
funkcj polimorficzn , to wywołanie tab[indeks]->funkcja_plimorficzna spowoduje
wywołanie funkcji odpowiadaj cej rzeczywistej klasie wskazywanego obiektu. Aby wi c
wywołanie odpowiedniego destruktora było mo liwe musi by on równie funkcj
wirtualn . Adres wywoływanej funkcji wirtualnej jest ustalany dopiero w czasie
wykonywania programu. Dzi ki temu raz skompilowana funkcja mo e odwoływa si do
funkcji wirtualnych klas, które w momencie jej kompilacji jeszcze nie istniały. Wybór
funkcji, która ma zosta wywołana, odbywa si za po rednictwem tzw. tablicy funkcji
wirtualnych. W pewnym uproszczeniu mo na powiedzie , e zawiera ona adresy danej
funkcji wirtualnej dla całej hierarchii klas. Po napotkaniu wywołania funkcji wirtualnej
rozpoczynane jest przeszukiwanie tej tablicy, maj ce na celu odnalezienie adresu funkcji
nale cej do klasy obiektu, dla którego jest ona wywoływana.
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
XIV. PROGRAMOWANIE DLA WINDOWS Z
WYKORZYSTANIEM OWL (OBIEKT WINDOW LIBRARY)
W tym rozdziale omówi standardowe klasy potrzebne do tworzenia aplikacji.
Biblioteka OWL zawiera definicje klas potrzebnych do tworzenia aplikacji dla Windows.
Fundamentalne znaczenie dla wi kszo ci typowych aplikacji maj nast puj ce klasy:
TModule
(moduł – program lub biblioteka DLL)
TApplication
(program – aplikacja)
TWindow (okno)
Tworz c obiekt klasy danej aplikacji b d wykorzystywał dziedziczenie od klasy
bazowej TApplication:
class Moja_class : public TApplication
Podstawowym celem zastosowania tej wła nie klasy bazowej jest odziedziczenie gotowej
funkcji – metody virtual InitMainWindow() (zainicjuj główne okno programu).
Utworzenie obiektu Moja_class nast puje zwykle w czterech etapach:
• Windows uruchamiaj program wywołuj c główn funkcj WinMain() lub OwlMain()
wchodz c w skład ka dej aplikacji,
• Funkcja WinMain() tworzy przy pomocy operatora new nowy obiekt – aplikacj ,
• Obiekt – aplikacja zaczyna funkcjonowa . Konstruktor obiektu (własny, b d
odziedziczony po klasie TApplication) wywołuje funkcj – wirtualn metod
InitMainWidnow()
.
Funkcja przy pomocy operatora new tworzy obiekt – okno aplikacji. Wska nik do
utworzonego obiektu zwraca funkcja GetApplication(). Dla zobrazowania mechanizmów
poni ej przedstawi uproszczony „wyci g” z dwu opisywanych klas. Nie jest to dokładna
kopia kodu ródłowego Borlanda, lecz skrót tego kodu pozwalaj cy na zrozumienie
metod implementacji okienkowych mechanizmów wewn trz klas biblioteki OWL i tym
samym wewn trz obiektów obiektowo – zdarzeniowych aplikacji. A oto najwa niejsze
elementy implementacji klasy TApplication:
• Konstruktor obiektu:
TApplication::TApplication(const char far* name,
HINSTANCE Instance,
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
HINSTANCE prevInstance,
const char far* CmdLine,
Int CmdShow,
TModule*& gModule)
{
hPrevInstance=prevInstance;
nCmdShow = CmdShow;
MainWindow = 0;
HAccTable = 0;
BreakMessageLoop = FALSE;
AddApplicationObject(this);
gModule = this;
}
• Funkcja – metoda „Zainicjuj Instancj ”:
void TApplication::InitInstance()
{
InitMainWindow();
if(MainWindow)
{
MainWindow->SetFlag(wfMainWidnow);
MainWindow->Create();
MainWindow->Show(nCmdShow);
}
• Metoda „Zainicjuj główne okno aplikacji”:
void TApplication::InitMainWindow()
{
SetMainWindow(new TFrameWindow(0,GetName()));
}
• Metoda Run() – „Uruchom program”:
int TApplication::Run()
{
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
int status;
{
if(!hPrevInstance) InitApplication();
InitInstance();
status = MessageLoop();
}
• P tla pobierania komunikatów.
BOOL TApplication::PumpWaitingMessages()
{
MSG msg;
BOOL foundOne = FALSE;
while(::PeekMessage(&msg,0,0,0,PM_REMOVE))
{
foundOne = TRUE;
if(msg.message == WM_QUIT)
{
BreakMessageLoop = TRUE;
MessageLoopResult = msg.wParam;
::PostQuitMessage(msg.wParam);
break;
}
if(!ProcessAppMsg(msg))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
}
return foundOne;
}
int TApplication::MessageLoop()
{
long idleCount = 0;
MessageLoopResult = 0;
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
while(!BreakMessageLoop)
{
TRY{
if(!IdleAction(idleCount++))::WaitMessage();
if(PumpWaitingMessage()) idleCount = 0;
}
if(MessageLoopResult != 0)
{
::PostQuitMessage(MessageLoopResult);
break;
}
BreakMessageLoop = FALSE;
return MessageLoopREsult;
}
else if(::lsWindowEnable(wnd))
{
*(info->Wnds++) = wnd;
::EnableWidnow(wnd,FALSE);
}
return TRUE;
}
Klasa TWindow (Okno) zawiera implementacj wielu przydatnych przy tworzeniu
aplikacji „cegiełek”. Poni ej przedstawi fragment pliku ródłowego:
...
extern LRESULT FAR PASCAL _export InitWndProc(HWND,UINT,WPARAM,LPARAM)
...
struct TcurrentEvent
//Struktura Bie ce zdarzenie
{
Twindow* win;
//Wska nik do okno
UINT message;
//Komunikat
WPARAM wParam;
LPARAM lParam;
}
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
...
DEFINE_RESPONSE_TABLE(Twindow)
//Makro:zdefiniuj tablic odpowiedzi na zdarzenie
//EV_WM_SIZE – zdarzenie (Event) – nadszedł komunikat WM_SIZE
...
EV_WM_SETCURSOR,
EV_WM_SIZE,
EV_WM_MOVE,
EV_WM_PAINT,
EV_WM_LBUTTONDOWN,
EV_WM_KILLFOCUS,
EV_WM_CREATE,
EV_WM_CLOSE,
EV_WM_DESTROY,
EV_COMMAND(CM_EXIT,CmExit),
...
END_RESPONSE_TABLE;
• Funkcje – metody obsługuj ce komunikaty zaimplementowane wewn trz klasy
TWindow
TWindow::EvCreate(CREATESTRUCT far&)
{
SetupWindow();
return (int)DefaultProcessing();
}
void Twindow::EvSize(UINT size Type, Tsize&)
{
if(Scroller && size Type != SIZE_MINIMIZED)
{
Scroller->SetPageSize();
Scroller->SetBarRange();
}
}
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
• Metoda GetWindowClass()
void TWindow::GetWindowClass(WNDCLASS& wndClass)
{
wndClass.cbClsExtra = 0;
wndClass.cbWndExtra = 0;
wndClass.hInstance = *GetModule();
wndClass.hIcon = 0;
wndClass.hCursor = ::LoadCursor(0,IDC_ARROW);
wndClass.hbrBackground = HBRUSH(COLOR_WINDOW +1);
wndClass.lpszMenuName = 0;
wndClass.lpszClassName = GetClassName();
wndClass.style = CS_DBLCLKS;
wndClass.lpfnWndProc = InitWndProc;
}
Skoro te wszystkie elementy zostały ju zaimplementowane wewn trz definicji klas,
program powinien tylko umiej tnie z nich korzysta a tekst ródłowy programu powinien
ulec skróceniu i uproszczeniu.
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
XV. PRAKTYCZNY CZ
TWORZENIA PROGRAMU KART
KONTROLNYCH
Zaczyna prac nad nowym programem znaczy utworzy nowy projekt, czyli spis
wszystkich modułów. Tworz c projekt musimy zapozna si za nast puj cymi
zagadnieniami:
• Target Name
W okienku Target Name wpisuje nazw finalnego programu.
• Target Type
W Target Type wybieram wariant o nazwie Application – czyli zwykły windowsowy
program. Platform to pytanie o sprz t i oprogramowanie, na jakim ma by
uruchamiany ostateczny program. Wybieram platform Win32, czyli 32-bitowe
Windows9x. U ytkowników posiadaj cych 16-bitowy system operacyjny np.
Widnows3.11 wybieraj Windows 3.x(16).
• Target Model
Target Model
to pytanie sugeruj ce ró ne odpowiedzi, zale nie od wcze niej wybranej
platformy. Gdy platforma jest 16-bitowa, mam do wyboru model Large i Medium.
Wybieraj c Large program b dzie zawierał dalekie wywołania (b dzie obsługiwał
długie 4-bajtowe adresy) dzi ki czemu uniknie si bł dów zwi zanych z brakiem
modyfikatorów far w deklarowaniu zmiennych i definiowaniu funkcji. Nowoczesna
platforma 32-bitowa (czyli 4-bajtowa) nie rozró nia adresów dalekich (4-bajtowych)
i bliskich (2-bajtowych). Cały sprz t i całe oprogramowanie jest 4-bajtowe. Wybieram
aplikacj GUI, czyli graficzny interfejs u ytkownika.
• Frame work
Grupa opcji Frame work, co mo na tłumaczy jako szkielet, pozwoli wybra dialekt
j zyka, w którym chcemy programowa . Jest to wybór mi dzy ró nymi bibliotekami
klas – obiektów, ukrywaj cych w sobie zło one algorytmy i struktury danych.
Program nawi zuje do borlandowsiej biblioteki OWL. Mo na wybra te alternatyw ,
konkurencyjn bibliotek Microsoftu o nazwie MFC, bibliotek OCF, zawieraj ca
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
procedury do tworzenia tzw. powi za OLE i bibliotek „gołych klas” zwan Class
Library
. Nale y tutaj doda , e ró ne linie Frame works bardzo le znosz mieszanie
ró nych szkieletów w jednym programie.
• Grupa Controls
W Grupa Controls – typ sterowania programem – wybieramy kształt poszczególnych
elementów sterowania: przycisków, linii, tekstów, edytorów, list itd.
Biblioteki doł czane dynamicznie (a mogłyby by jeszcze wklejone statycznie)
zmniejszaj znacznie rozmiar ostatecznego pliku *.exe. Cały kod biblioteczny b dzie
znajdował si gdzie na dysku w plikach o nazwach *.dll (dynamicznie doł czone
biblioteki do wspólnego u ytku przez wiele programów). Program odwołuj cy si do
bibliotek wł czonych dynamicznie mo e nie działa na innym komputerze – po prostu
mo e tam nie by potrzebnego zbioru procedur *.dll.
• Advanced
Kilka opcji nowo tworzonego projektu zostało ukryte pod przyciskiem Advanced, pod
którym wybieramy z jakich pliki ma składa si program. Na program windosowy
pisany pod Boralndem składaj si zasadniczo trzy typy plików. Jest tam jeden lub
wi cej plików o rozszerzeniu *.cpp (tekst ródłowy), jeden lub wi cej plików *.rc
(opis map bitowych, ikon, przycisków, edytorów, list, itd.) i jeden krótki plik *.def,
zawieraj cy dane dla linkera, czyli narz dzia zbieraj cego wszystkie cz ci w jeden
ostateczny plik wykonywalny.
Program windosowy z zało enia jest obszerny. Przyczyn tego stanu rzeczy jest dialog,
jaki program prowadzi z systemem operacyjnym, zanim cokolwiek pojawi si na
ekranie. Program musi zosta podł czony do wielozadaniowego rodowiska. Pokazuje
wi c systemowi stosunkowo du o ró nych parametrów, które zło si na dane cechy
programu. Znajduje si tam nazwa procedury desygnowanej do obsługi napływaj cych
komunikatów, tytuł okna, rodzaj kursora, opis elementu graficznego, opis sposobu
reagowania na inne okna i jeszcze kilka innych rzeczy. Wszystkie te parametry s uj te
w struktur , któr po wypełnieniu nale y przesła do systemu. Je li system zaakceptuje
dania, co nazwa si rejestracj klasy okna, przyst puje si do utworzenia okna, te nie
bezpo rednio rysuj c co na ekranie, a wywołuj c specjalnie przygotowan funkcj ,
której argumentami s mi dzy innymi rozmiary i poło enie ramki. Po rejestracji da
i utworzeniu okna nale y podł czy si do strumienia komunikatów o naci ni tych
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
klawiszach, ruchach myszki, ewentualnie stanach innych urz dze . Pozostał jeszcze
czwarty element – cała reszta programu, zapisana jako funkcja (która oczywi cie mo e
operowa mnóstwem innych funkcji) reprezentuj ca specyficzne reakcje na ka dy
konkretny komunikat o zdarzeniach zewn trznych.
Programowanie obiektowe ma szczególne mo liwo ci ukrywania kodu, składaj cego si
na program. Konstruktor jakiego obiektu, b d cy zwykł funkcj wchodz c do gry
w momencie deklarowania konkretnej instancji tego obiektu, mógłby stanowi wi ksz
cz
programu. Publiczne funkcje obiektu, jak np. funkcja Run() obiekt typu
TApplication
, dopełniaj reszty cech programowania obiektowego. Wystarczy mie dobry
opis konkretnej klasy by móc pisa skomplikowane programy, wykorzystuj ce przy tym
prac innych programistów.
Filozofia programowania w OWL opiera si na poznaniu zasady modyfikowania
obiektów bibliotecznych.
Poni ej przedstawi cz
kodu ródłowego opisuj c wybrane funkcje i klasy:
#include"kk.h"
#include <owl\applicat.h>
#include <owl\inputdia.h>
#include <owl\opensave.h>
#include <owl\framewin.h>
#include <owl\gauge.h>
#include <owl\listbox.h>
#include <owl\window.h>
#include <owl\dialog.h>
#include <owl\edit.h>
#include <owl\dc.h>
#include <owl\combobox.h>
#include <owl\button.h>
#include <owl\color.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <dos.h>
#include <dir.h>
struct czas_utworzenia_pliku
//Tworzymy struktury usprawniaj c i czyni c prac czytelniejsz
{
unsigned sec:5;
unsigned min:6;
unsigned hrs:5;
};
struct _DANE_PARAMETROW_
{
char pdwd[10];
//przedział danych wejsciowych dolni
char pdwg[10]; //przedział danych wejsciowych górny
char lkd[10];
//linia kontrolna dolnia
char lkg[10]; //linia kontrolna górna
char alk[10]; //wylicz automatycznie linie kontrolne po zadanym okresie
char apdw[10]; //automatyczny przedział danych po zadanym okresie
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
};
class _DIALOG_PARAMETROW_ : public TDialog
//Tworzymy klas , która dziedziczy zasoby
po
//klasie bazowej TDialog
{
public:
_DIALOG_PARAMETROW_(TWindow *parent,_DANE_PARAMETROW_ *daneparam,int
resId); //definiujemy konstruktor klasy
};
_DIALOG_PARAMETROW_::_DIALOG_PARAMETROW_(TWindow
*parent,_DANE_PARAMETROW_ *daneparam,int resId) : TDialog(parent,resId)
{
new TEdit(this,IDC_PDWD,10);
new TEdit(this,IDC_PDWG,10);
new TEdit(this,IDC_LKD,10);
new TEdit(this,IDC_LKG,10);
new TEdit(this,IDC_ALK,10);
new TEdit(this,IDC_APDW,10);
SetTransferBuffer(daneparam);
}
struct _DANE_WEJSCIOWE_
{
char sd[180];
// cie ka dost pu do pliku wej ciowego
char cod[10];
//czas odczytu danych
};
class _DIALOG_DANE_WEJSCIOWE_ : public TDialog
{
public:
_DIALOG_DANE_WEJSCIOWE_(TWindow
*parent,_DANE_WEJSCIOWE_
*danewe,int
resId);
};
_DIALOG_DANE_WEJSCIOWE_::_DIALOG_DANE_WEJSCIOWE_(TWindow
*parent,_DANE_WEJSCIOWE_ *danewe,int resId) : TDialog(parent,resId)
{
new TEdit(this,IDC_SCIEZKADOSTEPU,180);
new TEdit(this,IDC_CZESTOTLIWOSC,10);
SetTransferBuffer(danewe);
}
class _WYKRES_
//Tworzymy klas do rysowania wykresów, której mo liwo ci wykraczaj poza
//wymagania programu
{
public:
_WYKRES_(TDC &dc,char *tytul,double xl,double yl,double xr,double yr,
int xel,int yel,int xer,int yer,int il_skala_x,int il_skala_y,
bool linia,bool skala_x,bool skala_y,bool siatka,
TColor kolor_punktu,TColor kolor_skali,TColor kolor_siatki);
~_WYKRES_()
{
_dc_->RestorePen();
}
void Plot(double x,double y);
float _x0_,_y0_;
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
private:
TDC *_dc_;
TColor _kolor_punktu_;
double _a_,_b_,_c_,_d_;
bool _linia_,_pierwszy_punkt_;
};
_WYKRES_::_WYKRES_(TDC &dc, char *tytul=NULL, double xl=-10, double yl=-8, double xr=10,
double yr=8,
int xel=30, int yel=30, int xer=90, int yer=90, int
il_skala_x=3, int il_skala_y=3,
bool
linia=false,
bool
skala_x=true,
bool
skala_y=true, bool siatka=true,
TColor kolor_punktu=0,
TColor kolor_skali=0, TColor kolor_siatki=0)
{
_dc_=&dc;
_kolor_punktu_=kolor_punktu;
_a_=(double)(xer-xel)/(xr-xl);
_b_=(double)xel-_a_*xl;
_c_=(double)(yer-yel)/(yr-yl);
_d_=(double)yel-_c_*yl;
if(tytul)
{
TSize rozmiar;
TFont mss("MS Sans Serif",10);
dc.SelectObject(mss);
rozmiar=dc.GetTextExtent(tytul,strlen(tytul));
dc.TextOut(xel+(xer-xel-rozmiar.cx)/2,250,tytul);
dc.RestoreFont();
}
if(linia)
{
_pierwszy_punkt_=true;
}
if(siatka)
{
dc.SelectObject(TPen(kolor_siatki));
int dx=(xer-xel)/il_skala_x;
for(int x=xel;x<=xer;x+=dx)
{
dc.MoveTo(x,yer);
dc.LineTo(x,yel);
}
int dy=(yer-yel)/il_skala_y;
for(int y=yel;y<=yer;y+=dy)
{
dc.MoveTo(xel,y);
dc.LineTo(xer,y);
}
}
if(skala_x)
{
dc.SelectObject(TPen(kolor_skali));
int dx=(xer-xel)/il_skala_x;
dc.MoveTo(xel,yer);
dc.LineTo(xer,yer);
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
for(int x=xel;x<=xer;x+=dx)
{
dc.MoveTo(x,yer-3);
dc.LineTo(x,yer+3);
}
dc.MoveTo(xel,yer);
dc.LineTo(xer,yer);
dc.MoveTo(xer+10,yer);
dc.LineTo(xer,yer-3);
dc.LineTo(xer,yer+3);
dc.LineTo(xer+10,yer);
}
if(skala_y)
{
dc.SelectObject(TPen(kolor_skali));
int dy=(yer-yel)/il_skala_y;
for(int y=yel;y<=yer;y+=dy)
{
dc.MoveTo(xel-3,y);
dc.LineTo(xel+3,y);
}
dc.MoveTo(xel,yer);
dc.LineTo(xel,yel);
dc.MoveTo(xel,yel-10);
dc.LineTo(xel-3,yel);
dc.LineTo(xel+3,yel);
dc.LineTo(xel,yel-10);
}
}
void _WYKRES_::Plot(double x,double y)
{
int xe,ye;
xe=_a_*x+_b_;
ye=_c_*y+_d_;
if(_linia_)
{
if(_pierwszy_punkt_)
{
_x0_=xe;
_y0_=ye;
_pierwszy_punkt_=false;
}
_dc_->SelectObject(TPen(_kolor_punktu_));
_dc_->MoveTo(_x0_,_y0_);
_dc_->LineTo(_x0_=xe,_y0_=ye);
}
else
_dc_->SetPixel(xe,ye,_kolor_punktu_);
}
Nast pn z najwa niejszych i najbardziej efektownych klas w OWL jest klasa TWindow.
Daje ona pocz tek wszystkim typom okien – w szczególno ci TFrameWindow. Nawet
zwykły przycisk jest potomkiem TWindow, co znaczy, e zwi zana z nim klasa powstała
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
w wyniku zastosowania składni dziedziczenia. Oczywi cie obiekt TWindow ma swoje
konstruktory, swoje publiczne i prywatne dane, swoje funkcje, z których kluczowa cz
jest wirtualna:
class _OKNO_ : public TWindow
{
public:
_OKNO_(TWindow* parent=0);
~_OKNO_();
int i,cmwapdw,cmwalk;
int xx;
TStatic* xi[10];
TStatic *odchylenies, *liniac;
TStatic *przedzialdanychgorny, *przedzialdanychdolni;
TStatic *sredniaruchoma, *dopuszczalneodchyl, *gornaliniakontrolna, *dolnialiniakontrolna;
TGauge *miernik;
char sd[180],cod[10];
char pdwd[10];
//przedział danych wejsciowych dolni
char pdwg[10]; //przedział danych wejsciowych górny
char lkd[10];
//linia kontrolna dolnia
char lkg[10]; //linia kontrolna górna
char alk[10]; //wylicz automatycznie linie kontrolne po zadanym okresie
char apdw[10]; //automatyczny przedział danych po zadanym okresie
char xip[10][5];
float x_0,y_0;
float ppdgp, ppddp;
float ppd[9],lc;
float ppdsrxx;
float ppddpt; //pomocniczy przedział danych dolnich tymczasowy
float ppdgpt;
//pomocniczy przedział danych górnych tymczasowy
float ppdsrk[10001];
//pomocniczy przedział danych rednich ruchomych kroki
double x;
long opoznij,lcif;
float wylicz_srednia_ruchoma(float[]);
float przedzial_danych_gorny(float[]);
float przedzial_danych_dolni(float[]);
float linia_centralna(float[]);
float odchylenie_stand(float[]);
float lcp[10]; //linia centralalna pomocnicza
bool IdleAction(long);
void SetupWindow(void);
void CmOprogramie(void);
void CmParametryObliczeniowe(void);
void CmDaneWejsciowe(void);
void Cmwapdw(void);
void Cmwalk(void);
void CmHelp(void);
bool CanClose(void);
float linia_kontrolna_dolnia(void);
float linia_kontrolna_gorna(void);
void CmStart(void){i=1;};
void CmStop(void){i=0;};
void Paint(TDC &dc,bool erase,TRect &r);
_DANE_WEJSCIOWE_ danewe;
_DANE_PARAMETROW_ daneparam;
private:
DECLARE_RESPONSE_TABLE(_OKNO_);
};
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
Jednym z najwa niejszych w programowaniu pod Windows terminem jest zdarzenie,
wiadomo , REAPONSE TABLE (tabela odzewów). Tabela ta okre la zdarzenie, którymi
interesuje si okno i z ka dym zdarzeniem wi e odpowiedni funkcj ze zbioru
procedur.
DEFINE_RESPONSE_TABLE1(_OKNO_,TWindow)
EV_WM_SIZE,
EV_COMMAND(IDM_OPROGRAMIE,CmOprogramie),
EV_COMMAND(IDM_PARAMETRYOBLICZENIOWE,CmParametryObliczeniowe),
EV_COMMAND(IDM_DANEWEJSCIOWE,CmDaneWejsciowe),
EV_COMMAND(ID_PRZYCISK_OPCJE,CmParametryObliczeniowe),
EV_COMMAND(ID_PRZYCISK_DANE,CmDaneWejsciowe),
EV_COMMAND(IDC_WAPDW,Cmwapdw),
EV_COMMAND(IDC_WALK,Cmwalk),
EV_COMMAND(IDHELP1,CmHelp),
EV_COMMAND(ID_PRZYCISK_START,CmStart),
EV_COMMAND(ID_PRZYCISK_STOP,CmStop),
END_RESPONSE_TABLE;
_OKNO_::_OKNO_(TWindow* parent) : TWindow(parent)
{
strcpy(sd,".//DANE//kk.txt");
strcpy(cod,"500");
strcpy(pdwd,"13");
strcpy(pdwg,"14");
strcpy(alk,"6");
strcpy(apdw,"6");
i=1;
TStatic *ramka1, *ramka2, *ramka3, *ramka4;
ramka1=new TStatic(this,-1,"",20,10,110,230);
ramka1->Attr.Style|=SS_ETCHEDFRAME;
ramka2=new TStatic(this,-1,"",20,245,600,240);
ramka2->Attr.Style|=SS_ETCHEDFRAME;
ramka3=new TStatic(this,-1,"",505,10,110,230);
ramka3->Attr.Style|=SS_ETCHEDFRAME;
ramka4=new TStatic(this,-1,"",140,10,355,205);
ramka4->Attr.Style|=SS_ETCHEDFRAME;
miernik=new TGauge(this,ID_MIERNIK,135,225,365,15);
SetBkgndColor(TColor::Sys3dFace);
for(int xii=0;xii<5;xii++)
{
new TStatic(this, -1,"xi=",30,20+(20*xii),40,18,18);
xi[xii]=new TStatic(this, -1," ",80,20+(20*xii),40,18,18);
};
new TStatic(this, -1,"Linia centralna:",170,20,100,18,18);
liniac=new TStatic(this,-1," ",280,20,60,20,18);
new TStatic(this, -1,"Odchylenie standardowe:",170,40,170,18,18);
odchylenies=new TStatic(this, -1," ",345,40,60,20,18);
new TStatic(this, -1,"Przedział dolni danych:",170,60,170,18,18);
przedzialdanychdolni=new TStatic(this, -1," ",345,60,60,20,18);
new TStatic(this, -1,"Przedział górny danych:",170,80,170,18,18);
przedzialdanychgorny=new TStatic(this, -1," ",345,80,60,20,18);
new TStatic(this, -1,"Górna linia kontrolna:",170,100,170,18,18);
gornaliniakontrolna=new TStatic(this, -1," ",345,100,60,20,218);
new TStatic(this, -1,"Dolnia linia kontrolna:",170,120,170,18,18);
dolnialiniakontrolna=new TStatic(this, -1," ",345,120,60,20,218);
new TStatic(this, -1,"Dopuszczalne odchylenie:",170,140,180,18,18);
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
dopuszczalneodchyl=new TStatic(this, -1," ",345,140,60,20,218);
new TStatic(this, -1," rednia ruchoma:",170,160,140,18,18);
sredniaruchoma=new TStatic(this, -1," ",315,160,60,20,18);
new TButton(this,ID_PRZYCISK_START,"START",515,30,90,25);
new TButton(this,ID_PRZYCISK_STOP,"STOP",515,70,90,25);
new TButton(this,ID_PRZYCISK_OPCJE,"OPCJE",515,110,90,25);
new TButton(this,ID_PRZYCISK_DANE,"DANE",515,150,90,25);
new TButton(this,IDHELP1,"HELP",515,190,90,25);
};
_OKNO_::~_OKNO_()
{
};
Klasa TWindow, jak przystało na okienkowy system operacyjny, jest niezwykle bogata
w szczegóły. Zawiera blisko dwie cie danych i funkcji. Przytocz tutaj tylko jedn , ale
chyba najwa niejsz funkcj klasy TWindow – Paint() (maluj):
virtual void Paint (TDC& dc, bool erase, TRect& rect);
Funkcja Paint() jest podporz dkowana systemowi. Wywoła j system, gdy nasze okno
znajdzie si na widocznym miejscu ekranu. Funkcja Paint() to danie na pokazanie
tre ci okna. Funkcja Paint() ma trzy argumenty. Pierwsza z nich jest powi zaniem
(referencj ) do obiektu typu TDC – urz dzenia graficznego (Device Context), które tutaj
jest pewnym kawałkiem ekranu. Drugi argument, o nazwie erase (skasuj) poinformuje,
czy odbudowie podlega cała zawarto okienka. Trzeci argument jest referencj do
zaskakuj co bogatego obiektu, który definiuje obszar wymagaj cy od wie enia. S tam
zdefiniowane mi dzy innymi współrz dne prostok ta, które okre l , jaki obszar okna
powinien by odbudowany:
void _OKNO_::Paint(TDC& dc,bool,TRect&)
{
TMemoryDC memDC;
double minx=0,maxx=100;
TRect r=GetClientRect();
_WYKRES_ w(dc,"Diagram karty kontrolnej rednich ruchomych",minx,(ppdgp+0.5),maxx,(ppddp-
0.5),r.left+30,r.top+270,r.right-30,r.bottom-30,
10,10,true,true,true,false,TColor(0,100,0),TColor(0,0,0),TColor(255,255,255));
if(i==100)
{
i=5;
Invalidate(true);
}
if(i<=atoi(apdw)+2)
{
y_0=lc;
i++;
if(i==atoi(apdw)+2)
{
w.Plot(0,13.5);
w.Plot(100,13.5);
w.Plot(0,13.5);
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
w.Plot(0,atof(lkg)+0.4);
w.Plot(100,atof(lkg)+0.4);
w.Plot(0,atof(lkg)+0.4);
w.Plot(0,atof(lkd)-0.4);
w.Plot(100,atof(lkd)-0.4);
}
}
else
{
w.Plot(x_0,y_0);
w.Plot(i++,ppdsrxx);
x_0=i-1;
y_0=ppdsrxx;
}
}
Poni ej zastosowałem funkcj , która symuluje wielozadaniowo w ramach programu,
pozwalaj c wykonywa pewne czasochłonne operacje poza normalnym okresem
aktywno ci programu i systemu:
bool _OKNO_::IdleAction(long)
{
if(i==0) return true;
FILE *plik_kk;
char ppdane[9];
unsigned g=0;
unsigned m=0;
unsigned s=0;
struct ffblk f_info;
czas_utworzenia_pliku cup;
int stat,index_modyfikacji=0;
while(index_modyfikacji<20)
{
stat=findfirst(sd,&f_info,FA_ARCH);
if(stat)
{
MessageBox("Brak zbioru wej ciowego ","Uwaga...",MB_OK|MB_ICONSTOP);
break;
}
else
{
memcpy(&cup,&f_info.ff_ftime, sizeof(czas_utworzenia_pliku));
if(!((cup.hrs==g)&(cup.min==m)&(cup.sec==s)))
{
plik_kk=fopen(sd,"r");
int ppdi=0;
while(!feof(plik_kk))
{
fgets(ppdane,sizeof(ppdane),plik_kk);
ppd[ppdi]=atof(ppdane);
ppdi++;
};
fclose(plik_kk);
};
g=cup.hrs;
m=cup.min;
s=cup.sec;
index_modyfikacji++;
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
char s[8][8],liniacentralna[8],odchyleniestand[8],przedzialgorny[8],przedzialdolni[8];
char sredniaruch[8],liniakontrolnadolnia[8], liniakontrolnagornia[8],dop[8];
if(++opoznij<(atoi(cod)*6)) return true; //p tla opu niaj ca wy wietlanie.
else opoznij=0;
for(int xii=0;xii<5;xii++)
{
gcvt(ppd[xii],4,s[xii]);
xi[xii]->SetText(s[xii]);
}
gcvt(linia_centralna(ppd),8,liniacentralna);
liniac->SetText(liniacentralna);
gcvt(odchylenie_stand(ppd),8,odchyleniestand);
odchylenies->SetText(odchyleniestand);
miernik->SetValue(100*odchylenie_stand(ppd));
gcvt(przedzial_danych_gorny(ppd),8,przedzialgorny);
przedzialdanychgorny->SetText(przedzialgorny);
gcvt(przedzial_danych_dolni(ppd),8,przedzialdolni);
przedzialdanychdolni->SetText(przedzialdolni);
gcvt(wylicz_srednia_ruchoma(ppd),8,sredniaruch);
sredniaruchoma->SetText(sredniaruch);
gcvt(linia_kontrolna_dolnia(),8,liniakontrolnadolnia);
dolnialiniakontrolna->SetText(liniakontrolnadolnia);
strcpy(lkd,liniakontrolnadolnia);
gcvt(linia_kontrolna_gorna(),8,liniakontrolnagornia);
gornaliniakontrolna->SetText(liniakontrolnagornia);
strcpy(lkg,liniakontrolnagornia);
gcvt((13.5-linia_kontrolna_dolnia()),8,dop);
dopuszczalneodchyl->SetText(dop);
lcif++;
Invalidate(false);
};
}
return true;
};
Dalsza cz
to funkcje klasy _OKNO_ zdefiniowane na potrzeby programu:
float _OKNO_::wylicz_srednia_ruchoma(float ppdsr[9])
{
float ppdsrx=0;
if(lcif<atoi(apdw))
{
for(int lcifi=0;lcifi<5;lcifi++) ppdsrx+=ppdsr[lcifi];
ppdsrk[lcif]=ppdsrx/5;
return 0;
}
else
{
for(int lcifi=0;lcifi<5;lcifi++) ppdsrx+=ppdsr[lcifi];
ppdsrk[lcif]=ppdsrx/5;
ppdsrxx=(ppdsrk[lcif-2]+ppdsrk[lcif-1]+ppdsrk[lcif])/3;
return ppdsrxx;
}
};
float _OKNO_::linia_kontrolna_dolnia(void)
{
return (13.5-((2.576)*0.20)/(sqrt(15)));
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
};
float _OKNO_::linia_kontrolna_gorna(void)
{
return (13.5+((2.576)*0.20)/(sqrt(15)));
};
float _OKNO_::przedzial_danych_gorny(float ppdg[9])
{
if(lcif>atoi(apdw)) return ppdgpt;
ppdgp=(-1000);
//pomocniczny przedział danych górny(pom)
if(lcif>0) ppdgp=ppdgpt;
for(int ppdgi=0;ppdgi<5;ppdgi++) if(ppdgp<ppdg[ppdgi]) ppdgp=ppdg[ppdgi];
ppdgpt=ppdgp;
return ppdgp;
};
float _OKNO_::przedzial_danych_dolni(float ppdd[9])
{
if(lcif>atoi(apdw)) return ppddpt;
ppddp=1000;
//pomocniczny przedział danych dolnich(pom)
if (lcif>0) ppddp=ppddpt;
for(int ppddi=0;ppddi<5;ppddi++) if(ppddp>ppdd[ppddi]) ppddp=ppdd[ppddi];
ppddpt=ppddp;
return ppddp;
}
float _OKNO_::linia_centralna(float ppdc[9])
//metoda stabilizacyjna - bez uwzgl dnienia
warto ci normatywnych
{
if(lcif>=(atoi(apdw))) return 13.5;
float lc1=0; //linia centralna
for(int lci=0;lci<5;lci++) lc1+=ppdc[lci];
if (lcif==0) lcp[lcif]=(lc1/5);
else lcp[lcif]=lcp[lcif-1]+(lc/5);
lc=(lc1/5);
return lc;
};
float _OKNO_::odchylenie_stand(float ppdo[9]) //wyliczenie odchylenia standardowego na podstawie
danych wej.
{
float oss=0;
for(int osi=0;osi<5;osi++) oss+=pow(ppdo[osi]-linia_centralna(ppd),2);
return sqrt(oss/4);
};
bool _OKNO_::CanClose(void)
//funkcja
wywyolywana przy daniu zamkni cia programu.
{
return (MessageBox("Koniec ?","Karty kontrolne",MB_YESNO|MB_ICONQUESTION)==IDYES);
}
void _OKNO_::CmOprogramie(void)
//funkcja wywołana
z menu - uruchamiaj ca okno dialogowe.
{
TDialog(this,IDD_OPROGRAMIE).Execute();
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
};
void _OKNO_::CmParametryObliczeniowe(void) //funkcja wywołuj ca parametry systemowe
{
_DIALOG_PARAMETROW_ dialogparam(this,&daneparam,IDD_PARAMETRYOBLICZENIOWE);
strcpy(daneparam.pdwd,pdwd);
strcpy(daneparam.pdwg,pdwg);
strcpy(daneparam.apdw,apdw);
strcpy(daneparam.lkd,lkd);
strcpy(daneparam.lkg,lkg);
strcpy(daneparam.alk,alk);
if(dialogparam.Execute()==IDOK)
{
strcpy(pdwd,daneparam.pdwd);
strcpy(pdwg,daneparam.pdwg);
strcpy(apdw,daneparam.apdw);
strcpy(lkd,daneparam.lkd);
strcpy(lkg,daneparam.lkg);
strcpy(alk,daneparam.alk);
}
};
void _OKNO_::CmDaneWejsciowe(void) //funkcja wywyołuj ca parametry danych wej ciowych
{
_DIALOG_DANE_WEJSCIOWE_ dialogdw(this,&danewe,IDD_DANEWEJSCIOWE);
strcpy(danewe.sd,sd);
strcpy(danewe.cod,cod);
if(dialogdw.Execute()==IDOK)
{
strcpy(cod,danewe.cod);
}
};
void _OKNO_::Cmwapdw(void)
{
cmwapdw=1;
};
void _OKNO_::Cmwalk(void)
{
cmwalk=1;
};
void _OKNO_::CmHelp(void)
{
TDialog(this,IDD_DIALOGHELP).Execute();
}
void _OKNO_::SetupWindow()
{
TWindow::SetupWindow();
}
Deklarujemy tutaj klas PROGRAM_, która dziedziczy po TApplication. Klasa
TApplication
zawiera kilka konstruktorów, ró ni cych si liczb parametrów:
class _PROGRAM_ : public TApplication
{
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
public:
void InitMainWindow()
{
TFrameWindow* ramka=new TFrameWindow(0,"Karta kontrolna redniej ruchomej",new
_OKNO_);
ramka->Attr.H=540;
ramka->Attr.W=640;
ramka->Attr.X=10;
ramka->Attr.Y=10;
ramka->Attr.Style=WS_VISIBLE|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX;
SetMainWindow(ramka);
MainWindow->SetIcon(this,"IKONA");
GetMainWindow()->AssignMenu(IDM_MENU);
}
};
TApplication
obsługuje kilkana cie funkcji. Jedn z nich jest – Run(), która tworzy
ekranow posta okienka i podł cza je do systemowej kolejki zdarze :
int OwlMain(int,char*[])
{
return _PROGRAM_().Run();
}
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
Nat pnym plikiem z kodem ródłowym programu jest jeden lub wi cej plików *.rc
opisuj cy map bitowe, ikony, przyciski, edytory, list, itd.:
#include "kk.h"
#include<owl/inputdia.rc>
IKONA ICON "icona.ico"
IDM_MENU MENU
{
POPUP "&Ustawienia"
{
MENUITEM "&Parametry obliczeniowe...",IDM_PARAMETRYOBLICZENIOWE
MENUITEM "&Dane wejsciowe",IDM_DANEWEJSCIOWE
}
MENUITEM "0 programi&e",IDM_OPROGRAMIE
}
IDD_OPROGRAMIE DIALOG 40,60,240,120
EXSTYLE WS_EX_DLGMODALFRAME
STYLE DS_MODALFRAME|DS_3DLOOK|WS_POPUP|WS_VISIBLE|WS_CAPTION
CAPTION "Karty kontrolne redniej ruchomej"
FONT 8, "MS Sans Serif"
{
CTEXT "Politechnika Cz stochowska Cz stochowa 2001",-1,12,80,220,9
CTEXT "Praca Dyplomowa", -1,12,15,220,9
CTEXT "Tomasz Bylica", -1,12,35,220,9
CTEXT "Promotor: prof. dr. hab. in . Paweł Sewastianow",-1,12,50,220,9
PUSHBUTTON "OK",IDOK,96,100,48,14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
CONTROL "Frame",-1,"static",SS_ETCHEDFRAME|WS_CHILD|WS_VISIBLE,6,6,228,86,0
}
IDD_PARAMETRYOBLICZENIOWE DIALOG 0, 0, 246, 206
{
CONTROL "PRZEDZIAŁ DANYCH WEJ CIOWYCH", IDC_GROUPBOX1PO, "button",
BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP, 12, 12, 220, 30
CONTROL "LINIE KONTROLNE", IDC_GROUPBOX2PO, "button", BS_GROUPBOX | WS_CHILD |
WS_VISIBLE | WS_GROUP, 12, 52, 220, 30
CONTROL "AUTOMATYCZNE PRZEDZIAŁY DANYCH WEJ CIOWYCH", IDC_GROUPBOX3PO,
"button", BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP, 12, 92, 220, 30
CONTROL "AUTOMATYCZNE LINIE KONTROLNE", IDC_GROUPBOX4PO, "button",
BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP, 12, 132, 220, 30
CONTROL "DOLNI:", IDC_STATICTEXT1PO, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 27,
27, 24, 9
CONTROL "GÓRNY:", IDC_STATICTEXT2PO, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 132,
27, 29, 9
CONTROL "DOLNIA:", IDC_STATICTEXT3PO, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 24,
67, 28, 9
CONTROL "GÓRNA:", IDC_STATICTEXT4PO, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 132,
67, 28, 9
CONTROL "OK", IDOK, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE
| WS_TABSTOP, 16, 180, 50, 14
CONTROL "Cancel", IDCANCEL, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD |
WS_VISIBLE | WS_TABSTOP, 92, 180, 50, 14
CONTROL "Help", IDHELP1, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD |
WS_VISIBLE | WS_TABSTOP, 172, 180, 50, 14
CONTROL "", IDC_LKD, "edit", ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER |
WS_TABSTOP, 64, 65, 40, 10
CONTROL "", IDC_PDWG, "edit", ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER |
WS_TABSTOP, 176, 25, 36, 10
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
CONTROL "", IDC_PDWD, "edit", ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER |
WS_TABSTOP, 64, 25, 40, 10
CONTROL "", IDC_LKG, "edit", ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER |
WS_TABSTOP, 176, 65, 36, 10
CONTROL "", IDC_APDW, "edit", ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER |
WS_TABSTOP, 184, 106, 36, 10
CONTROL "", IDC_ALK, "edit", ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER |
WS_TABSTOP, 184, 146, 36, 10
CONTROL
"Oblicz
automatycznie
po
zadanym
okresie:",
IDC_WAPDW,
"button",
BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 23, 107, 161, 11
CONTROL
"Oblicz
automatycznie
po
zadanym
okresie:",
IDC_WALK,
"button",
BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 23, 147, 158, 11
}
IDD_DANEWEJSCIOWE DIALOG 0, 0, 235, 110
STYLE DS_MODALFRAME | DS_3DLOOK | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE |
WS_CAPTION | WS_SYSMENU
CAPTION "DANE WEJ CIOWE"
FONT 8, "Times New Roman CE"
{
CONTROL "OK", IDOK, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE
| WS_TABSTOP, 12, 84, 50, 14
CONTROL "Cancel", IDCANCEL, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD |
WS_VISIBLE | WS_TABSTOP, 92, 84, 50, 14
CONTROL "Help", IDHELP, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD |
WS_VISIBLE | WS_TABSTOP, 172, 84, 50, 14
CONTROL " CIE KA DOST PU DO PLIKU WEJ CIOWEGO", IDC_SCIEZKADOPLIKU, "button",
BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP, 12, 8, 208, 28
CONTROL "", IDC_SCIEZKADOSTEPU, "edit", ES_LEFT | WS_CHILD | WS_VISIBLE |
WS_BORDER | WS_TABSTOP, 24, 20, 180, 10
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
CONTROL
"CZ STOTLIWO
POBIERANIA
DANYCH",
IDC_CZESTOTLIWOSCODCZYTUPLIKU, "button", BS_GROUPBOX | WS_CHILD | WS_VISIBLE |
WS_GROUP, 12, 44, 208, 28
CONTROL "", IDC_CZESTOTLIWOSC, "edit", ES_LEFT | WS_CHILD | WS_VISIBLE |
WS_BORDER | WS_TABSTOP, 24, 56, 40, 10
CONTROL "milisekund", IDC_STATICTEXT1DW, "static", SS_LEFT | WS_CHILD | WS_VISIBLE,
68, 56, 48, 8
}
IDD_DIALOGHELP DIALOG 0, 0, 217, 63
STYLE DS_MODALFRAME | DS_3DLOOK | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE |
WS_CAPTION | WS_SYSMENU
CAPTION ""
FONT 8, "MS Sans Serif"
{
CONTROL "OK", IDOK, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE
| WS_TABSTOP, 80, 40, 50, 14
CONTROL "Program do analizy procesu kart kontrolnych redniej ruchomej. W etapie testowym nale y
uruchomi program ./DANE/demon.exe w celu symulacji pobierania danych on-line.", IDC_HELP,
"static", SS_CENTER | WS_CHILD | WS_VISIBLE, 8, 4, 204, 28
}
Na tym ko cz opis teorii i niektórych przykładów z wiata programowania w C++ pod
systemem Windows.
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________
XVI. BIBLIOGRAFIA
14.
Andrzej Zalewski „Programowanie w j zykach C i C++ z wykorzystaniem pakietu
Borland C++”
, Wydawnictwo Nakom, Pozna 1997.
15.
Adam Majczak „C++ w 48 godzin”.
16.
Steve Holzner „Programowanie w Microsoft C/C++”, Intersoftland, Warszawa 1993.
17.
Stanley B. Lippman „Podstawy j zyka C++”, Wydawnictwo Naukowo-Techniczne,
Warszawa 1994.
18.
Jan Bielecki „Od C do C++ programowanie obiektowe w j zyku C”.
19.
Piotr Wróblewski „Programowanie w Windows dla praktyków”, Wydawnictwo
Helion, Gliwice 1997.
20.
Andrzej Stasiewicz „C++ całkiem inny wiat”, Wydawnictwo Helion, Gliwice 1998.
21.
Jesse Liberty „C++ Ksi ga Eksperta”, Wydawnictwo Helion, Gliwice 1999.
22.
Sławomir Osiak „Programowanie w Windows”, ZNI „MIKOM”, Warszawa stycze
1997.
23.
Jens J. Dahlgaard, Kai Kristensen, Gopal K. Kanji „Podstawy zarz dzania jako ci ”,
Wydawnictwo Naukowe PWN, Warszawa 2000.
24.
Andrzej Iwasiewicz „Zarz dzanie Jako ci ”, Wydawnictwo Naukowe PWN,
Warszawa-Kraków 1999.
25.
Henryk Bieniok i zespół „Metody sprawnego zarz dzania”, Agencja Wydawnicza
„Placet”, Warszawa 1999.
26.
Ireneusz Durlik „In ynieria zarz dzania”, Agencja Wydawnicza „Placet”, Warszawa
1998.
Politechnika Cz stochowska Cz stochowa 2001
________________________________________________________________________________________________________________________________________________________________________________________________________________________