dr inż. Jarosław Forenc

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

dr inż. Jarosław Forenc

Konsultacje: dr inż. Jarosław Forenc

dr inż. Jarosław Forenc

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 ( ) 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. language) Asembler - przykład programu

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc

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

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

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

dr inż. Jarosław Forenc

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Języki i paradygmaty programowania

Wykład 8: klasy cz. 4

Podstawy Programowania

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

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

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

Java EE produkcja oprogramowania

Wstęp do programowania. Wykład 1

PROGRAMOWANIE OBIEKTOWE W C++ - cz 1. Definicja klasy, składniki klasy, prawa dost pu, definiowanie funkcji składowych, konstruktory i destruktory.

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

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

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

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28

Paostwowa Wyższa Szkoła Zawodowa w Płocku Dariusz Wardowski

Podstawy programowania. Wykład: 12. Struktury, unie, pola bitowe. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

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

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

Podstawy algorytmiki i programowania - wykład 4 C-struktury

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

Spis treści PROGRAMOWANIE OBIEKTOWE W JĘZYKU C++: KLASY I OBIEKTY, DANE I FUNKCJE SKŁADOWE, PRAWA DOSTĘPU, KONSTRUKTORY I DESTRUKTORY.

Technologie cyfrowe semestr letni 2018/2019

Wykład 5: Klasy cz. 3

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 25 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 38

Podstawy programowania wykład

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

Praktyka Programowania

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

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

Podstawy Programowania Obiektowego

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

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

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

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

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

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw

Podstawy programowania. Wprowadzenie

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

Podstawy Programowania. Wykład 1

Język ludzki kod maszynowy

Podstawy programowania skrót z wykładów:

Java jako język programowania

Język programowania PASCAL

Tworzenie aplikacji w języku Java

Programowanie w języku Python. Grażyna Koba

Technologie cyfrowe semestr letni 2018/2019

Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com

Zaliczenie przedmiotu:

I - Microsoft Visual Studio C++

Spis treści OPERACJE WEJŚCIA-WYJŚCIA W JĘZYKU C++. STEROWANIE FORMATEM, MANIPULATORY. Informatyka 2

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

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

PRZEWODNIK PO PRZEDMIOCIE

Podstawy programowania - 1

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

Wstęp do Informatyki. Program, proces tworzenia programu Środowisko programistyczne Języki programowania

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

Laboratorium 1 - Programowanie proceduralne i obiektowe

Programowanie obiektowe zastosowanie języka Java SE

Część 4 życie programu

Programowanie obiektowe

dr inż. Jarosław Forenc

Spis treści PROGRAMOWANIE OBIEKTOWE W JĘZYKU C++: FUNKCJE ZAPRZYJAŹNIONE Z KLASĄ, PRZEŁADOWANIE OPERATORÓW. Informatyka 2

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Podstawy programowania w języku C

Wstęp do programowania

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

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

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

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

Programowanie komputerów

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

Wykład 1

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35

Microsoft IT Academy kurs programowania

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

Techniki Programowania

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

Operacje wejścia/wyjścia odsłona pierwsza

Języki programowania zasady ich tworzenia

Wstęp do Programowania 2

Podstawy programowania (1)

Transkrypt:

