ECLIPSE wnioski z dwóch pierwszych laboratoriów



Podobne dokumenty
Języki programowania - podstawy

Laboratorium 1. I. Zainstaluj program Eclipse (wersja C/C++ w odpowiednim systemie operacyjnym

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

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

Programowanie strukturalne i obiektowe

1 Podstawy c++ w pigułce.

tablica: dane_liczbowe

1 Podstawy c++ w pigułce.

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

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

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

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Języki i metodyka programowania. Wprowadzenie do języka C

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

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

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

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

Podstawy Programowania Podstawowa składnia języka C++

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

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Wprowadzenie do języka Java

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

Część 4 życie programu

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

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

Wstęp do Programowania, laboratorium 02

Podstawy Programowania C++

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop

2 Przygotował: mgr inż. Maciej Lasota

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

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

Programowanie strukturalne język C - wprowadzenie

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

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

Język ludzki kod maszynowy

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

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

Programowanie - wykład 4

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

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

I - Microsoft Visual Studio C++

Programowanie komputerowe. Zajęcia 1

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Wstęp do programowania

Podstawy programowania w języku C

Zmienne, stałe i operatory

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119

Słowa kluczowe i nazwy

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

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

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

Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne

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

Informatyka, Ćwiczenie Uruchomienie Microsoft Visual C++ Politechnika Rzeszowska, Wojciech Szydełko. I. ZałoŜenie nowego projektu

Programowanie Obiektowe i C++

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

Metodyki i Techniki Programowania MECHANIZM POWSTAWANIA PROGRAMU W JĘZYKU C PODSTAWOWE POJĘCIA

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Programowanie obiektowe

Pętla for. Wynik działania programu:

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Tablice, funkcje - wprowadzenie

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

Język C - podstawowe informacje

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

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Programowanie I C / C++ laboratorium 01 Organizacja zajęć

PROGRAMOWANIE w C prolog

Podstawy Programowania. Wykład 1

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

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

Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Kontrola przebiegu programu

INFORMATYKA Studia Niestacjonarne Elektrotechnika

DYNAMICZNE PRZYDZIELANIE PAMIECI

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

Wstęp do informatyki- wykład 7

Proste typy zmiennych języka C++ *) Zapis 3.4 e-38 jest równoważny zapisowi 3,

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

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

do instrukcja while (wyrażenie);

Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie 1. Podstawy. Wprowadzenie do programowania w języku C. Katedra Metrologii AGH

Struktura pliku projektu Console Application

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

Wstęp do programowania. Wykład 1

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

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

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

KURS C/C++ WYKŁAD 1. Pierwszy program

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

Transkrypt:

PODSTAWY PROGRAMOWANIA 3-4 WYKŁAD 22-10-2015 ECLIPSE wnioski z dwóch pierwszych laboratoriów Dodanie pliku i konfiguracji startowej (każdy uruchamiany program powinien mieć własna konfigurację startową) Po stworzeniu projektu C++ type Executable- toolchain cygwin lub mingw (pamiętając o zmiennej PATH zawierającej ścieżkę do GCC) dodajemy nowy plik do projektu wybierając opcję File New Other C/C++ Source File. Zmieniamy aktywą konfigurację projektu z debug na release

Kompilujemy i konsolidujemy plik exe (pojawia się plik release/nazwa_projekte.exe) Uruchamiamy PIERWSZY raz projekt poprzez ctrl+f11 z poziomu edytora lub prawy przycisk myszy na projekcie Run As Local C/C++ Application lub wybierając Launch configurations New launch configuration Po pierwszym uruchomieniu konfiguracja uruchumieniowa zostaje zapisana, każde następne wywołanie projektu będzie możliwe również poprzez przycisk (przy aktywnej konfiguracji uruchumieniowej) Lub: Troubleshouting: Nie pojawia się typ projektu MiNGW Może nie być ustawiona ścieżka dostępu do gcc, należy ją dodać z poziomu komputera lub w eclipsie ctl+shift+l ctl+shift+l C/C++ Build Environment

Program nie kompiluje się pisząc no access to... exe Być może jest otwartych zbyt dużo kopi programu, należy pozamykać uruchomione instancje z widoku konsoli Wybrana jest konfiguracja debug zamiast run i program staje po pierwszej instrukcji w funkcji main. Należy wyłączyć opcję stop on startup

