Wykład. Materiały bazują częściowo na slajdach Marata Dukhana

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

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

Co nie powinno być umieszczane w plikach nagłówkowych:

#line #endif #ifndef #pragma

Podstawy programowania. Wykład 9 Preprocesor i modularna struktura programów. Krzysztof Banaś Podstawy programowania 1

Język C - podstawowe informacje

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

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

zastępować zarezerwowane słowa lub symbole innymi,

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

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

Technologie cyfrowe semestr letni 2018/2019

Abstrakcyjne struktury danych w praktyce

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

Wstęp do programowania

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

Technologie cyfrowe semestr letni 2018/2019

Przekazywanie argumentów wskaźniki

Wstęp do programowania

Języki programowania obiektowego Nieobiektowe elementy języka C++

I - Microsoft Visual Studio C++

Wykład 1

Etapy kompilacji. Wykład 7. Przetwarzanie wstępne, str. 1. #define ILE for(i=0; i<ile; i++)...

Programowanie - wykład 4

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

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

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

Wstęp do programowania. Wykład 1

Podział programu na moduły

Część 4 życie programu

Pytania sprawdzające wiedzę z programowania C++

Funkcje. Spotkanie 5. Tworzenie i używanie funkcji. Przekazywanie argumentów do funkcji. Domyślne wartości argumentów

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

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

Przesłanianie nazw, przestrzenie nazw

Programowanie Proceduralne

Podstawy wykorzystania bibliotek DLL w skryptach oprogramowania InTouch

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

Zofia Kruczkiewicz, ETE8305_2 1

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

#include <iostream> using namespace std; void ela(int); int main( ); { Funkcja 3. return 0; }

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

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

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

PROE wykład 4 pozostałe operatory, forward declaration, dziedziczenie. dr inż. Jacek Naruniec

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 5

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Preprocesor. natychmiast następuje \n są usuwane następny wiersz zostaje połączony z tym, w którym był znak \ o usuwane są wszystkie komentarze są

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Pracownia specjalistyczna. Materiały przygotowali: mgr inż. Wojciech Frohmberg, mgr inż. Michał Kierzynka

PMiK Programowanie Mikrokontrolera 8051

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Wprowadzenie do OpenMP

Projektowanie klas c.d. Projektowanie klas przykład

Programowanie Procedurale

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

public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje

Wstęp do Programowania 2

C++ - [1-3] Debugowanie w Qt Creator

Programowanie komputerowe. Zajęcia 1

Podstawy programowania w języku C++

Podstawy Programowania. Wykład 1

3. Instrukcje warunkowe

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

Na ekranie monitora zostaną wyświetlone w dwu liniach teksty Pierwsza linia Druga linia

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

Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)

Opis zagadnieo 1-3. Iteracja, rekurencja i ich realizacja

tablica: dane_liczbowe

Wstęp do programowania

Języki programowania - podstawy

Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)

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

Podstawy programowania w języku C i C++

Programowanie I. Kornel Warwas. ATH Katedra Matematyki i Informatyki

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

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

Języki programowania obiektowego Nieobiektowe elementy języka C++

Wprowadzenie do programowania w języku C

Programowanie strukturalne i obiektowe

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

Programowanie w języku C++

1,3,4,2,3,4,0,1,4,5,0. Wówczas największa suma trzech kolejnych liczb (zaznaczone na czerwono) wynosi:

Zaawansowane programowanie w C++ (PCP)

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

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

Wstęp do Programowania 2

Podstawy języka skryptowego Lua

Programowanie Obiektowe i C++

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

Transkrypt:

Wykład Materiały bazują częściowo na slajdach Marata Dukhana

Języki programowania Kompilowane np. C, C++, Pascal Interpretowane np. JavaScript, PHP, Python, VBA Pośrednie np. Java, C#

Znane kompilatory C i C++ GNU C/C++ (gcc/g++) Domyślny pod linuksem Clang (clang/clang++) Domyślny dla Maca, czytelne komunikaty błędu Intel C/C++ compilers (icc/icpc) Często produkuje wydajniejszy kod dla procesorów Intela Microsoft C/C++ compiler (Windows) Domyślne środowisko pod Windows