Rok akademicki 2011/2012, Wykład nr 1 2/55 Dane podstawowe Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2011/2012 Wykład nr 1 (21.10.2011) dr inż. Jarosław Forenc dr inż. Jarosław Forenc Politechnika Białostocka, Wydział Elektryczny, Katedra Elektrotechniki Teoretycznej i Metrologii ul. Wiejska 45D, 15-351 Białystok WE-204 e-mail: j.forenc@pb.edu.pl tel. (0-85) 746-93-97 http://we.pb.edu.pl/~jforenc Dydaktyka - dodatkowe materiały do pracowni Konsultacje: Poniedziałek, godz. 11:30-12:30, WE-204 Środa, godz. 10:30-11:30, WE-204 Czwartek, godz. 12:00-13:00, WE-204 Piątek, godz. 16:00-16:45, WE-204 (zaoczne) Sobota, godz. 13:15-14:00, WE-204 (zaoczne) Rok akademicki 2011/2012, Wykład nr 1 3/55 Rok akademicki 2011/2012, Wykład nr 1 4/55 Przedmiot Informatyka 1 i Informatyka 2 Informatyka 1 semestr II wykład: 20 godz. (J. Forenc) pracownia specjalistyczna: 30 godz. (A. Choroszucho, J. Forenc) ECTS: 6 pkt. kod przedmiotu: EZ1A200 010 Informatyka 2 semestr III wykład: 10 godz. (J. Forenc) pracownia specjalistyczna: 30 godz. (A. Choroszucho, J. Forenc) ECTS: 4 pkt. kod przedmiotu: EZ1A300 014 Program wykładu (1/2) 1. Programowanie obiektowe w języku C++. Operacje wejścia-wyjścia. Klasy i obiekty. Składniki klasy: dane i funkcje. Prawa dostępu do składników klasy. Definiowanie funkcji składowych klasy. Konstruktory i destruktory. Przeładowanie operatorów. Dziedziczenie. Funkcje wirtualne. 2. Wskaźniki, operacje na wskaźnikach, wskaźniki i tablice. Dynamiczny przydział pamięci. Dynamiczne struktury danych: stos, kolejka, lista. Przykłady zastosowań. 3. Operacje na wektorach i macierzach. Mnożenie macierzy, normy wektorów i macierzy, wyznacznik macierzy.

Rok akademicki 2011/2012, Wykład nr 1 5/55 Rok akademicki 2011/2012, Wykład nr 1 6/55 Program wykładu (2/2) 4. Sortowanie. Klasyfikacje algorytmów sortowania. Algorytmy sortowania: przez proste wstawianie, przez proste wybieranie, bąbelkowe, szybkie (Quick-Sort). 5. System operacyjny. Funkcje i zadania systemu operacyjnego. Zarządzanie procesami, pamięcią (stronicowanie, segmentacja, pamięć wirtualna) i dyskami. Struktura i właściwości systemów Windows i Linux. 6. Sieci komputerowe. Technologie, protokoły, urządzenia. Zasada działania sieci Internet. 7. Relacyjne bazy danych. Podstawowe pojęcia, organizacja i zasady wykorzystania. Literatura (1/4) Programowanie w C/C++: 1. B.W. Kernighan, D.M. Ritchie: Język ANSI C. Programowanie. Wydanie II. Helion, Gliwice, 2010. 2. J. Grębosz: Symfonia C++ standard: programowanie w języku C++ orientowane obiektowo. Tom 1 i 2. Wydawnictwo Edition 2000, Kraków, 2008. 3. B. Stroustrup: Programowanie. Teoria i praktyka z wykorzystaniem C++. Helion, Gliwice, 2010. 4. J. Liberty, S. Rao, B.L. Jones: C++ dla każdego. Wydanie II. Helion, Gliwice, 2010. 5. B. Eckel: Thinking in C++. Edycja polska. Helion, Gliwice, 2002. 6. S. Prata: Język C++. Szkoła programowania. Wydanie V. Helion, Gliwice, 2006. Rok akademicki 2011/2012, Wykład nr 1 7/55 Rok akademicki 2011/2012, Wykład nr 1 8/55 Literatura (2/4) Metody numeryczne: 1. D. Kincaid, W. Cheney: Analiza numeryczna. WNT, Warszawa, 2006. Algorytmy i struktury danych: 1. T.H. Cormen i in.: Wprowadzenie do algorytmów. WNT, Warszawa, 2007. 2. P. Wróblewski: Algorytmy, struktury danych i techniki programowania. Wydanie IV. Helion, Gliwice, 2009. 3. N. Wirth: Algorytmy + struktury danych = programy. WNT, Warszawa, 2004 Literatura (3/4) Systemy operacyjne: 1. A.S. Tanenbaum: Systemy operacyjne. Wydanie III. Helion, Gliwice, 2010. 2. A. Silberschatz i in.: Podstawy systemów operacyjnych. WNT, Warszawa, 2006. 3. W. Stallings: Systemy operacyjne. Struktura i zasady budowy. Mikom, Warszawa, 2006. Sieci komputerowe: 1. K. Krysiak: Sieci komputerowe. Kompendium. Wydanie II. Helion, Gliwice, 2005

