Informatyka 1. Wykład nr 8 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc

Podobne dokumenty
Informatyka 1. Wykład nr 8 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc

Informatyka 1. Wykład nr 8 ( ) Plan wykładu nr 8. Politechnika Białostocka. - Wydział Elektryczny. Asembler - przykład programu.

Informatyka 1. Wykład nr 8 ( ) Plan wykładu nr 8. Politechnika Białostocka. - Wydział Elektryczny. language) Asembler - przykład programu

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc

Konsultacje: dr inż. Jarosław Forenc

Informatyka 2. Informatyka 2. Wykład nr 1 ( ) Dane podstawowe. - Wydział Elektryczny. Politechnika Białostocka. Program wykładu (1/2)

Język programowania PASCAL

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

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

Podstawy programowania. Wprowadzenie

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Podstawy programowania wykład

Java EE produkcja oprogramowania

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Java jako język programowania

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Wykład 8: klasy cz. 4

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

PARADYGMATY PROGRAMOWANIA Wykład 4

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Język C++ wykład VIII

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

Wstęp do programowania

Programowanie obiektowe

Język ludzki kod maszynowy

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Programowanie obiektowe zastosowanie języka Java SE

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

Języki i paradygmaty programowania

Tworzenie aplikacji w języku Java

Programowanie obiektowe W1 Wprowadzenie. Dr hab. inż. Lucyna Leniowska, prof. UR Zakład Mechatroniki, Automatyki i Optoelektroniki

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

referencje Wykład 2. Programowanie (język C++) Referencje (1) int Num = 50; zdefiniowano zmienną Num (typu int) nadając jej wartość początkową 50.

Język C++ Różnice między C a C++

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc

Praktyka Programowania

Podstawy Programowania Obiektowego

Programowanie 2. Język C++. Wykład 3.

Jerzy Nawrocki, Wprowadzenie do informatyki

Wykład 5: Klasy cz. 3

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

C# /.NET. Copyright by 3bird Projects 2018,

( wykł. dr Marek Piasecki )

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

Spis treści. 1 Java T M

Spis treści JĘZYK C - FUNKCJE. Metodyki i techniki programowania. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia MITP10

Podstawy języka Java. przygotował:

Multimedia JAVA. Historia

Wykład 1

WYKŁAD 1 - KONSPEKT. Program wykładu:

Podstawy programowania w języku C

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Programowanie w Internecie. Java

Programowanie obiektowe

Programowanie obiektowe

Języki programowania - podstawy

1 Podstawy c++ w pigułce.

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/ / 24

Programowanie obiektowe

Część 4 życie programu

Wprowadzenie do języka Java

Wstęp do programowania obiektowego. Wykład 1 Algorytmy i paradygmaty Podstawowe pojęcia PO

Techniki Programowania

I - Microsoft Visual Studio C++

Microsoft IT Academy kurs programowania

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Informatyka 2. Wykład nr 3 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc

Zmienne, stałe i operatory

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Technologie cyfrowe semestr letni 2018/2019

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Wykład 4. Algorytmy i programy. Algorytmy + struktury danych = programy. Niklaus Wirth. Algorytm = logika + sterowanie.

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Elektrotechnika I stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny) Kierunkowy (podstawowy / kierunkowy / inny HES)

Wstęp do programowania. Wykład 1

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

Języki programowania Język programowania Język maszynowy Kod maszynowy

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Programowanie w języku C++

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

Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.

Programowanie obiektowe Wykład 1. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20

Transkrypt:

Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2008/2009 Wykład nr 8 (31.05.2009)

Rok akademicki 2008/2009, Wykład nr 8 2/49 Plan wykładu nr 8 Przykłady języków programowania InŜynieria oprogramowania Struktury w języku C Funkcje w języku C