Zamiast wyników programu wyświetlana jest konsola błędów CDT Należy wyłączyć dla konsoli CDT automatyczne uzyskiwanie fokusu w przypadku wystąpienia błędu: Tekst zachęty do wprowadzania danych pojawia się dopiero po zakończeniu wprowadzania danych Należy zamiast wprowadzania w konwencji strukturalnego C (printf, scanf) wyświetlać i wprowadzać dane w konwencji obiektowego C++ (cout<<, cin>> ). Nie da się skompilować drugiego programu wewnątrz tego samego projektu Tylko jeden plik źródłowy w projekcie może mieć funkcję main. Jeżeli chcemy uruchomić inny program, to powinniśmy utworzyć inny projekt. Wyjściem prowizorycznym może być zaremowanie (dodanie komentarza znakami // lub /* */ funkcji main w pierwszym pliku). Struktura programu - podstawy W programie w języku C / C++ można wyróżnić w miarę stałe bloki: W przypadku prostych programów nie wykorzystujących funkcji lub klas:

#include <iostream> // Deklaracje dołączanych bibliotek / plików nagłowkowych, dyrektywy kompilatora, przestrzenie nazw using namespace std; int main() { // funkcja main - główna funkcja programu int ile_razy=1; // Deklaracje zmiennych for(int i=0;i<0;i++){ // Właściwe instrukcje cout << "!!!Hello World!!!" << endl; } } return 0; // zakończenie funkcji main W przypadku bardziej złożonych programów, oprócz funkcji main występują jeszcze definicje innych funkcji i/lub klas, plik cpp jest jeszcze często połączony z plikiem nagłówkowym *.h zawierającym ich prototypy. Słowa Kluczowe języka C Słowo asm auto break case char const continue default do double else enum extern float for goto if int long register return short OPIS Kod w asemblerze Modyfikator określający, że zmienne są pamiętane w domyślnym miejscu pamięci Polecenie kończące bezwarunkowo for, while, switch, i do...while W połączeniu ze switch - wybór wielokrotny Najprostszy typ danych, 1 bajt Modyfikator powodujący, że zmienna musi mieć w trakcie wykonywania programu tą samą wartość Polecenie powodujące przejście do następnej iteracji for, while, i do...while Domyślna wartość w instrukcji switch Instrukcja pętli Typ danych - podwójna precyzja, zmiennopozycyjne. Instrukcje do wykonania jeśli warunek po If...jest niespełniony Typ danych pozwalający aby zmienna przyjmowała tylko określone wartości Modyfikator określający, że zmienna jest zdefiniowana na zewnątrz programu/ funkcji Typ danych pojedyncza precyzja, zmiennopozycyjne. Instrukcja pętli Instrukcja skoku Instrukcja wyboru Typ danych przechowujący liczby całkowite Typ danych przechowujący liczby całkowite długie Modyfikator określający, że zmienne są pamiętane w rejestrze ( o ile to możliwe) Powrót z aktualnie wykonywanej funkcji Typ danych przechowujący liczby całkowite krótkie

signed sizeof static struct switch typedef union unsigned void volatile while Modyfikator określające, że zmienne danego typu mogą być ujemne Operator określający rozmiar zmiennej Modyfikator określający, że wartość zmiennej nie zmienia się pomiędzy kolejnymi wywołaniami funkcji Deklaracja struktury Wybór wielokrotny Definicja nowego typu Deklaracja unii Modyfikator określające, że zmienne danego typu nie mogą być ujemne "Pusty" typ danych. Najczęściej służy do określenia, że funkcja nie ma zwracać żadnych wartości. Modyfikator określający, że zmienna może być modyfikowana Instrukcja pętli wykonywana dopóki warunek pętli jest prawdziwy. Słowa kluczowe C++ catch inline template class new this delete operator throw except private try finally Protected virtual friend Public Priorytety operatorów: Operatory Wiązanie 1. () [] -> ::. ++ i -- (przyrostkowe) od lewej do prawej 2.! ~ + - ++ -- & * (typ) sizeof new delete od prawej do lewej 3..* ->* (dostęp do składowych obiektów) od lewej do prawej 4. * / % od lewej do prawej 5. + - (dwuargumentowe) od lewej do prawej 6. << >> od lewej do prawej 7. < <= > >= od lewej do prawej 8. ==!= od lewej do prawej 9. & od lewej do prawej 10. ^ od lewej do prawej 11. od lewej do prawej 12. && od lewej do prawej

13. od lewej do prawej 14.?: od prawej do lewej 15. = *= /= %= += -= &= ^= = <<= >>= od prawej do lewej 16., od lewej do prawej Instrukcje sterujące: Funkcja: printf() biblioteka: <stdio.h> wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout) int printf ( tekst_sterujący, argument_1, argument_2,... ) ; tekst sterujący jest to stała łańcuchowa (w podwójnych cudzysłowach) zawierająca: zwykłe znaki (które są po prostu kopiowane na ekran) kody formatujące kolejnych argumentów: %c pojedynczy znak %s łańcuch znaków %d liczba dziesiętna ze znakiem %f liczba zmiennoprzecinkowa (notacja dziesiętna) %e liczba zmiennoprzecinkowa (notacja wykładnicza) %g liczba zmiennoprzecinkowa (krótszy z formatów %f %e) %u liczba dziesiętna bez znaku %x liczba w kodzie szesnastkowym (bez znaku) %o liczba w kodzie ósemkowym (bez znaku) l przedrostek (long) stosowany przed: d u x o \n nowa linia Instrukcja warunkowa: if ( wyrażenie ) instrukcja_1 ; else instrukcja_2 ;