Rok akademicki 2011/2012, Wykład nr 1 9/55 Rok akademicki 2011/2012, Wykład nr 1 10/55 Literatura (4/4) Zaliczenie wykładu Bazy danych: 1. H. Garcia-Molina i in.: Systemy baz danych. Pełny wykład. WNT, Warszawa, 2006. 2. M. Whitehorn, B. Marklyn: Relacyjne bazy danych. Helion. Gliwice, 2003. Kolokwium pisemne: Termin zaliczenia: 13.01.2012 (na wykładzie) Zaliczenie poprawkowe: 27.01.2012 (na wykładzie) Przykładowe pytania testowe: na stronie www - koniec grudnia 2011 Zaliczenie wykładu a zaliczenie pracowni: zaliczenie pracowni na ocenę 4+ lub 5 uprawnia do przepisania oceny jako zaliczenia wykładu przy przepisywaniu ocena jest obniżana o pół stopnia: tzn. 4+ 4, 5 4+ Rok akademicki 2011/2012, Wykład nr 1 11/55 Rok akademicki 2011/2012, Wykład nr 1 12/55 Terminy zajęć Plan wykładu nr 1 (Informatyka 1 - dokończenie) Wykład nr 1-21.10.2011 Wykład nr 2-18.11.2011 Wykład nr 3-09.12.2011 Wykład nr 4-13.01.2012 (zaliczenie) Wykład nr 5-27.01.2012 (zaliczenie poprawkowe) Języki programowania kompilowane i interpretowane języki programowania generacje języków programowania przykłady języków: asembler, Fortran, BASIC, Pascal, Java, C#

Rok akademicki 2011/2012, Wykład nr 1 13/55 Rok akademicki 2011/2012, Wykład nr 1 14/55 Język programowania Język programowania Język programowania jest to usystematyzowany sposób przekazywania komputerowi poleceń do wykonania Język programowania pozwala na dokładny zapis algorytmów oraz innych zadań jakie komputer ma wykonać Dane + algorytm Symbole Składnia języka określa: sposób opisywania struktur sterujących sposób opisywania struktur danych sposób tworzenia poprawnych symboli do nazywania zmiennych i struktur danych sposób stosowania interpunkcji, tj. znaków typu spacje, średniki, kropki, nawiasy sposób budowy poprawnych wyrażeń Język programowania Słowa kluczowe Składnia Semantyka Semantyka języka określa znaczenie poprawnych składniowo wyrażeń Program Rok akademicki 2011/2012, Wykład nr 1 15/55 Rok akademicki 2011/2012, Wykład nr 1 16/55 Język programowania Język programowania Implementacja języka - konkretna realizacja języka dla maszyn określonego typu Program komputerowy - zbiór (ciąg) instrukcji opisujących zadanie, które ma wykonać komputer Kod źródłowy - postać programu wyrażona w języku programowania Przetwarzanie kodu źródłowego odbywa się na dwa sposoby kompilacja (kompilowane języki programowania) interpretacja (interpretowane języki programowania) Kompilacja: Kod źródłowy jest tłumaczony do postaci kodu maszynowego (sekwencji operacji gotowych do przetworzenia przez procesor) Kompilacja do kodu maszynowego zapewnia najwyższą wydajność Wygenerowany kod jest ściśle powiązany z platformą sprzętową Przykłady kompilowanych języków programowania: C C++ Pascal Fortran