Rok akademicki 2008/2009, Wykład nr 8 3/49 Asembler (assembly( language) Język programowania niskiego poziomu Powstał na bazie języka maszynowego danego procesora poprzez zastąpienie kodów liczbowych instrukcji kodu maszynowego ich mnemonikami (skrótowy zapis czynności i argumentów w postaci czytelnej dla człowieka) Program napisany w asemblerze jest tłumaczony na kod maszynowy Zazwyczaj jedna instrukcja w asemblerze odpowiada jednemu rozkazowi procesora Składnia języka asemblera zaleŝy od architektury procesora oraz uŝywanego asemblera Tworzenie programu jest dość trudne, ale umoŝliwia programiście pełną kontrolę nad procesorem Programy napisane w asemblerze są bardzo wydajne

Rok akademicki 2008/2009, Wykład nr 8 4/49 Asembler - przykład programu.model SMALL.286.stack 100h.code start: jmp begin handler: pusha push ds pop ds popa iret cli mov [di],ax mov [di+2],cs sti mov ax,3100h mov dx,(offset begin - offset handler) inc dx int 21h end start begin: mov ax,0000h mov ds,ax mov di,0070h lea ax,handler

Rok akademicki 2008/2009, Wykład nr 8 5/49 BASIC (Beginner( All-purpose Symbolic Instruction Code) Prosty, interpretowany język programowania wysokiego poziomu Opracowany w 1964 roku przez J.G. Kemeny ego i T.E. Kurtza w Darthmouth Collage w oparciu o języki Fortran i Algol-60 Popularny w komputerach 8-bitowych (Atari, ZX Spectrum, Amstrad, Commodore) i kalkulatorach programowanych Występował w wielu wersjach dla róŝnych komputerów; dla IBM PC jako: GW BASIC, QB, QuickBasic, Visual Basic Brak typów, w pierwszych wersjach numerowanie instrukcji Przykładowe instrukcje: skoku bezwarunkowego: GOTO wywołania podprogramu: GOSUB RETURN warunkowa: IF THEN (ELSE) iteracyjna: FOR NEXT

Rok akademicki 2008/2009, Wykład nr 8 6/49 BASIC - przykłady programów 10 INPUT "What is your name: ", U$ 20 PRINT "Hello "; U$ 30 INPUT "How many stars: ", N 40 S$ = "" 50 FOR I = 1 TO N 60 S$ = S$ + "*" 70 NEXT I 80 PRINT S$ 90 INPUT More stars? ", A$ 100 IF LEN(A$) = 0 THEN 90 110 A$ = LEFT$(A$, 1) 120 IF A$ = "Y" OR A$ = "y" THEN 30 130 PRINT "Goodbye ";U$ 140 END INPUT "What is your name: ", UserName$ PRINT "Hello "; UserName$ DO INPUT "How many stars: ", NumStars Stars$ = STRING$(NumStars, "*") PRINT Stars$ DO INPUT More stars? ", Answer$ LOOP UNTIL Answer$ <> "" Answer$ = LEFT$(Answer$, 1) LOOP WHILE UCASE$(Answer$) = "Y" PRINT "Goodbye "; UserName$ QuickBasic

Rok akademicki 2008/2009, Wykład nr 8 7/49 C Proceduralny język programowania wysokiego poziomu Został zdefiniowany w 1972 r. przez Dennisa Ritchiego z Bell Laboratories jako język dla systemu Unix działającego na komputerze DEC PDP-11 W C zostało napisane ok. 90% kodu tego systemu i większość programów działających pod jego kontrolą W 1978 roku został opisany w ksiąŝce B.W. Kernighan, D.M. Ritchie: The C Programming Language Po 1980 r. C zyskał popularność jako uniwersalny język programowania Istnieje kilka wersji języka C: K&R C - 1978, ANSI C (C89) - 1989, ISO C (C90) - 1990, C99-1999 Charakterystyczne cechy: zwięzły i elastyczny, ale wymagający duŝej odpowiedzialności od programisty (np. brak wbudowanej kontroli indeksowania tablic)

Rok akademicki 2008/2009, Wykład nr 8 8/49 C++ Obiektowy język programowania zaprojektowany w 1979 roku przez Bjarne a Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych i silną statyczną kontrolę typów Nazwa C++ została zaproponowana w 1983 r., wcześniej uŝywano nazwy C z klasami - ++ pochodzi od nazwy operatora inkrementacji C++ zachowuje pełną zgodność z C na poziomie kodu źródłowego Od 1998 r. obowiązuje standard ISO/IEC 14882:1998 ( Standard for the C++ Programming Language z drobnymi poprawkami z 2003 roku) Od początku występowała i wciąŝ występuje niekompatybilność kompilatorów języka C++ w zakresie obsługiwanej składni C++ nie zmusza programistów do wyboru określonego stylu programowania - w jednym programie moŝna stosować paradygmaty programowania proceduralnego, obiektowego i generycznego (uogólnionego)

Rok akademicki 2008/2009, Wykład nr 8 9/49 C++ Nowe elementy względem języka C: Programowanie obiektowe: mechanizmy enkapsulacji (funkcje składowe, sekcje prywatne, chronione i publiczne, funkcje zaprzyjaźnione), klasy, obiekty, dziedziczenie, metody wirtualne (polimorfizm), konstruktory i destruktory, operatory new i delete, metody i pola statyczne Udogodnienia związane z programowaniem generycznym: szablony (wzorce) klas i funkcji, włączenie do biblioteki standardowej generycznej biblioteki STL Obsługa wyjątków: przechwytywanie wyjątków: try catch, wywoływanie wyjątków: throw Inne: przeciąŝanie funkcji i operatorów, funkcje inline, przestrzenie nazw i operator zasięgu - ::

Rok akademicki 2008/2009, Wykład nr 8 10/49 C++ - przykład programu cpl.h #include <iostream.h> class Complex double Re,Im; public: Complex(double,double ); Complex (void); friend istream & operator >> (istream &, Complex &); friend ostream & operator << (ostream &, Complex &); Complex & operator = (Complex &); friend Complex operator + (Complex &,Complex &); ;

Rok akademicki 2008/2009, Wykład nr 8 11/49 C++ - przykład programu cpl.cpp #include "cpl.h" Complex::Complex(void) Re=0; Im=0; Complex::Complex(double a,double b) Re=a; Im=b; Complex operator + (Complex &c,complex &d) Complex e; e.re=c.re+d.re; e.im=c.im+d.im; return e; Complex & Complex::operator = (Complex &f) Re=f.Re; Im=f.Im; return *this; istream & operator >> (istream &s,complex &g) s >> g.re; s >> g.im; return s; ostream & operator << (ostream &s,complex &g) s << g.re; s << g.im; return s;

Rok akademicki 2008/2009, Wykład nr 8 12/49 C++ - przykład programu main.cpp #include <iostream.h> #include "cpl.h" void main(void) Complex a1,a2,a3(3,4); cout << a3; cin >> a1; cin >> a2; a3 = a1 + a2; cout << a3;

Rok akademicki 2008/2009, Wykład nr 8 13/49 C# Obiektowy język programowania zaprojektowany pod kierunkiem A. Hejlsberga dla firmy Microsoft w 2001 roku Program napisany w C# kompilowany jest do języka CIL (Common Intermediate Language), specjalnego kodu pośredniego wykonywanego w środowisku uruchomieniowym takim jak.net, Mono lub DotGNU C# ma wiele cech wspólnych z językami C++ i Java: obiektowość z hierarchią o jednym elemencie nadrzędnym - kod programu jest zbiorem klas hierarchia dziedziczenia opiera się na istnieniu jednej klasy object (System.object), która stanowi element nadrzędny tej hierarchii odśmiecanie pamięci - zarządzaniem pamięcią zajmuje się środowisko uruchomieniowe typy ogólne: mechanizm podobny do szablonów w C++ Kolejne wersje: C# 2.0 (2005), C# 3.0 (2007)

Rok akademicki 2008/2009, Wykład nr 8 14/49 C# - przykład programu using System; public class PrzykladowaKlasa public static void Main() string imie; Console.WriteLine("Podaj swoje imie:"); imie=console.readline(); Console.WriteLine("Twoje imie to: " + imie); Console.ReadKey();

Rok akademicki 2008/2009, Wykład nr 8 15/49 Fortran (FORmula( TRANslator) Język programowania stworzony w latach 50-tych, ale nadal stosowany Pierwszy kompilator Fortranu był jednocześnie pierwszym w historii kompilatorem języka wysokiego poziomu Standardy języka: Fortran IV (1960), Fortran 66, Fortran 77, Fortran 90, Fortran 95, Fortran 2003, Fortran 2008 Głównym zastosowaniem języka Fortran są obliczenia naukowoinŝynierskie (w szczególności obliczenia numeryczne) Dysponuje ogromną liczbę bibliotek, które pozwalają rozwiązać praktycznie kaŝde zadanie numeryczne O obecnym zastosowaniu Fortranu decydują: szybkość obliczeń oraz wysoka wydajność kodu generowanego przez kompilatory Inne cechy: znakomita skalowalność, przenośność oprogramowania, dostępność bibliotek do programowanie wieloprocesorowego i równoległego (MPI, PVM)

Rok akademicki 2008/2009, Wykład nr 8 16/49 Fortran - przykład programu program oblicz_srednia parameter (MaxX=1000) dimension x(maxx) character*80 plik_danych write (*,'(a,$)') "Podaj nazwe pliku danych... " 10 read (*,'(a)') plik_danych open (1,file=plik_danych,status="old",err=20) goto 30 20 write (*,*) & "Blad - ten plik nie istnieje. Podaj nazwe jeszcze raz." goto 10 30 continue read (1,*) N do i=1,n read (1,*) x(i) enddo suma = 0.0 do i=1,n suma = suma+x(i) enddo srednia = suma/n write (*,*) "Srednia wynosi",srednia stop end

Rok akademicki 2008/2009, Wykład nr 8 17/49 Pascal Opracowany w 1970 r. przez Niklausa Wirtha Szczyt popularności przypadał na lata 80-te i początek lat 90-tych Pierwotnie słuŝył celom edukacyjnym do nauki programowania strukturalnego - z tego powodu jest jednym z najszerzej znanych i popularnych języków, zwłaszcza wśród początkujących programistów Jego zastosowanie w praktyce jest obecnie bardzo ograniczone Język wysokiego poziomu, ogólnego zastosowania, oparty na Algolu Zalety: czytelność, zwięzłość kodu, rygorystyczna kontrola typów danych Jedną z popularniejszych implementacji kompilatorów tego języka był Turbo Pascal firmy Borland International Obecnie w środowiskach Delphi i Kyliks stosowany jest Object Pascal

Rok akademicki 2008/2009, Wykład nr 8 18/49 Turbo Pascal Version 7.0 - Borland International Inc.. (1992)

Rok akademicki 2008/2009, Wykład nr 8 19/49 Pascal program funkcja; var delta, x1, x2 : real; var a, b, c : real; begin writeln ('Podaj wspolczynniki a, b, c trojmianu kwadratowego: '); readln (a, b, c); delta := (b * b) - (4 * a * c); writeln ('Delta = ', delta); if delta < 0 then writeln('brak MIEJSC ZEROWYCH FUNKCJI!') else if delta > 0 then begin x1 := ((- b) - sqrt(delta)) / (2 * a); x2 := ((- b) + sqrt(delta)) / (2 * a); writeln('x1 = ', x1); writeln('x2 = ', x2); end else begin x1 := (- b) / (2 * a); writeln('x1 = ', x1); end; end.

Rok akademicki 2008/2009, Wykład nr 8 20/49 Java Obiektowy język programowania stworzony przez grupę roboczą pod kierunkiem Jamesa Goslinga z firmy Sun Microsystems Język tworzenia programów źródłowych kompilowanych do kodu bajtowego, czyli do postaci wykonywanej przez maszynę wirtualną Podstawowe koncepcje przejęte zostały z języka Smalltalk i C++: obiektowość, niezaleŝność od architektury, sieciowość i obsługa programowania rozproszonego, niezawodność i bezpieczeństwo Java składa się z szeregu klas definiujących obiekty róŝnego typu; klasy te pogrupowane są w hierarchicznie ułoŝone pakiety Podstawowy zestaw klas rozprowadzany jako Java występuje w dwóch wersjach - JRE i JDK: JRE (Java Runtime Environment) - udostępnia bytecode wszystkich klas standardowych i wirtualną maszynę do ich uruchamiania JDK (Java Development Kit) - dodatkowo udostępnia źródła klas oraz dodatkowe narzędzia jak kompilator, paker czy debuger

Rok akademicki 2008/2009, Wykład nr 8 21/49 Java - przykład programu class Person public String firstname, lastname; public int year; public String PESEL; public class Proba public static void main(string[] args) Person p, q, r; p = new Person(); q = new Person(); r = new Person(); p.firstname = "Jan"; p.lastname = "Kowalski"; p.year = 1981; p.pesel = "81111224350"; System.out.println( p.firstname + " " + p.lastname + ", " + p.year + ", PESEL: " + p.pesel );

Rok akademicki 2008/2009, Wykład nr 8 22/49 Środowiska programistyczne - Borland C++ Builder 6

Rok akademicki 2008/2009, Wykład nr 8 23/49 Środowiska programistyczne - Borland Turbo C++

Rok akademicki 2008/2009, Wykład nr 8 24/49 Środowiska programistyczne - Microsoft Visual C++ 6.0

Rok akademicki 2008/2009, Wykład nr 8 25/49 InŜynieria oprogramowania InŜynieria oprogramowania - zajmuje się określaniem i wprowadzaniem do uŝytku rozsądnych zasad i metod inŝynierskich w celu uzyskania, w sposób ekonomiczny niezawodnego i działającego na komputerze oprogramowania Obszary zainteresowania: niezawodność oprogramowania - jak pisać niezawodne programy zarządzanie projektem oprogramowania produktywność programisty

Rok akademicki 2008/2009, Wykład nr 8 26/49 Cykl Ŝycia oprogramowania Analiza potrzeb (specyfikacja) - zebranie potrzebnych informacji, przyszłych uŝytkowników systemu dla ustalenia zgodności celów systemu z celami uŝytkownika oraz przepływów informacyjnych w zinformatyzowanym systemie

Rok akademicki 2008/2009, Wykład nr 8 27/49 Cykl Ŝycia oprogramowania Projektowanie - wyodrębnienie a następnie opis modelu danych i modelu procesów (statyka i dynamika); propozycje rozwiązania problemów uŝytkownika

Rok akademicki 2008/2009, Wykład nr 8 28/49 Cykl Ŝycia oprogramowania Implementacja - zaprojektowanie struktur danych i napisanie programów realizujących procesy

Rok akademicki 2008/2009, Wykład nr 8 29/49 Cykl Ŝycia oprogramowania Testowanie - wykrywanie i usuwanie błędów zawartych w kodzie systemu informatycznego przy pomocy danych symulowanych i rzeczywistych

Rok akademicki 2008/2009, Wykład nr 8 30/49 Cykl Ŝycia oprogramowania Pielęgnacja (ewolucja) - usuwanie błędów wykrytych w czasie eksploatacji systemu oraz jego udoskonalenie (w moŝliwym zakresie)

Rok akademicki 2008/2009, Wykład nr 8 31/49 Cykl Ŝycia oprogramowania Nakład pracy w cyklu tworzenia oprogramowania 6% 5% 67% 7% 15% Analiza potrzeb Projektowanie Implementacja Testowanie Pielęgnacja

Rok akademicki 2008/2009, Wykład nr 8 32/49 Cykl Ŝycia oprogramowania Źródła błędów 7% 10% 27% 56% Analiza potrzeb Projektowanie Implementacja Inne

Rok akademicki 2008/2009, Wykład nr 8 33/49 Cykl Ŝycia oprogramowania Koszty poprawienia błędów 4% 13% 1% 82% Analiza potrzeb Projektowanie Implementacja Inne

Rok akademicki 2008/2009, Wykład nr 8 34/49 Struktury w języku j C struktura jest zestawem elementów róŝnych typów, zgrupowanych pod jedną nazwą, słuŝą zatem do reprezentacji złoŝonych obiektów róŝnych danych ogólna postać deklaracji struktury jest następująca: struct nazwa opis_pola_1; opis_pola_2;... opis pola_n; ; deklaracja struktury rozpoczyna się od słowa kluczowego struct, po którym moŝe występować opcjonalna nazwa struktury (etykieta struktury) pomiędzy nawiasami klamrowymi umieszczone są pola struktury (komponenty, składowe), mające taką samą postać jak deklaracje zmiennych w programie w deklaracji struktury muszą występować wszystkie nawiasy klamrowe i średniki

Rok akademicki 2008/2009, Wykład nr 8 35/49 Struktury w języku j C Przykłady: struct punkt int x; int y; ; struct osoba char imie[20]; char nazwisko[30]; int wiek; int wzrost,waga; ; struct int a,b,c; float d,e; ; pola jednego typu moŝna łączyć przecinkami nazwy pól struktury mogą być takie same jak nazwy innych zmiennych w programie, a nawet takie same jak nazwa struktury deklarując strukturę wprowadzamy nowy typ danych (np. struct punkt), którym moŝna posługiwać się tak samo jak kaŝdym innym typem standardowym

Rok akademicki 2008/2009, Wykład nr 8 36/49 Struktury w języku j C po klamrze kończącej listę pól struktury moŝe występować lista zmiennych, np. struct osoba char imie[20]; char nazwisko[30]; int wiek; Kowalski, Nowak; - Kowalski i Nowak są zmiennymi typu struct osoba w przypadku deklaracji, po której nie występuje lista zmiennych, nie następuje przydział pamięci. Jeśli podana została nazwa struktury, to zmienne moŝna zadeklarować później, np. struct osoba char imie[20]; char nazwisko[30]; int wiek; ; struct osoba Kowalski, Nowak;

Rok akademicki 2008/2009, Wykład nr 8 37/49 Struktury w języku j C - odwołania do pól p l struktury dostęp do pól struktury moŝliwy jest dzięki konstrukcji typu: nazwa_struktury.nazwa_pola zapisanie wartości 25 do pola wiek zmiennej strukturalnej Kowalski ma postać: Kowalski.wiek = 25; operator kropki nazywany jest operatorem bezpośredniego wyboru pola w przypadku, gdy zmienna strukturalna jest wskaźnikiem, to do odwołania do pola struktury uŝywamy operatora pośredniego wyboru pola (->), np. struct osoba Nowak, *Nowak1; Nowak1 = &Nowak Nowak1 -> wiek = 25; lub (*Nowak1).wiek = 25; w ostatnim zapisie nawiasy są konieczne, gdyŝ operator. ma wyŝszy priorytet niŝ operator *

Rok akademicki 2008/2009, Wykład nr 8 38/49 Przykład nr 1 - struktury w języku j C #include <stdio.h> #include <conio.h> struct osoba char imie[15]; char nazwisko[20]; int wiek; ; Imie: Jan Nazwisko: Kowalski Wiek: 25 Jan Kowalski, wiek: 25 int main() struct osoba Nowak; printf("imie: "); scanf("%s",nowak.imie); printf("nazwisko: "); scanf("%s",nowak.nazwisko); printf("wiek: "); scanf("%d",&nowak.wiek); printf("%s %s, wiek: %d\n",nowak.imie,nowak.nazwisko,nowak.wiek); getch(); return 0;

Rok akademicki 2008/2009, Wykład nr 8 39/49 Funkcje w języku j C w programie w języku C zawsze występuje co najmniej jedna funkcja - main() od funkcji main() rozpoczyna się wykonanie całego programu oprócz niej mogą występować takŝe inne funkcje zdefiniowane przez uŝytkownika ogólna struktura funkcji w języku C jest następująca:

Rok akademicki 2008/2009, Wykład nr 8 40/49 Funkcje w języku j C Przykład: #include <stdio.h> float add(float a, float b) float y; y = a + b; return y; int main() float x1=10.0, x2=20.0, wynik; wynik = add(x1,x2); printf("wynik = %f\n", wynik); return 0; wykonanie programu rozpoczyna się od funkcji main() gdy dochodzimy do wywołania funkcji add(), to sterowanie przekazywane jest do pierwszej jej instrukcji do funkcji add() przekazywane są dwa parametry typu float pierwszy parametr (a) otrzymuje wartość pierwszego parametru wywołania funkcji (x1), natomiast drugi parametr (b) - wartość drugiego parametru wywołania funkcji (x2)

Rok akademicki 2008/2009, Wykład nr 8 41/49 Funkcje w języku j C Przykład: #include <stdio.h> float add(float a, float b) float y; y = a + b; return y; int main() float x1=10.0, x2=20.0, wynik; wynik = add(x1,x2); printf("wynik = %f\n", wynik); return 0; powrót z funkcji (do miejsca zaraz po jej wywołaniu) następuje na skutek wykonania instrukcji return wartość zwracana przez funkcję podstawiana jest pod zmienną wynik po słowie return moŝe występować dowolne wyraŝenie wyraŝenie to często umieszczane jest w nawiasach, ale nie jest to konieczne

Rok akademicki 2008/2009, Wykład nr 8 42/49 Funkcje w języku j C funkcję add() moŝna zapisać w prostszy sposób: float add(float a, float b) return (a+b); w wywołaniu funkcji jako parametry mogą występować zmienne, wyraŝenia arytmetyczne lub stałe liczbowe, np. wynik = add(10,20); wynik = add(x1*20+4,x1/x2);

Rok akademicki 2008/2009, Wykład nr 8 43/49 Funkcje w języku j C istnieją funkcje, które nie zwracają Ŝadnej wartości, wtedy jako typ zwracanego wyniku podajemy void, np. void drukuj(int a) printf( Liczba a wynosi: %d \n,a); return; wywołanie powyŝszej funkcji w programie: drukuj(-10); powyŝsza funkcja nie zwraca Ŝadnego wyniku więc wystarczy samo słowo return jeśli funkcja nie zwraca wyniku i nie ma w jej ciele return to sterowanie wraca do punktu wywołania na skutek zakończenia wykonania wszystkich instrukcji w bloku funkcyjnym

Rok akademicki 2008/2009, Wykład nr 8 44/49 Funkcje w języku j C mogą istnieć funkcje, do których nie przekazujemy Ŝadnych parametrów formalnych, np. void linia() printf( ----------\n ); void linia(void) printf( ----------\n ); wywołanie powyŝszej funkcji w programie: linia(); jeśli w nagłówku funkcji nie zostanie podany typ zwracanej wartości, to domyślnie jest to typ int linia(void) printf( ----------\n );

Rok akademicki 2008/2009, Wykład nr 8 45/49 Umieszczanie definicji funkcji w programie definicje funkcji moŝna umieszczać w dowolnym miejscu programu (przed lub po main), ale zasięg widzialności funkcji rozpoczyna się od miejsca jej deklaracji jeśli chcemy umieścić definicję funkcji po funkcji main, czyli po jej wywołaniu, to musimy wcześniej podać jej formalną deklarację czyli prototyp #include... void fun(int a, int b); int main()... fun(a,b);... void fun (int a, int b)... #include... void fun (int a, int b)... int main()... fun(a,b);...

Rok akademicki 2008/2009, Wykład nr 8 46/49 Prototyp funkcji w poprzednim przykładzie, w programie po lewej stronie, funkcja fun zdefiniowana jest po funkcji main, dlatego przed funkcją main umieszczony jest jej prototyp: void fun(int a, int b); lub void fun(int, int); prototyp opisuje to samo co nagłówek funkcji, ale kończy się średnikiem w prototypie nie musimy podawać nazw argumentów formalnych - wystarczą tylko typy podanie nazw argumentów ma jednak znaczenie dla czytelności programu dzięki prototypom kompilator ma moŝliwość sprawdzenia zgodności typów formalnych i faktycznych

Rok akademicki 2008/2009, Wykład nr 8 47/49 Koniec wykładu nr 8 Dziękuj kuję za uwagę!

Rok akademicki 2008/2009, Wykład nr 8 48/49 Źródła a (Internet): http://pl.wikipedia.org/wiki/asembler - Asembler http://wazniak.mimuw.edu.pl/index.php?title=programowanie_niskopoziomowe - Materiały dydaktyczne MIMUW na studia informatyczne I stopnia http://pl.wikipedia.org/wiki/basic - BASIC http://pl.wikipedia.org/wiki/c_(język_programowania) - C (język programowania) http://pl.wikipedia.org/wiki/c%2b%2b - C++ http://pl.wikipedia.org/wiki/c_sharp - C# http://pl.wikipedia.org/wiki/fortran - Fortran http://pl.wikipedia.org/wiki/pascal_(język_programowania) Pascal http://pl.wikipedia.org/wiki/java - Java

Rok akademicki 2008/2009, Wykład nr 8 49/49 Źródła a (Internet): http://en.wikipedia.org/wiki/assembly_language - Assembly language http://en.wikipedia.org/wiki/x86_assembly_language - The assembly language for common Intel 80x86 microprocessors http://en.wikipedia.org/wiki/basic - BASIC http://en.wikipedia.org/wiki/c_language - C (programming language) http://en.wikipedia.org/wiki/c%2b%2b - C++ http://en.wikipedia.org/wiki/c_sharp_(programming_language) C# http://en.wikipedia.org/wiki/fortran - Fortran http://en.wikipedia.org/wiki/pascal_(programming_language) Pascal http://en.wikipedia.org/wiki/java - Java