Przykład Napisz program, który rozwiąze układ równań ax+by=c dx+ey=e badając możliwe sytuacje (jedno rozwiązanie, wiele rozwiązań, brak rozwiązań) Instrukcja while Składnia instrukcji while jest następująca: while ( warunek ) instrukcja; warunek jest wyrażeniem języka C++, zaś instrukcja jest dowolną instrukcją lub blokiem instrukcji C++. Gdy wartością wyrażenia warunek jest true (prawda), wykonywana jest instrukcja, po czym następuje powrót do początku pętli i ponowne sprawdzenie warunku. Czynność ta powtarza się, dopóki warunek zwraca wartość true. Gdy wyrażenie warunek ma wartość false, działanie pętli zostaje zakończone Może się zdarzyć, że przed wykonaniem całego zestawu instrukcji w pętli będziesz chcieć powrócić do jej początku. Służy do tego instrukcja continue (kontynuuj). Może zdarzyć się także, że będziesz chcieć wyjść z pętli jeszcze przed spełnieniem warunku końca. Instrukcja break (przerwij) powoduje natychmiastowe wyjście z pętli i przejście wykonywania do następnych instrukcji programu. Przykład } // zliczanie do 10 int x = 0; while (x < 10) { printf("x: %d", x); x++; Przykład: Napisz program losujący liczbę całkowitą tak długo, aż wylosowana zostanie liczba podzielna przez 666. Instrukcja do...while Składnia instrukcji do...while jest następująca: do instrukcja while (warunek); Wykonywana jest instrukcja, po czym sprawdzany jest warunek. Jeśli warunek jest spełniony, pętla jest powtarzana; w przeciwnym razie jej działanie się kończy. Pod innymi względami instrukcje i warunki są identyczne, jak w pętli while.

Przykład // wypisujemy małe litery alfabetu char ch = 'a'; do { printf("%c",ch); ch++; } while ( ch <= 'z' ); Używaj pętli do...while, gdy chcesz mieć pewność że pętla zostanie wykonana co najmniej raz. Używaj pętli while, gdy chcesz pominąć pętlę (gdy warunek nie jest spełniony). Składnia pętli for Składnia instrukcji for jest następująca: for (inicjalizacja; test; akcja ) instrukcja; Instrukcja inicjalizacja jest używana w celu zainicjalizowania stanu licznika lub innego przygotowania do wykonania pętli. Instrukcja test jest dowolnym wyrażeniem języka C++, które jest obliczane przed każdym wykonaniem zawartości pętli. Jeśli wyrażenie test ma wartość true, wykonywane jest ciało pętli, po czym wykonywana jest instrukcja akcja z nagłówka pętli (zwykle po prostu następuje inkrementacja zmiennej licznikowej). Przykład 1 Przykład 2 // dziesięć razy wpisuje napis "Hello" for (int i = 0; i < 10; i++) printf("hello! "); for (int i = 0; i < 10; i++) { printf("hello!"); printf("wartoscia i jest: %d",i); } Przykład Napisz program obliczający n-tą liczbę Fibbonaciego Instrukcja switch Składnia instrukcji switch jest następująca: switch (wyrażenie) { case wartośćjeden: instrukcja; case wartośćdwa: instrukcja;... case wartośćn: instrukcja;