Rok akademicki 2011/2012, Wykład nr 1 17/55 Rok akademicki 2011/2012, Wykład nr 1 18/55 Język programowania Generacje języków programowania Interpretacja: Kod źródłowy jest na bieżąco tłumaczony i wykonywany przez dodatkowy program zwany interpreterem Zapewnia większą przenośność programów, które są często niezależne od platformy i systemu operacyjnego Programy w językach interpretowanych są mniej wydajne niż w językach kompilowanych Przykłady interpretowanych języków programowania: Java C# Perl Python Ruby Generacje języków opisują zaawansowanie (rozbudowanie) struktury języka, co jest równocześnie związane z łatwością posługiwania się nimi im mniejsza liczba oznaczająca generację języka tym bardziej jest on zbliżony do sprzętu im większa generacja języka tym jest on bardziej intuicyjny i niezależny od sprzętu Rok akademicki 2011/2012, Wykład nr 1 19/55 Rok akademicki 2011/2012, Wykład nr 1 20/55 Języki programowania Języki programowania Istnieje około 2500 języków programowania http://www.oreilly.com/pub/a/oreilly/news/languageposter_0504.html (do 2004 roku) http://www.oreilly.com/pub/a/oreilly/news/languageposter_0504.html (do 2004 roku)

Rok akademicki 2011/2012, Wykład nr 1 21/55 Rok akademicki 2011/2012, Wykład nr 1 22/55 TIOBE Programming Community Index (Oct 2011) 1) TIOBE Programming Community Index (Oct 2011) 1) Position Oct 2011 Position Oct 2010 Programming Language Ratings Oct 2011 Delta Oct 2010 Position Oct 2011 Position Oct 2010 Programming Language Ratings Oct 2011 Delta Oct 2010 1 1 Java 17.913% -0.25% 2 2 C 17.707% +0.53% 3 3 C++ 9.072% -0.73% 4 4 PHP 6.818% -1.51% 5 6 C# 6.723% +1.76% 6 8 Objective-C 6.245% +2.54% 7 5 (Visual) Basic 4.549% -1.10% 8 7 Python 3.944% -0.92% 9 9 Perl 2.432% +0.12% 10 11 JavaScript 2.191% +0.53% http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html 11 10 Ruby 1.526% -0.41% 12 12 Delphi/Object Pascal 1.104% -0.45% 13 13 Lisp 1.031% -0.05% 14 14 Transact-SQL 0.909% +0.09% 15 23 PL/SQL 0.903% +0.30% 16 24 Lua 0.802% +0.25% 17 16 RPG (OS/400) 0.757% +0.05% 18 15 Pascal 0.721% -0.05% 19 - Assembly* 0.622% - 20 17 Ada 0.609% -0.09% http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html Rok akademicki 2011/2012, Wykład nr 1 23/55 Rok akademicki 2011/2012, Wykład nr 1 24/55 TIOBE Programming Community Index (Oct 2011) 1) 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 Program 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 2011/2012, Wykład nr 1 25/55 Rok akademicki 2011/2012, Wykład nr 1 26/55 Asembler - przykład programu Fortran (FORmula TRANslator).model SMALL.286.stack 100h.code start: jmp begin handler: pusha push ds pop ds popa iret begin: mov ax,0000h mov ds,ax mov di,0070h lea ax,handler cli mov [di],ax mov [di+2],cs sti mov ax,3100h mov dx,(offset begin - offset handler) inc dx int 21h end start 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 Rok akademicki 2011/2012, Wykład nr 1 27/55 Rok akademicki 2011/2012, Wykład nr 1 28/55 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 BASIC (Beginner All-purpose Symbolic Instruction Code) 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 2011/2012, Wykład nr 1 29/55 Rok akademicki 2011/2012, Wykład nr 1 30/55 BASIC - przykłady programów Pascal 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 Język wysokiego poziomu, ogólnego zastosowania, oparty na Algolu, 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 Zastosowanie w praktyce jest obecnie ograniczone Zalety: czytelność, zwięzłość kodu, rygorystyczna kontrola typów Jedną z popularniejszych implementacji kompilatorów tego języka był Turbo Pascal firmy Borland International Rok akademicki 2011/2012, Wykład nr 1 31/55 Rok akademicki 2011/2012, Wykład nr 1 32/55 Turbo Pascal Version 7.0 - Borland Inter. Inc. (1992) 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 2011/2012, Wykład nr 1 33/55 Rok akademicki 2011/2012, Wykład nr 1 34/55 Java Java - przykład programu Obiektowy język programowania stworzony przez grupę roboczą pod kierunkiem Jamesa Goslinga z firmy Sun Microsystems Programy źródłowe kompilowane są do kodu bajtowego, czyli do postaci wykonywanej przez maszynę wirtualną Podstawowe koncepcje przejęte zostały z języka Smalltalk i C++ 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 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 2011/2012, Wykład nr 1 35/55 Rok akademicki 2011/2012, Wykład nr 1 36/55 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 C# ma wiele cech wspólnych z językami C++ i Java Kolejne wersje: C# 2.0 (2005), C# 3.0 (2007), C# 4.0 (2010) 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 2011/2012, Wykład nr 1 37/55 Rok akademicki 2011/2012, Wykład nr 1 38/55 Plan wykładu nr 1 (Informatyka 2) Struktury w języku C Struktury w języku C Operacje wejścia-wyjścia w języku C++ Programowanie obiektowe w języku C++ definicja klasy, składniki klasy: dane i funkcje prawa dostępu do składników klasy Struktura - zestaw elementów różnych typów, zgrupowanych pod jedną nazwą Deklaracja struktury rozpoczyna się od słowa kluczowego struct, po którym zazwyczaj występuje nazwa struktury (etykieta) Pomiędzy nawiasami klamrowymi umieszczone są pola struktury (komponenty, składowe), mające taką samą postać jak deklaracje zmiennych w programie struct nazwa opis_pola_1; opis_pola_2;... opis pola_n; W deklaracji struktury muszą występować nawiasy klamrowe i średniki Rok akademicki 2011/2012, Wykład nr 1 39/55 Rok akademicki 2011/2012, Wykład nr 1 40/55 Struktury w języku C Struktury w języku C 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 struct punkt int x; int y; struct czas int h, m, s; struct osoba char imie[20]; char nazwisko[30]; int wiek, waga; Po klamrze kończącej listę pól struktury może występować deklaracja zmiennych strukturalnych Kowal 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 struct osoba char imie[20]; char nazwisko[30]; int wiek; Kowal, Nowak; struct osoba char imie[20]; char nazwisko[30]; int wiek; int main() struct osoba Kowal; struct osoba Nowak;...