Kompilacja programu C++ Kompilacja Konsolidacja ( linkowanie ) Thread.c Thread.o FastAlgo.c FastAlgo.o MyProgram Interface.c Interface.o

Preprocesor C Preprocessing: pierwsza faza kompilacji Instrukcja #define tworzy nowe makro: #define PI 3.141592653589793 Makra mogą mieć parametry, np. #define SUM(a,b) ((a)+(b)) Pytanie kontrolne: Jakiego typu są a i b?

Preprocessor: Predefiniowane makra Np. clang zawsze definiuje makro clang #if defined( clang ) /* Code which uses clang-specific features */ #else /* Generic version of the code */ #endif

Instrukcje warunkowe preprocesora #if defined( GNUC ) && ( GNUC >= 4) #elif defined( GNUC ) #else #endif Instrukcje mogą wykorzystywać jedynie liczby całkowite i porównania. #ifdef(macro) jest równoważne: #if defined(macro) #ifndef(macro) jest równoważne: #if!defined(macro)

Dyrektywa Argumenty Znaczenie #define Łańcuch tekstowy Definiowanie symbolu #undef Łańcuch tekstowy Anulowanie #define #include #if #elif #ifdef #ifndef #endif Nazwa pliku Wyrażenie logiczne Łańcuch tekstowy, wyrażenie logiczne Łańcuch tekstowy Włącznie pliku do tekstu źródłowego. Kompilacja warunkowa. Operandami wyrażeń logicznych mają postać defined(tekst)

Definicja a deklaracja (było wcześniej!) Deklaracja: gdzieś w programie jest zmienna numthreads typu int extern int numthreads; Definicja: oto zmienna numthreads typu int int numthreads; (relikt C) Definicja statyczna: oto zmienna numthreads typu int, ale to nasza tajemnica static int numthreads; Wielokrotna deklaracja - ok, wielokrotna definicja - błąd

Definicja a deklaracja funkcji Deklaracja: int getnumthreads(); Definicja: int getnumthreads() { return sysconf(_sc_nprocessors_conf); }

#include <iostream> using namespace std; // first name space namespace first_space{ void func(){ cout << "Inside first_space" << endl; } } // second name space namespace second_space{ void func(){ cout << "Inside second_space" << endl; } } int main () { // Calls function from first name space. first_space::func(); } // Calls function from second name space. second_space::func(); return 0;

Pliki źródłowe i nagłówkowe Typowa praktyka: Kiedy tylko możliwe chowaj funkcje, klasy i zmienne globalne (static, namespace ) Pozostałe funkcje, klasy i zmienne Deklaracje w plikach nagłówkowych (*.h/*.hpp) Definicje w plikach źródłowych (*.c/*.cpp/*.cxx)

Pliki nagłówkowe Instrukcja #include dołącza zawartość pliku nagłówkowego #include <header.h> - szuka w katalogach systemowych (patrz opcja -Idirectory) #include "header.h" szuka w aktualnym katalogu

Deklaracja int coefficients( double &, double &, double & ); int roots( double, double, double, double &, double & ); Definicja int coefficients( double & A, double & B, double & C ){ int code; cout << "Enter coefficients for a quadratic equation" << endl; cout << "(enter A, B and C, or enter Ctrl-d to halt):" << endl; cin >> A >> B >> C; } if (cin.eof()) code = 0; else code = 1; return code;

Include guards Sposób 1 #ifndef THREAD_H #define THREAD_H typedef int ThreadNumberType; ThreadNumberType getnumthreads(); #endif /* THREAD_H */ Sposób 2 #pragma once typedef int ThreadNumberType; ThreadNumberType getnumthreads();

$ g++ plik_zrodlowy.cpp -o program -O0 Brak optymalizacji $ g++ plik_zrodlowy.cpp -o program -O1 Częściowa optymalizacja $ g++ plik_zrodlowy.cpp -o program -O2 Pełna optymalizacja $ g++ plik_zrodlowy.cpp -o program -O3 Agresywna optymalizacja $ g++ plik_zrodlowy.cpp -o program -Os Optymalizacja rozmiaru $ g++ plik_zrodlowy.cpp -o program -Ofast -march=native - optymalizacja pod konkretny procesor Lepiej unikać