default: instrukcja; } Instrukcja switch umożliwia rozgałęzienie programu (w zależności od wartości wyrażenia). Na początku wykonywania instrukcji następuje obliczenie wartości wyrażenia, gdy odpowiada ona którejś z wartości przypadku case, wykonanie programu przechodzi do tego właśnie przypadku. Wykonywanie instrukcji jest kontynuowane aż do końca ciała instrukcji switch lub do czasu napotkania instrukcji break. Jeśli wartość wyrażenia nie odpowiada żadnej z wartości przypadków case i występuje przypadek default, wykonanie przechodzi do przypadku default. W przeciwnym razie wykonywanie instrukcji switch się kończy. Przykład: Napisz program podający słownie dzień tygodnia, dla dnia tygodnia podanego w postaci liczby. Tablice : int tablica [ 20 ]; // 10-cio elementowa tablica liczb całkowitych # define ile=15 float tekst [15 ]; // 255-cio elementowa tablica zmiennych zmiennopozycyjnych (liczby rzeczywiste typu float char macierz [ 3 ] [ 5 ]; // dwuwymiarowa tablica: znaków 3 wiersze po 2 kolumny, w języku C tablice są zawsze indeksowane od zera np. pierwszym elementem tablicy «macierz» jest: macierz[ 0 ][ 0 ] a ostatnim elementem jest: macierz[ wymiar_1 1 ][wymiar_2 1] tzn. macierz[ 4 ][ 1 ] w języku C nie jest sprawdzana zgodność indeksu z wymiarami tablicy!!! często jest to przyczyną trudnych do wykrycia błędów. np. odwołanie: macierz[ 1 ][ 2 ] zwróci w rzeczywistości wartość pierwszego elementu z trzeciego wiersza tzn. macierz[ 2 ][ 0 ] Definicję tablicy można połączyć z inicjacją jej zawartości: int tab[ 10 ]; // sama definicja bez inicjacji int tab_inicjowana[ 10 ] = { 20, -3, 12, 1, 0, 7, -5, 100, 2, 5 }; char tab_znakow[ 5 ] = { a, B, \n, 1, \0 }; float macierz_a[ 3 ][ 2 ] = { {1,1}, {3.5,7.0}, {-15,100} }; float macierz_b[ 3 ][ 2 ] = { 1, 1, 3.5, 7.0, -15, 100 };

Kolejne inicjatory zawsze wstawiane są do kolejnych komórek tablicy (w związku z tym można pominąć wewnętrzne nawiasy klamrowe). Jeżeli lista inicjatorów jest krótsza niż ilość elementów tablicy to pozostałe elementy są uzupełniane zerami lub wskaźnikami NULL np. definicja: a definicja: int tab[ 10 ] = { 20, -3, 12, 1 }; jest równoważna: int tab[ 10 ] = { 20, -3, 12, 1, 0, 0, 0, 0, 0, 0 }; float macierz[ 3 ][ 2 ] = { {1}, {3.5,7.0} }; jest równoważna: lub: float macierz[ 3 ][ 2 ] = { {1,0}, {3.5,7.0}, {0,0} }; float macierz[ 3 ][ 2 ] = { 1, 0, 3.5, 7.0, 0, 0 }; PRZYKŁAD : Wprowadź dane do tablicy 10 elementowej Policz ile w tablicy jest elementów większych od trzech Znajdź minimalną i maksymalną wartość w tablicy Posortuj liczby w tablicy metodą sortowania bąbelkowego