Rok akademicki 2011/2012, Wykład nr 1 41/55 Rok akademicki 2011/2012, Wykład nr 1 42/55 Struktury w języku C Struktury w języku C Dostęp do pól struktury możliwy jest dzięki konstrukcji typu: nazwa_struktury.nazwa_pola Gdy zmienna strukturalna jest wskaźnikiem, to do odwołania do pola struktury używamy operatora pośredniego wyboru pola (->) Operator. nazywany jest operatorem bezpośredniego wyboru pola struct osoba Nowak, *Nowak1; Nowak1 = &Nowak Nowak1 -> wiek = 25; Zapisanie wartości 25 do pola wiek zmiennej Nowak ma postać /* lub */ (*Nowak1).wiek = 25; Nowak.wiek = 25; Zapisanie wartości Jan do pola imie zmiennej Nowak ma postać W ostatnim zapisie nawiasy są konieczne, gdyż operator. ma wyższy priorytet niż operator * strcpy(nowak.wiek,"jan"); Rok akademicki 2011/2012, Wykład nr 1 43/55 Rok akademicki 2011/2012, Wykład nr 1 44/55 Struktury w języku C - przykład #include <stdio.h> #include <math.h> struct punkt float x, y; int main() struct punkt p1; struct punkt p2 = 6.0,3.0 float odl1, odl2; p1.x = 5.0; p1.y = 4.0; odl1 = sqrt(p1.x*p1.x + p1.y*p1.y); odl2 = sqrt(p2.x*p2.x + p2.y*p2.y); Deklaracja struktury punkt Deklaracja zmiennej strukturalnej printf("odleglosc pkt. nr 1 od poczatku ukladu wsp.: %f\n",odl1); printf("odleglosc pkt. nr 2 od poczatku ukladu wsp.: %f\n",odl2); return 0; Deklaracja zmiennej strukturalnej wraz z inicjalizacją Operacje wejścia-wyjścia wyjścia w języku C++ Operacje wejścia-wyjścia nie są zdefiniowane w języku C++ Operacje te umożliwiają biblioteki standardowo dołączane przez producenta kompilatora: stdio (język C) stream (stara wersja iostream) iostream Strumienie: Wprowadzanie i wyprowadzanie informacji można potraktować jako strumień bajtów płynących od źródła do ujścia Strumienie w C++ realizowane są na zasadzie klas Wykorzystanie strumieni wymaga dołączenia pliku nagłówkowego: #include <iostream> zamiast #include <stdio.h>

