Politechnika Białostocka Wydział Elektyczny Kateda Elektotechniki Teoetycznej i Metologii Instukcja do pacowni specjalistycznej z pzedmiotu Inomatyka Kod pzedmiotu: EZC00 00 (studia niestacjonane) Spis teści. Opis stanowiska 3.. Stosowana apaatua. 3.. Opogamowanie.. 3. Wiadomości teoetyczne.. 3.. Ogólna stuktua unkcji. 3.. Umieszczanie deinicji unkcji w pogamie.. 7.3. Zmienne lokalne i zmienne globalne 8 3. Pzebieg ćwiczenia.. 8 4. Liteatua. 5. Zagadnienia na zaliczenie. JĘZYK C - FUNKCJE 6. Wymagania BHP. Nume ćwiczenia INF07Z Auto: d inż. Jaosław Foenc Białystok 03 Mateiały dydaktyczne pzeznaczone dla studentów Wydziału Elektycznego PB. Wydział Elektyczny, Politechnika Białostocka, 03 Wszelkie pawa zastzeżone. Żadna część tej publikacji nie może być kopiowana i odtwazana w jakiejkolwiek omie i pzy użyciu jakichkolwiek śodków bez zgody posiadacza paw autoskich. Inomatyka z Instukcja INF07Z
. Opis stanowiska.. Stosowana apaatua Podczas zajęć wykozystywany jest kompute klasy PC z systemem opeacyjnym Micosot Windows (XP/Vista/7)... Opogamowanie Na komputeach zainstalowane jest śodowisko pogamistyczne Micosot Visual Studio 008 Standad Edition lub Micosot Visual Studio 008 Expess Edition zawieające kompilato Micosot Visual C++ 008.. Wiadomości teoetyczne.. Ogólna stuktua unkcji W pogamie w języku C zawsze występuje co najmniej jedna deinicja unkcji - main(). Od unkcji main() ozpoczyna się wykonanie całego pogamu. Opócz niej mogą występować także inne unkcje zdeiniowane pzez użytkownika. Ogólną stuktuę unkcji pzedstawia Rys.. Rys.. Ogólna stuktua unkcji w języku C. Poniżej zamieszczono pzykład pogamu zawieającego dwie unkcje: - main() - główna unkcja pogamu; - add() - unkcja obliczająca sumę dwóch liczb zeczywistych. Pogam zawieający unkcję sumującą dwie liczby zeczywiste. #include <stdio.h> loat add(loat a, loat b) loat y; y = a + b; etun y; loat x=0.0, x=0.0, wynik; wynik = add(x,x); pint("wynik = %\n", wynik); etun 0; Wykonanie pogamu ozpoczyna się od unkcji main(). Gdy dochodzimy do instukcji zawieającej unkcję add(), to wywołanie tej unkcji powoduje pzekazanie steowania do jej piewszej instukcji. Do unkcji add() pzekazywane są dwa agumenty x i x typu loat. Piewszy paamet (a) otzymuje watość piewszego agumentu wywołania unkcji (x), natomiast dugi paamet (b) - watość dugiego agumentu wywołania unkcji (x). Powót z unkcji (do miejsca zaaz po jej wywołaniu) następuje na skutek wykonania instukcji etun. Watość zwacana pzez unkcję podstawiana jest pod zmienną wynik. Po słowie etun może występować dowolne wyażenie. Wyażenie to często umieszczane jest w nawiasach, ale nie jest to konieczne. Inomatyka 3 z Instukcja INF07Z Inomatyka 4 z Instukcja INF07Z
Funkcję add() można zapisać w postszy sposób: loat add(loat a, loat b) etun (a+b); W wywołaniu unkcji jako agumenty mogą występować zmienne, wyażenia aytmetyczne lub stałe liczbowe, np. Jeśli unkcja nie zwaca wyniku i nie ma w jej ciele etun to steowanie waca do punktu wywołania na skutek zakończenia wykonania wszystkich instukcji w bloku unkcyjnym. Mogą istnieć unkcje, do któych nie pzekazujemy żadnych agumentów, np. void linia() pint("----------\n"); wynik = add(0,0); wynik = add(x*0+4,x/x); Istnieją unkcje, któe nie zwacają żadnej watości, wtedy jako typ zwacanego wyniku podajemy void, np. void dukuj(int a) pint("liczba a wynosi: %d\n",a); etun; lub void linia(void) pint("----------\n"); Wywołanie takiej unkcji w pogamie ma postać: linia(); W pzypadku unkcji nie zwacającej watości można pominąć etun: void dukuj(int a) pint("liczba a wynosi: %d\n",a); Wywołanie w pogamie unkcji, któa nie zwaca watości, ma pzykładową postać: dukuj(-0); Należy koniecznie pamiętać o umieszczeniu nawiasów po nazwie unkcji. Zapis: linia(void) pint("----------\n"); nie jest ównoważny powyższym zapisom, gdyż jeśli nie podamy typu zwacanej watości pzez unkcję, to domyślnie jest to typ int. Inomatyka 5 z Instukcja INF07Z Inomatyka 6 z Instukcja INF07Z
.. Umieszczanie deinicji unkcji w pogamie Deinicję unkcji można umieszczać pzed lub po unkcji main(), ale należy pamiętać, że zasięg widzialności unkcji ozpoczyna się od miejsca jej deklaacji. Jeśli chcemy umieścić deinicję unkcji po deinicji unkcji main(), czyli po miejscu, w któym jest wywoływana, to musimy wcześniej podać jej omalną deklaację czyli pototyp. Pototyp opisuje to samo co nagłówek, ale kończy się śednikiem. W pototypie nie musimy podawać nazw paametów - wystaczą tylko typy. Podanie nazw paametów ma jednak znaczenie dla czytelności pogamu. Dzięki pototypom kompilato ma możliwość spawdzenia zgodności typów agumentów wywołania i paametów unkcji. Rozpatzmy stuktuę następujących dwóch pogamów: #include void un(int a, int b); un(a,b); void un (int a, int b) #include void un (int a, int b) un(a,b); W pogamie po lewej stonie unkcja un() zdeiniowana jest po deinicji unkcji main(), dlatego pzed unkcją main() umieszczony jest pototyp unkcji un(), któy może mieć jedną z dwu postaci: lub void un(int a, int b); void un(int, int); W pogamie po pawej stonie nie jest konieczne umieszczenie pototypu unkcji un(), gdyż jej deinicja umieszczona jest pzed unkcją main()..3. Zmienne lokalne i zmienne globalne Zmienne zadeklaowane w unkcjach są zmiennymi lokalnymi widzianymi tylko w obębie danej unkcji (bloku unkcyjnego) od miejsca, w któym zostały zadeklaowane. Zmienne lokalne są zmiennymi automatycznymi. Zmienne zadeklaowane poza unkcją main są zmiennymi globalnymi widzianymi w całym pogamie od miejsca deklaacji (są to zmienne statyczne). Jeśli zmienna globalna i lokalna mają takie same nazwy, to zmienna lokalna pzesłania widzialność zmiennej globalnej w danej unkcji. #include int a, b; void () loat a, c; int c, d; 3. Pzebieg ćwiczenia - zmienne a i b typu int są zmiennymi globalnymi; - zmienne a i c typu loat są zmiennymi lokalnymi widzianymi tylko w unkcji (); - zmienne c i d typu int są zmiennymi lokalnymi widzianymi tylko w unkcji main(); - zmienna globalna b widziana jest w obu unkcjach: () i main(); - zmienna globalna a widziana jest tylko w unkcji main(), gdyż w unkcji () jej nazwa została pzesłonięta pzez zmienną lokalną a typu loat. Na pacowni specjalistycznej należy wykonać wybane zadania wskazane pzez powadzącego zajęcia. W óżnych gupach mogą być wykonywane óżne zadania.. Napisz pogam zawieający unkcję wyświetlającą na ekanie Twoją wizytówkę o poniższej postaci. Inomatyka 7 z Instukcja INF07Z Inomatyka 8 z Instukcja INF07Z
********************************** * Jan Kowalski * * e-mail: j.kowalski@gmail.com * * tel. 3-456-789 * **********************************. Napisz pogam zawieający unkcję obliczającą częstotliwość ezonansową układu o ezystancji R, indukcyjności L i pojemności C wpowadzonych z klawiatuy. Pzykładowe uuchomienie pogamu Rezystancja R [Om]: 0 Indukcyjnosc L [H]: 0. Pojemnosc C [F]:.0e-6 ---------------------------------- Czestotliwosc [Hz]: 503.54397 Rezystancja R [Om]: 5000 Indukcyjnosc L [H]: 0.0 Pojemnosc C [F]: 4.0e-5 ----------------------------------- Czestotliwosc [Hz]: 77.9443 Rezystancja R [Om]: 500 Indukcyjnosc L [H]: 0.03 Pojemnosc C [F]: 6.0e-5 ----------------------------------- Czestotliwosc [Hz]: 8.508408 Rezystancja R [Om]: 0 Indukcyjnosc L [H]: Pojemnosc C [F]:.0e-6 ----------------------------------- Czestotliwosc [Hz]: 59.46988 Rezystancja R [Om]: 00 Indukcyjnosc L [H]: 0.05 Pojemnosc C [F]: 5.0e-3 ---------------------------------- Czestotliwosc [Hz]: 0.060807 Wzó = () π LC ( RC) = π L LC R () = (3) π LC ( RC) R = (4) π LC L L = (5) π LC R C 4. Suma poniższego szeegu liczbowego wynosi /4. Napisz pogam zawieający unkcję zwacającą sumę n-wyazów tego szeegu. Następnie wykozystując powyższą unkcję wyświetl óżnice pomiędzy sumą dokładną (/4), a sumą n = 0, n = 00 i n = 000 wyazów szeegu. + + + 3 3 4 L n( n + )( n + ) (6) 5. Napisz pogam zawieający unkcję obliczającą sumę ciągu o wyazie ogólnym an: n sin( n) a n = dla n > 0 n Sumowanie wyazów kończy się, gdy óżnica watości pomiędzy dwoma kolejnymi wyazami ciągu jest mniejsza od watości eps, będącej paametem unkcji. 6. Wczytaj współzędne 4 punktów (x,y) i wypisz pola wszystkich możliwych tójkątów zbudowanych na tych punktach. Zastosuj unkcję obliczającą pole tójkąta. 7. Rysunek pzedstawia pzebieg impulsu tapezowego. Napisz unkcję, któa na podstawie pzekazanego do niej czasu t oblicza i zwaca watość napięcia u. Następnie wykozystując powyższą unkcję oblicz i wyświetl watość napięcia dla czasu t ównego: 0.0, 0.5,.0,, 5.5, 6.0 [s]. 4 3 u[v] (7) 3. Napisz pogam zawieający unkcję podnoszącą liczbę x do potęgi y (y - całkowite, dodatnie). 3 4 5 t[s] Inomatyka 9 z Instukcja INF07Z Inomatyka 0 z Instukcja INF07Z
4. Liteatua [] Kenighan B.W., Ritchie D.M.: Język ANSI C. Pogamowanie. Wydanie II. Helion, Gliwice, 00. [] Pata S.: Język C. Szkoła pogamowania. Wydanie V. Helion, Gliwice, 006. [3] King K.N.: Język C. Nowoczesne pogamowanie. Wydanie II. Helion, Gliwice, 0. [4] Summit S.: Pogamowanie w języku C. FAQ. Helion, Gliwice, 003. [5] Wileczek R.: Micosot Visual C++ 008. Twozenie aplikacji dla Windows. Helion, Gliwice, 009. 5. Zagadnienia na zaliczenie. Opisz ogólną stuktuę deinicji unkcji w języku C.. Wyjaśnij czym óżni się deklaacja od deinicji unkcji? 3. Schaakteyzuj zmienne lokalne i globalne. 6. Wymagania BHP Waunkiem pzystąpienia do paktycznej ealizacji ćwiczenia jest zapoznanie się z instukcją BHP i instukcją pzeciw pożaową oaz pzestzeganie zasad w nich zawatych. W takcie zajęć laboatoyjnych należy pzestzegać następujących zasad. - Spawdzić, czy uządzenia dostępne na stanowisku laboatoyjnym są w stanie kompletnym, nie wskazującym na izyczne uszkodzenie. - Jeżeli istnieje taka możliwość, należy dostosować waunki stanowiska do własnych potzeb, ze względu na egonomię. Monito komputea ustawić w sposób zapewniający stałą i wygodną obsewację dla wszystkich członków zespołu. - Spawdzić pawidłowość połączeń uządzeń. - Załączenie komputea może nastąpić po wyażeniu zgody pzez powadzącego. - W takcie pacy z komputeem zabonione jest spożywanie posiłków i picie napojów. - W pzypadku zakończenia pacy należy zakończyć sesję pzez wydanie polecenia wylogowania. Zamknięcie systemu opeacyjnego może się odbywać tylko na wyaźne polecenie powadzącego. - Zabonione jest dokonywanie jakichkolwiek pzełączeń oaz wymiana elementów składowych stanowiska. - Zaboniona jest zmiana koniguacji komputea, w tym systemu opeacyjnego i pogamów użytkowych, któa nie wynika z pogamu zajęć i nie jest wykonywana w poozumieniu z powadzącym zajęcia. - W pzypadku zaniku napięcia zasilającego należy niezwłocznie wyłączyć wszystkie uządzenia. - Stwiedzone wszelkie baki w wyposażeniu stanowiska oaz niepawidłowości w unkcjonowaniu spzętu należy pzekazywać powadzącemu zajęcia. - Zabania się samodzielnego włączania, manipulowania i kozystania z uządzeń nie należących do danego ćwiczenia. - W pzypadku wystąpienia poażenia pądem elektycznym należy niezwłocznie wyłączyć zasilanie stanowiska. Pzed odłączeniem napięcia nie dotykać poażonego. Inomatyka z Instukcja INF07Z Inomatyka z Instukcja INF07Z