Rok akademicki 2011/2012, Wykład nr 1 45/55 Rok akademicki 2011/2012, Wykład nr 1 46/55 Operacje wejścia-wyjścia wyjścia w języku C++ Operacje wejścia-wyjścia wyjścia w języku C++ Predefiniowane strumienie w C++: cout - związany ze standardowym urządzeniem wyjścia (ekran), skrót od ang. C-onsole OUT-put cin - związany ze standardowym urządzeniem wejścia (klawiatura), skrót od ang. C-onsole IN-put cerr- związany ze standardowym urządzeniem, na które chce się wypisywać komunikaty o błędach (ekran) - strumień niebuforowany clog- związany ze standardowym urządzeniem, na które chce się wypisywać komunikaty o błędach (ekran) - strumień buforowany Za wysyłanie i odbieranie informacji ze strumienia odpowiadają operatory << i >>: << - operator odpowiadający za wysyłanie informacji do strumienia, nazywany jest często operatorem insert - wstawienia (albo put to) >> - operator odpowiadający za wczytywanie informacji, nazywany jest operatorem ekstrakcji (extract operator) lub operatorem get from int x = 10, y = 25; float z = 1.1234567; char txt[10]="napis"; cout << x; cout << "x = " << x; cout << x << y; cout << x << " " << y; cout << x << " " << y << endl; cout << z << endl; cout << txt << endl; cout << txt << "\n"; int x, y; float z; cin >> x; cin >> x >> y; cin >> x >> z; 10 x = 10 1025 10 25 10 25 1.12346 Napis Napis Rok akademicki 2011/2012, Wykład nr 1 47/55 Rok akademicki 2011/2012, Wykład nr 1 48/55 Program w języku C++ Program w języku C++ #include <iostream> int main() std::cout << "Witaj swiecie!" << std::endl; std:: przed nazwami identyfikatorów cout i endl oznacza, że pochodzą one z biblioteki standardowej (dokładniej - z tzw. przestrzeni nazw std) endl - przejście do nowego wiersza, odpowiada "\n" w języku C W celu uniknięcia ciągłego pisania std:: przed nazwami identyfikatorów umieszcza się w programie dyrektywę using: using namespace std; Bez dyrektywy using: #include <iostream> int main() std::cout << "Witaj swiecie!" << std::endl; Z dyrektywą using: #include <iostream> using namespace std; int main() cout << "Witaj swiecie!" << endl;

Rok akademicki 2011/2012, Wykład nr 1 49/55 Rok akademicki 2011/2012, Wykład nr 1 50/55 Programowanie proceduralne i obiektowe Definicja klasy program komputerowy opisuje w pewien sposób rzeczywistość w odniesieniu do sposobu definiowania przedmiotów występujących w rzeczywistości wykształciły się dwa zasadnicze podejścia: Proceduralne: Obiektowe: tworzymy strukturę zawierającą parametry definiujące przedmiot i jego stan, a odseparowane funkcje określają jego właściwości dane definiujące przedmiot i metody (funkcje składowe) określające jego właściwości umieszczamy we wspólnym miejscu - klasie zmienne powyższego typu nazywa się obiektami struct punkt int x,y; void rysuj(struct punkt p) // ciało funkcji class PUNKT int x,y; public: void rysuj(void); jeśli chcemy utworzyć obiekt powyższej klasy, to podobnie jak przy deklaracji innych zmiennych podajemy nazwę typu i nazwę obiektu: nazwa_typu x; - obiekt klasy nazwa_typu nazwa_typu *y; - wskaźnik do obiektów typu nazwa_typu Przykład: PUNKT x, *y; Rok akademicki 2011/2012, Wykład nr 1 51/55 Rok akademicki 2011/2012, Wykład nr 1 52/55 Składniki klasy - dane dane (dane składowe, pola) - oznaczają to samo co pola w strukturach Przykład: class osoba public: char imie[20]; char nazwisko[30]; int wiek; do danych w klasie odwołujemy się w taki sam sposób jak do pól struktury: obiekt.dana wskaźnik->dana osoba x,*y; x.wiek = 15; y = &x; y->wiek = 20; Składniki klasy - funkcje funkcje (funkcje składowe, metody) - są to funkcje operujące na danych składowych klasy Przykład: class osoba do funkcji w klasie odwołujemy się w taki sam sposób jak do char imie[20]; jej danych: char nazwisko[30]; int wiek; obiekt.funkcja(argumenty) public: wskaźnik->funkcja(argumenty) void zapisz(char *i, char *n, int w); osoba x,*y; x.zapisz( Jan, Kowalski,30); y = &x; y->zapisz( Adam, Kowalski,25); deklaracje danych i funkcji mogą być umieszczane w klasie w dowolnej kolejności niezależnie od miejsca zdefiniowania składnika wewnątrz klasy - składnik znany jest w całej definicji klasy

Rok akademicki 2011/2012, Wykład nr 1 53/55 Rok akademicki 2011/2012, Wykład nr 1 54/55 Prawa dostępu do składników klasy dla składników klasy (danych i funkcji) określa się trzy prawa dostępu: private (prywatne) oznacza, że funkcje i dane klasy dostępne są tylko z wnętrza klasy dla danych oznacza to, że tylko funkcje będące składnikami klasy mogą te dane odczytywać lub do nich coś zapisywać dla funkcji oznacza to, że mogą one zostać wywołane tylko przez inne funkcje składowe tej klasy (oraz tzw. funkcje zaprzyjaźnione) public (publiczne) komponenty publiczne są ogólnie dostępne, można się do nich odwoływać z wnętrza klasy lub spoza klasy protected (zabezpieczone) dostęp jest taki sam jak dla private, ale dodatkowo są one dostępne dla klas wywodzących się od tej klasy (dziedziczenie) Prawa dostępu do składników klasy etykiety private, public, protected można umieszczać w dowolnej kolejności, mogą one powtarzać się domyślnie wszystkie składowe są prywatne Przykład: class osoba char imie[20]; char nazwisko[30]; int wiek; public: int ocena; void zapisz(char *i, char *n); private: float wzrost; float waga; public: void wyswietl(); definicja klasy nie definiuje obiektu - nie przydziela więc pamięci w definicji klasy nie można inicjować danych definiując kilka obiektów danej klasy w pamięci przydzielane jest miejsce dla wszystkich danych, natomiast funkcje są w pamięci tylko jeden raz funkcje składowe klasy mają dostęp do wszystkich jej danych i funkcji Rok akademicki 2011/2012, Wykład nr 1 55/55 Koniec wykładu nr 1 Dziękuję za uwagę!