Programowanie strukturalne. Tomasz Tyksiński

Wielkość: px
Rozpocząć pokaz od strony:

Download "Programowanie strukturalne. Tomasz Tyksiński"

Transkrypt

1 Programowanie strukturalne Tomasz Tyksiński

2 Tematyka zajęć 1. Typy danych: podstawowe typy danych, typy złożone, typ wskaźnikowy, typ strukturalny, łańcuchy znaków, parametry funkcji main 2. Pętle, instrukcje 3. Funkcje: przekazywanie parametrów funkcji (przez wartość, przez wskaźnik, przez referencję), przekazywanie danych złożonych typów 4. Rekurencja: pojęcie rekurencji, definicje rekurencyjne, funkcje rekurencyjne 5. Losowość: generowanie liczb pseudolosowych, zastosowanie losowości algorytmy mieszające, losowanie liczb z danego przedziału Literatura 1. N. Wirth, Wprowadzenie do programowania systematycznego. WNT Warszawa J. Grębosz, Symfonia C++, Oficyna Kallimach, Kraków A. Struzińska-Walczak, K. Walczak, Nauka programowania dla początkujących. C++, W&W B. Eckel, Thinking in C, Beta B. Eckel, Thinking in C++, Wydawnictwo Helion, S t r o n a

3 1. Typy danych 1.1 Liczby całkowite Deklaracja zmiennej typu całkowitego: int n. Można używać modyfikatorów przy deklaracji (long, unsigned). Operatory arytmetyczne, operatory binarne. Zadanie 1. Program wypisujący i-ty bit liczby całkowitej n typu int. (Licząc od końca i od początku) Wersja 1: Liczba n = n kn k-1 n 2n 1n 0 ponownie podajemy liczbę n oraz numer bitu i. Wersja 2: Liczba n = n 1n 2n 3 n k, podajemy liczbę n oraz numer bitu i. Jakie operatory wykorzystać najprościej? Jak wygląda ostatni znak liczby dodatniej? Jak wygląda znak liczby ujemnej? Zadanie 2. Program wypisujący reprezentację bitową liczby n. Dodatniej i ujemnej. Wypisywanie kolejnych bitów reprezentacji liczby w pamięci komputera. Wypisać wszystkie bity liczby n od lewej strony do prawej. Zauważyć jakie wartości bitów mają liczby n ujemne. Co oznaczają wypisane wyniki dla liczb ujemnych? Porównaj bity wartości dodatnich i ujemnych. Jak wygląda wartość 0? Jaka jest największa wartość typu całkowitego? Jaka jest najmniejsza wartość? Zadanie 3. Program wypisujący zapis dwójkowy liczby n. Dodatniej i ujemnej. Wypisać wartość liczby n w zapisie dwójkowym, liczby ujemne mają być wypisywane w czytelnej dla człowieka postaci b 1b 2 b k. Zapis liczb ujemnych będzie inny od reprezentacji binarnej w komputerze. W komputerze zapis U2 w tym zadaniu zapis znak-moduł. 1.2 Liczby rzeczywiste Zmienne typu float lub double. Reprezentacja zmiennoprzecinkowa. Zadanie 4. Program wyznaczający odległość pomiędzy dwoma punktami A i B w przestrzeni. Jaki jest wzór na odległość między punktami? Jak reprezentować punkt w przestrzeni 3 wymiarowej? Zadanie 5. Program wczytujący liczby całkowite aż do podania 0, a następnie wypisujący liczbę podanych wartości oraz średnią wartość wczytanych liczb. Nie używaj typu tablicowego Wskaźniki Zmienne wskaźnikowe są to zmienne, których wartością jest adres przechowywanej danej. Mamy zatem dwie wartości konkretną daną oraz wartość adresu komórki w której ta dana jest przechowywana. Normalna zmienna przechowuje bezpośrednio wartość danego typu, np. int x; natomiast zmienna dynamiczna deklarowana jako typ *nazwa; przechowuje adres do wartości typu typ, np. int *p; oznacza, że zmienna p przechowuje adres do danej typu int. Zmienną wskaźnikową również należy nie tylko zadeklarować, ale również zdefiniować (nadać wartość 3 S t r o n a

4 początkową). Wartość pusta w języku C oznaczana jest przez NULL, adres pusty, wskaźnik zerowy. Gwiazdka jest związana za zmienną, a nie z typem, tzn. int *p1, p2; oznacza p1 wskaźnikowe, ale p2 całkowite. Język C++ preferuje notację int* p1; co może być mylące (spacje są ignorowane). Przykład int n = 10; // zmienna n w pamięci, przypisujemy jej wartość 10 int *p = NULL; // deklaracja zmiennej wskaźnikowej p, przypisujemy wartość pustą p = n; // błąd: p jest adresem, n daną. Należy ustawić wartość zmiennej p na adres zmiennej n p = &n; // dobrze: & jest operatorem pobierania adres zmiennej, następuje zmiana adresu w p p = 20; // błąd: nie można zmienić wartości zmiennej n poprzez zmianę p, zmienia się adres w p *p = 20; // dobrze: zmieniamy wartość w adresie p, czyli również zmieniamy n, printf( Wartość n = %d, wartość pod adresem p = %d, adres p = %d, adres n = %d.\n, n, *p, p, &n); W ostatnim przykładzie wykorzystujemy operator * nazywany operatorem wyłuskania lub dereferencji. Wskaźniki mają również znaczenie przy tablicach tablica jest zarazem wskaźnikiem na pierwszy element tablicy, zastosowanie przy przekazywaniu typów złożonych do funkcji (przykłady przy funkcjach). W powyższych przykładach zmienna wskaźnikowa pokazywała na adres zmiennej statycznej, ale jeżeli w programie będziemy wykorzystywali wyłącznie zmienne wskaźnikowe (dynamiczne) to musimy sami zdecydować kiedy powstanie zarezerwowany obszar pamięci do przechowywania danej pod wskazanym adresem oraz kiedy obszar ten zostanie usunięty. Mamy wówczas pełną kontrolę nad czasem trwania wartości w pamięci, stąd nazwa zmiennych dynamicznych. Powstają one w innym obszarze pamięci zwanym stertą. Do zarezerwowania bloku pamięci w języku C wykorzystujemy funkcję malloc(rozmiar) (także calloc(ile, rozmiar), i realloc(adres, rozmiar)) do zwalniania pamięci funkcję free(adres). Przykład int *p; // zadeklarowana, niezdefiniowana wartość adresu *p = 10; // błąd: nie wiemy na co pokazuje p p = malloc(sizeof(int)); // najpierw zarezerwuj obszar pamięci wskazywany przez p 4 S t r o n a

5 if (p!= NULL) { // jeżeli się powiodła rezerwacja *p = 10; // podstaw w nowym obszarze wartość 10 (*p)++; // zmień wartość 10 na 11 printf( wartość =, *p);// wypisze wartość w adresie p free(p); } // zwolnij obszar wskazywany przez p Adres p nie zmienia się po zwolnieniu, można zatem jeszcze dodać p = NULL; po funkcji free. W języku C++ rezerwacja bloku pamięci realizowana jest operatorem new typdanych; zwalnianie obszaru pamięci za pomocą delete zmienna. Ponadto zamiast używać NULL wykorzystuje się wartość 0 (można NULL po dodaniu biblioteki stdlib). Przykład int *p = 0; // zadeklarowana i zdefiniowana wartość adresu p na NULL p = new int; // zarezerwuj obszar pamięci wskazywany przez p if (p!= 0) { // jeżeli się powiodła rezerwacja *p = 10; // podstaw w nowym obszarze wartość 10 (*p)++; // zmień wartość 10 na 11 cout << Wartość = << *p; // wypisze wartość w adresie p delete p; // zwolnij obszar wskazywany przez p p = 0; } // ustaw p na NULL Zadanie 6. Program liczący NWD dwóch liczb algorytmem Euklidesa z wykorzystaniem zmiennych dynamicznych. Zamiast używać zmiennych typu int zadeklarować zmienne typu wskazującego na int, zarezerwować dla nich pamięć, wystartować algorytm i na końcu usunąć zmienne z pamięci. 1.4 Struktury Złożony typ danych służący do przechowywania wielu wartości, różnego typu pod jedną zmienną. Struktury (czasem nazywane rekordami) składają się z pól, każde może być innego typu. Służą do strukturalnego opisu obiektów i przechowywania ich w pamięci. Patrzymy globalnie na obiekty, a następnie staramy się je modelować w programie, przykładowe struktury: Osoba imię, nazwisko, telefon. Samochód marka, model, pojemność, rok produkcji. Pracownik imię, nazwisko, pesel, stanowisko, pensja. Książka tytuł, autor, rok wydania, wydawnictwo, liczba stron, cena. Dodając do struktury funkcjonalność, operacje na strukturze oraz pewne dodatkowe właściwości dostajemy obiekt (Programowanie obiektowe). 5 S t r o n a

6 W języku C struktury tworzymy w następujący sposób: struct nazwa { // nazwa struktury, nie zmiennej to jest nowy typ strukturalny Typ1 Pole1; Typ2 Pole2;... }; struct nazwa zmienna; // deklaracja zmiennej strukturalnej typu strukturalnego nazwa Przykład struct Punkt { float x; float y; }; struct Punkt A; //definicja typu strukturalnego punkt składającego się // z dwóch współrzędnych, współrzędnej x oraz // współrzędnej y // zmienna A typu strukturalnego Punkt Odwołania do pól struktury realizowane są za pomocą kropki lub strzałki. Jeżeli zmienna jest zmienną statyczną wykorzystujemy kropkę: A.x = 1.0; A.y = 2.0; Jeżeli zmienna jest zmienną dynamiczną: struct Punkt *pa = &A; wykorzystujemy operator dereferencji, a następnie kropki: (*pa).x = 3.0; (*pa).y = 4.0; lub krócej można użyć operatora strzałki na strukturze wskazywanej: pa->x = 3.0; pa->y = 4.0; Zadanie 7. Napisz program operujący na rekordzie opisującym punkt w przestrzeni trzy współrzędne. Program ma wczytać dwa punkty A i B, a następnie obliczyć odległość między nimi. Zadanie 8. Napisz program operujący na dynamicznej zmiennej opisującej punkt w przestrzeni. Napisz program wczytujący trzy punkty i sprawdzający czy leżą na jednej prostej. Usunąć zmienne z pamięci na zakończenie programu Tablice Tablica ciągły obszar danych przechowujący wartości jednego typu, umożliwiający swobodny dostęp do elementów poprzez indeksowanie 0, 1, 2, 6 S t r o n a

7 Deklaracja w języku C rozmiar musi być stała wartością liczbową typ nazwa[wartość]; // np. int tab[100]; można wykorzystać preprocesor do zamiany napisów przed kompilacją #define MAX 100 // na początku programu, za include typ nazwa[max]; w języku C++ rozmiar tablicy może być również stałą zdefiniowaną wcześniej const int MAX = 100; typ nazwa[max]; W C99 można również deklarować rozmiar tablicy za pomocą zwyczajnej zmiennej int n = 100; typ nazwa[n]; Odwołania do elementów tablicy poprzez podanie indeksu int tab[100]; tab[10]=20; tab[0]=tab[1]+tab[2]; cout << tab[0]; Zadanie 9. Program sumujący dodatnie i ujemne elementy ciągu a n niezależnie. Długość ciągu n wczytana na początku. Program wypisuje dwie sumy. Zadanie 10. Algorytm obliczający wartość wielomianu W(x)= a n x n + a n-1 x n-1 + a 1 x + a 0, w punkcie x 0. Algorytm Hornera. Program realizujący Algorytm Hornera, dane w tablicy. Zadanie 11. Obliczanie iloczynu skalarnego dwóch wektorów n wymiarowych w i v. Program obliczający iloczyn skalarny, dane w tablicy. Zadanie 12. Program odwracający kolejność elementów w tablicy. 1.6 Łańcuchy znaków W języku C łańcuchy, czyli ciągi znaków są po prostu tablicami znaków, zakończonymi znakiem końca łańcucha, jest to znak ASCII o numerze 0, czyli '\0'. Do obsługi łańcuchów w języku C wymagamy biblioteki string.h, zawierającej podstawowe operacje na łańcuchach. Przegląd funkcji bibliotecznych: strlen, strcpy, strncpy, strcmp, strcat. Przykłady funkcji i ich opis w Podstawach programowania. Deklarujemy tablicę znaków char str[15]; Jest to 15 elementowa tablica, ale łańcuch musi kończyć się znakiem '\0' zatem zapiszemy w niej 14 znaków tekstu i znak końca łańcucha. 7 S t r o n a

8 Podstawowe operacje na łańcuchach - sprawdzenie długości łańcucha char tekst[256] = "Ala"; int len = strlen(tekst); deklarujemy łańcuch o maksymalnej długości 256, ale zapisujemy w nim tylko 3 znaki i znak końca łańcucha. - można podobnie jak w tablicy modyfikować pojedynczy znak tekstu char tekst[25] = "Ala"; tekst[0] = 'U'; - podstawianie, nie można podstawiać tablic, zatem operacja podstawiania jest realizowana poprzez kopiowanie jednego łańcucha w miejsce drugiego łańcucha strcpy(tekstnowy, tekstoryginalny); strcpy(x, "Ala ma kota"); - wycinanie tekstu umożliwia funkcja strncpy(tekstnowy, tekstoryginalny, ile); uwaga na znak zakończenia tekstu, jeżeli mieści się w liczbie kopiowanych znaków to dobrze, jeżeli nie to należy ustawić go ręcznie w konkretnym miejscu łańcucha docelowego, np. tekstnowy[7]='\0'; - porównywanie łańcuchów, podobnie jak z podstawianiem nie można wykonać porównania ==, trzeba wywołać funkcję int wynik = strcmp(tekst1, tekst2); wynik jest liczbą całkowitą równą 0 gdy teksty są równe, jeżeli podczas porównywania jakiś znak będzie różny to funkcja zwraca wartość ujemną gdy znak w tekst1 jest mniejszy niż znak w tekst2, zwraca wartość dodatnią w przeciwnym razie. char tekst1[25] = "kot"; char tekst2[25] = "kos"; wynik = strcmp(tekst1, tekst2); - łączenie tekstów (konkatenację) można zrealizować komendą strcat(tekst1, teskt2) przykładowo dwa krótkie napisy 8 S t r o n a

9 char tekst1[25] = "kot"; char tekst2[25] = "let"; wynik = strcat(tekst1, tekst2); Dodatkowo w C++ wprowadzono klasę string służącą do obiektowego zarządzania łańcuchami. - deklaracja zmiennej ma następującą postać string tekst; string test = Test ; // lub w wersji obiektowej string test( Test ); - obsługa wejścia wyjścia jest naturalna z wykorzystaniem strumieni cout << Podaj imię: ; cin >> tekst; cout << Masz na imię << tekst; - funkcje obsługi zmiennej typu string są metodami klasy zatem wywołujemy je dla danej zmiennej po kropce cout << Twoje imię ma << tekst.length() << liter. ; - konkatenacja łańcuchów jest obsługiwana operatorem + string tekst2; cout << Podaj nazwisko: ; cin >> tekst2; string dane = tekst1 + + tekst2; cout << Podałeś: << dane << endl; - porównywanie łańcuchów wygląda podobnie jak liczb if (tekst == Jan ) cout << Janek ; - można sprawdzać pojedyncze znaki podobnie jak w C (zapis tablicowy) cout << tekst[0] << endl; lub lepiej, bezpieczniej jednak wykorzystać metodę at() cout << tekst.at(0) << endl; - Obiekt klasy string można skonwertować do typu z języka C za pomocą metody c_str() 9 S t r o n a

10 string napis = Jan Kowalski ; cout << napis << endl; // wypisanie strumieniowe w C++ printf( %s\n, napis.c_str()); // wypisanie w języku C Zadanie 13. Tablica danych osobowych struktura Osoba zawierająca Imię, Nazwisko, Telefon. Wczytanie danych, wypisanie wszystkich, wypisanie i-tego elementu, zmiana i-tego elementu. Wykorzystaj typ łańcuchowy (tablica lub string) 1.7. Konwersje w języku C Zamiana typu całkowitego na łańcuch znaków oraz liczby zapisanej jako łańcuch znaków do typu całkowitego realizują odpowiednio funkcje itoa oraz atoi. - zamiana łańcucha na liczbę int atoi(char* tekst) zamienia tekst z zapisaną w nim liczbą, na wartość typu int np. podczas wczytywania argumentów przez funkcję main Zadanie 14. Wywołaj napisany program pisz.exe z dwoma argumentami łańcuchem znaków oraz liczbą całkowitą. Program ma wypisać znak o danym numerze z podanego łańcucha znaków. Przypomnijmy, że parametry można przekazać poprzez funkcję main main(int argc, char* argv[]) Argument argc to liczba parametrów, argv to tablica łańcuchów, zawierająca kolejne parametry wywołania programu zerowy element to nazwa programu. Zadanie powinno po wywołaniu pisz.exe Janek 3 wypisać na ekranie e - zamiana liczby na łańcuch char* itoa(int liczba, char* tekst, int podstawa) typ char* to typ wskaźnikowy, wskaźnik na pierwszy element tablicy znaków, równoważny zapis tablicy znaków bez podawania rozmiaru, liczba - zamieniana liczba całkowita, tekst - wynik zamiany liczby, uwaga na długość tekstu, musi wystarczyć do zapisana 32 bitowej liczby (lub dłuższej zależnie od systemu), podstawa - podstawa systemu konwersji np. 10 dla systemu dziesiętnego. Wynikiem funkcji jest adres do zmiennej tekst. Zadanie 15. Wczytaj liczbę całkowitą i wypisz na ekran cyfry dziesiętne w odwrotnej kolejności. 10 S t r o n a

11 2. Instrukcje, pętle Zadanie 1. Program wypisujący wszystkie liczby mniejsze niż 100 podzielne przez 3. Zadanie 2. Program wypisujący wszystkie liczby mniejsze niż 100 podzielne przez 3 i przez 7. Zadanie 3. Program wypisujący wszystkie liczby pięciocyfrowe, których suma cyfr wynosi 21. Zadanie 4. Program wypisujący początkowe liczby doskonałe. Liczba doskonała to taka która jest równa sumie swoich wszystkich podzielników, np. 6 jest liczbą doskonałą, bo 6 = , liczba 8 nie jest liczbą doskonałą bo Zadanie 5. Program wypisujący tabliczkę mnożenia od 1 do 10, w ładnie sformatowanej tablicy na ekranie. Zadanie 6. Program obliczający, po wczytaniu wartości całkowitych a oraz n, wartość a n. Metoda naiwna, wykonująca kolejne mnożenia a n = a a a a. Zadanie 7. Szybkie potęgowanie a n. Przez zamianę n na zapis binarny. 3. Funkcje 3.1 Przekazywanie parametrów do funkcji W języku C można przekazywać parametry do funkcji poprzez wartość lub poprzez wskaźnik, w języku C++ można dodatkowo przekazywać parametry funkcji przez referencję (działa analogicznie jak wskaźnik). Przekazywanie przez wartość przekazuje wartość do funkcji, ale nie zwraca jej modyfikacji, chcąc przekazać zmiany wprowadzone wewnątrz funkcji należy przekazać parametr przez adres lub przez referencję. Funkcja może (nie musi) zwracać wyliczoną wartość za pomocą return. Zadanie 1. Zamień Zadanie 2.7 na postać funkcyjną, w jaki sposób należy przekazać parametry do funkcji. Napisz funkcję postaci int potega(int a, int n). 3.2 Przekazywanie tablic do funkcji Przekazywanie tablic przez wartość powodowałoby utworzenie kopii tablicy w pamięci, a następnie wszystkie operacje funkcja wykonywałaby na powstałej kopii i zmiany nie byłyby widoczne po zakończeniu funkcji. Efektywniej zatem jest przekazać parametr będący wskaźnikiem do tablicy, powstanie kopia zmiennej wskaźnikowej, ale pokazywać ona będzie na pierwszy element tablicy. Zmiany wprowadzone w tablicy wewnątrz funkcji są zatem przekazane na zewnątrz funkcji (ponieważ działa przekazywanie przez wskaźnik). Ponieważ tablice są równoważne wskaźnikom możemy zapisać przekazanie tablicy do funkcji na trzy równoważne sposoby. int funkcja1(int tab[100]) 11 S t r o n a

12 int funkcja2(int tab[]) int funkcja1(int *tab) Można również przekazać tablicę przez referencję, ale nie ma to większego sensu (referencja do wskaźnika). Zadanie 2. Zamień program z tablicą osób (Zadanie 1.13) na przejrzystszą postać z funkcjami dodającymi rekordy do tablicy i wyszukującymi. Zadanie 3. Napisać program z funkcjami obliczającymi podstawowe działania na liczbach zespolonych postaci a + bi. Jak reprezentować liczbę zespoloną w pamięci? Zdefiniuj działania dodawania, odejmowania, mnożenia, dzielenia, sprzężenia, modułu z liczby. Czy działania można zastąpić funkcjami, co jest wynikiem poszczególnych działań? 4. Funkcje rekurencyjne 4.1 Definicje rekurencyjne Pojęcie rekurencji polega na odwołaniu się podczas definiowania danej funkcji do samej siebie, oraz wyznaczeniu punktu końcowego przebiegu rekurencji. Przykładowo funkcję silnia można zdefiniować iteracyjnie n! = (n 1) n lub rekurencyjnie 0! = 1 n! = (n 1)! n. Z wykorzystaniem warunków możemy zapisać, ją w następujący sposób n! = (n 1)! n, gdy (n > 0) lub 1 gdy (n = 0). 4.2 Funkcje rekurencyjne Poniższe definicje można zapisać w języku C/C++ jako funkcje, które pod danym warunkiem albo będą wywoływać same siebie, ze zmienionym parametrem, albo będą zwracać konkretną wartość finalną. Zadanie 1. Napisz rekurencyjną funkcję suma(n,k) sumującą liczby całkowite od n do n+k. Zadanie 2. Napisz rekurencyjną funkcję potęga(a, n) (w najprostszej wersji). Zadanie 3. Napisz rekurencyjną funkcję suma(tab, n), która rekurencyjnie będzie sumować n początkowych elementów z tablicy tab. Jak efektywnie przekazać parametry do tej funkcji? Zadanie 4. Napisz rekurencyjną funkcję sumadodatnich(tab, n), sumującą wyłącznie dodatnie elementy znajdujące się w tablicy tab. 12 S t r o n a

13 Zadanie 5. Napisz procedurę rekurencyjną wypisującą podawane liczby od końca. Zakończenie wprowadzania przez podanie 0. Bez wykorzystania tablicy pomocniczej, przechowującej dane. 5 Losowość 5.1 Wprowadzenie Komputer nie może generować w pełni losowych wartości, może je obliczać, a to znaczy, że nie będzie w nich prawdziwej losowości gdyż będą deterministyczne. Komputer może generować liczby pseudolosowe, które przypominają w praktyce liczby losowe, jednak są one wyznaczane za pomocą deterministycznego algorytmu. Obliczanie liczb rozpoczyna się od wartości początkowej tzw. zarodka ciągu pseudolosowego (ang. seed), a następnie jest powtarzane w pętli zgodnie z pewnym deterministycznym algorytmem. W języku C mamy dwie funkcje związane z ciągami pseudolosowymi: srand() oraz rand(). Pierwsza ustala zalążek generatora ciągu pseudolosowego, funkcję uruchamiamy jeden raz na początku programu, oznacza to, że każde wywołanie programu będzie generować inny ciąg pseudolosowy. Parametrem tej funkcji jest czas jej wywołania (liczba sekund która upłynęła od ustalonej daty), zapisujemy to w następujący sposób: srand(time(0)) lub srand(time(null)) w języku C. Losowanie wartości w trakcie działania programu polega na wywoływaniu funkcji rand(), jako wynik zwraca ona liczbę całkowitą z przedziału 0 do RAND_MAX z rozkładem jednostajnym (wartość RAND_MAX z reguły wynosi 32767). 5.2 Zadania Losowość w programach można wykorzystać do mieszania danych, losowania liczb z danego przedziału, losowania liczb z zadanym rozkładem, algorytmów wykorzystujących losowość w celu poprawienia złożoności, część algorytmów ma praktyczne zastosowanie jedynie przy wykorzystaniu losowości (np. generowanie liczb pierwszych). Zadanie 1. Wylosuj 100 liczb całkowitych z zadanego przedziału [a, b] z rozkładem jednostajnym. Zadanie 2. Symulator Lotto, losowanie 10 kul bez powtórzeń z puli 80 kul. Zadanie 3. Tasowanie talii kart, karta struktura o dwóch polach (kolor, wartość), talia tablica kart, zadanie ma wygenerować ułożoną talię kart, następnie potasować ją i wypisać jeszcze raz na ekranie. Zadanie 4. Wylosuj 1000 liczb z zakresu [0, 9], policz statystykę ich występowania. Czy uzyskano rozkład jednostajny generowanych liczb? Zadanie 5. Wylosuj 10 liczb rzeczywistych z przedziału [0, 10) z dokładnością do trzech miejsc po przecinku. Wypisz największą i najmniejszą wylosowaną wartość. 13 S t r o n a

14 14 S t r o n a

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami 1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami Celem tych zajęć jest zrozumienie i oswojenie z technikami programowania przy pomocy wskaźników w języku C++. Proszę przeczytać rozdział 8.

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW

ZASADY PROGRAMOWANIA KOMPUTERÓW POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.

Bardziej szczegółowo

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis i cz. 2 Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 i cz. 2 2 i cz. 2 3 Funkcje i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje instrukcje } i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje

Bardziej szczegółowo

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy, Lista 3 Zestaw I Zadanie 1. Zaprojektować i zaimplementować funkcje: utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy, zapisz

Bardziej szczegółowo

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

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Programowanie w C++ Wykład 5 Katarzyna Grzelak 26 marca 2018 9 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Pojęcia z poprzedniego wykładu Podział programu na funkcje podział na niezależne

Bardziej szczegółowo

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania Rok akademicki 2013/2014, Pracownia nr 10 2/20 Informatyka 1 Tablica elementów ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu Politechnika Białostocka - Wydział Elektryczny Elektrotechnika,

Bardziej szczegółowo

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

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

Lab 9 Podstawy Programowania

Lab 9 Podstawy Programowania Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany

Bardziej szczegółowo

Rekurencja (rekursja)

Rekurencja (rekursja) Rekurencja (rekursja) Rekurencja wywołanie funkcji przez nią samą wewnątrz ciała funkcji. Rekurencja może być pośrednia funkcja jest wywoływana przez inną funkcję, wywołaną (pośrednio lub bezpośrednio)

Bardziej szczegółowo

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

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij. Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice

Bardziej szczegółowo

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

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4 Dr inż. Dariusz JĘDRZEJCZYK Wskaźniki Dynamiczna alokacja pamięci Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Wskaźnik to

Bardziej szczegółowo

1. Napisz program wypisujący w kolejnych wierszach standardowego wyjścia pojedyncze słowa następującego napisu Bardzo dlugi napis. 2.

1. Napisz program wypisujący w kolejnych wierszach standardowego wyjścia pojedyncze słowa następującego napisu Bardzo dlugi napis. 2. 1. Napisz program wypisujący w kolejnych wierszach standardowego wyjścia pojedyncze słowa następującego napisu Bardzo dlugi napis. 2. Napisz program, który wczytuje ze standardowego wejścia liczbę całkowitą

Bardziej szczegółowo

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

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 programowania Wykład: 5 Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD programowania w C++ Instrukcje sterujące 2 dr Artur Bartoszewski

Bardziej szczegółowo

Algorytmy i język C++

Algorytmy i język C++ Wykład 6 Wskaźniki Wskaźnik nie przechowuje wartości zmiennej ale, podobnie jak tablica, wskazuje miejsce w pamięci, w którym znajduje się zmienna danego typu. W poniższym przykładzie symbol * pomiędzy

Bardziej szczegółowo

I. Podstawy języka C powtórka

I. Podstawy języka C powtórka I. Podstawy języka C powtórka Zadanie 1. Utwórz zmienne a = 730 (typu int), b = 106 (typu long long), c = 123.45 (typu double) Wypisz następujące komunikaty: Dane sa liczby: a = 730, b = 106 i c = 123.45.

Bardziej szczegółowo

Język C, tablice i funkcje (laboratorium, EE1-DI)

Język C, tablice i funkcje (laboratorium, EE1-DI) Język C, tablice i funkcje (laboratorium, EE1-DI) Opracował: Tomasz Mączka (tmaczka@kia.prz.edu.pl) Wstęp (tablice) Tablica to uporządkowany ciąg elementów tego samego typu, zajmujących ciągły obszar pamięci.

Bardziej szczegółowo

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

Języki programowania obiektowego Nieobiektowe elementy języka C++ Języki programowania obiektowego Nieobiektowe elementy języka C++ Roman Simiński roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Przetwarzanie tablic znaków Łańcuchy znakowe jako tablice znaków

Bardziej szczegółowo

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia Podstawy informatyki Elektrotechnika I rok Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia Katedra Energoelektroniki i Automatyki Systemów Przetwarzania Energii AGH Kraków 2017 Tematyka

Bardziej szczegółowo

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

Podstawy algorytmiki i programowania - wykład 4 C-struktury 1 Podstawy algorytmiki i programowania - wykład 4 C-struktury Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com Jerzy

Bardziej szczegółowo

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje Podstawy informatyki Informatyka stosowana - studia niestacjonarne - Zajęcia nr 4 Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w

Bardziej szczegółowo

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

Podstawy Programowania Podstawowa składnia języka C++ Podstawy Programowania Podstawowa składnia języka C++ Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Szablon programu w C++ Najprostszy program w C++ ma postać: #include #include

Bardziej szczegółowo

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

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe Oprócz zmiennych w programie mamy też stałe, które jak sama nazwa mówi, zachowują swoją wartość przez cały czas działania programu. Można

Bardziej szczegółowo

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

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p. Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy Laboratorium 2 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Komentarze Funkcja printf() Zmienne Łańcuchy

Bardziej szczegółowo

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 = Systemy liczbowe Dla każdej liczby naturalnej x Î N oraz liczby naturalnej p >= 2 istnieją jednoznacznie wyznaczone: liczba n Î N oraz ciąg cyfr c 0, c 1,..., c n-1 (gdzie ck Î {0, 1,..., p - 1}) taki,

Bardziej szczegółowo

Tablice deklaracja, reprezentacja wewnętrzna

Tablice deklaracja, reprezentacja wewnętrzna Tablice deklaracja, reprezentacja wewnętrzna Tablica jest zmienną złożoną z elementów tego samego typu. Obejmuje ona ciągły obszar pamięci operacyjnej dokładnie tak duży, aby zmieścić wszystkie jej elementy.

Bardziej szczegółowo

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

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++ Informacje wstępne #include - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char = -128 do 127, unsigned char = od

Bardziej szczegółowo

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński Języki programowania Część druga Przetwarzanie tablic znaków Autorzy Tomasz Xięski Roman Simiński Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi uważnego w nim

Bardziej szczegółowo

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Załóżmy, że uprawiamy jogging i chcemy monitorować swoje postępy. W tym celu napiszemy program, który zlicza, ile czasu

Bardziej szczegółowo

Programowanie obiektowe - zadania

Programowanie obiektowe - zadania Programowanie obiektowe - zadania Elementy języka Java Zad.1. Napisz program, który sprawdza, czy dana liczba całkowita jest parzysta. Zad.2. Napisz program, który sumuje dane dwie liczby tylko w przypadku,

Bardziej szczegółowo

lekcja 8a Gry komputerowe MasterMind

lekcja 8a Gry komputerowe MasterMind lekcja 8a Gry komputerowe MasterMind Posiadamy już elementarną wiedzę w zakresie programowania. Pora więc zabrać się za rozwiązywanie problemów bardziej złożonych, które wymagają zastosowania typowych

Bardziej szczegółowo

Podstawy programowania 1

Podstawy programowania 1 Podstawy programowania 1 Krzysztof Grudzień kgrudzi@kis.p.lodz.pl Wykład nr 2 1 Plan spotkań Wskaźniki Tablice jednowymiarowe & wska źniki. Programowanie w C. Wikibooks 2 Co to jest wskaźnik?? Wskaźnik

Bardziej szczegółowo

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

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Zajęcia nr 2 Programowanie strukturalne dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Pętla while #include using namespace std; int main ()

Bardziej szczegółowo

Język C++ zajęcia nr 2

Język C++ zajęcia nr 2 Język C++ zajęcia nr 2 Inicjalizacja Definiowanie obiektu może być połączone z nadaniem mu wartości początkowej za pomocą inicjalizatora, który umieszczany jest po deklaratorze obiektu. W języku C++ inicjalizator

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część dziewiąta Tablice a zmienne wskaźnikowe Wersja skrócona, tylko C++ Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie

Bardziej szczegółowo

Język C zajęcia nr 11. Funkcje

Język C zajęcia nr 11. Funkcje Język C zajęcia nr 11 Funkcje W języku C idea podprogramów realizowana jest wyłącznie poprzez definiowanie i wywołanie funkcji. Każda funkcja musi być przed wywołaniem zadeklarowana. Deklaracja funkcji

Bardziej szczegółowo

1 Powtórzenie wiadomości

1 Powtórzenie wiadomości 1 Powtórzenie wiadomości Zadanie 1 Napisać program, który w trybie dialogu z użytkownikiem przyjmie liczbę całkowitą, a następnie wyświetli informację czy jest to liczba parzysta czy nieparzysta oraz czy

Bardziej szczegółowo

Podstawy programowania

Podstawy programowania Podstawy programowania Część siódma Przetwarzanie tablic znaków Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Niniejsze opracowanie zawiera skrót treści wykładu,

Bardziej szczegółowo

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java Cechy C++ Język ogólnego przeznaczenia Można programować obiektowo i strukturalnie Bardzo wysoka wydajność kodu wynikowego

Bardziej szczegółowo

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, Materiał

Bardziej szczegółowo

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1 Plan wykładu

Bardziej szczegółowo

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki > C++ dynamiczna alokacja/rezerwacja/przydział pamięci Dane: Iwona Polak iwona.polak@us.edu.pl Uniwersytet Śląski Instytut Informatyki 1429536600 > Dzisiejsze zajęcia sponsorują słówka: new oraz delete

Bardziej szczegółowo

Funkcje. Deklaracja funkcji. Definicja funkcji. Wykorzystanie funkcji w programie.

Funkcje. Deklaracja funkcji. Definicja funkcji. Wykorzystanie funkcji w programie. Funkcje Deklaracja funkcji typ funkcji identyfikator_funkcji(lista parametrów formalnych); Typ funkcji określa typ wartości zwracanej przez funkcję (typ zdefiniowany pierwotnie jak int, typ zdefiniowany

Bardziej szczegółowo

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

Języki i metodyka programowania. Wprowadzenie do języka C Literatura: Brian W. Kernighan, Dennis M. Ritchie Język Ansi C, Wydawnictwa Naukowo - Techniczne, 2007 http://cm.bell-labs.com/cm/cs/cbook/index.html Scott E. Gimpel, Clovis L. Tondo Język Ansi C. Ćwiczenia

Bardziej szczegółowo

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

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27 Programowanie w C++ Wykład 5 Katarzyna Grzelak 16 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły

Bardziej szczegółowo

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1 Tablice i struktury czyli złożone typy danych. Programowanie Proceduralne 1 Tablica przechowuje elementy tego samego typu struktura jednorodna, homogeniczna Elementy identyfikowane liczbami (indeksem).

Bardziej szczegółowo

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

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++ Podstawy programowania Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++ 1 dr Artur Bartoszewski - Podstawy programowania, sem. 1- WYKŁAD Część I Wstęp do struktur danych: Tablice 2

Bardziej szczegółowo

Algorytmy i struktury danych. Wykład 4

Algorytmy i struktury danych. Wykład 4 Wykład 4 Różne algorytmy - obliczenia 1. Obliczanie wartości wielomianu 2. Szybkie potęgowanie 3. Algorytm Euklidesa, liczby pierwsze, faktoryzacja liczby naturalnej 2017-11-24 Algorytmy i struktury danych

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 4. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 4. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy Wykład 4 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Tablice Wskaźniki Adresy pamięci Operator adresu

Bardziej szczegółowo

Zmienne i struktury dynamiczne

Zmienne i struktury dynamiczne Zmienne i struktury dynamiczne Zmienne dynamiczne są to zmienne, które tworzymy w trakcie działania programu za pomocą operatora new. Usuwa się je operatorem delete. Czas ich występowania w programie jest

Bardziej szczegółowo

1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci:

1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci: 1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci: * Jan Kowalski * * ul. Zana 31 * 3. Zadeklaruj zmienne przechowujące

Bardziej szczegółowo

do instrukcja while (wyrażenie);

do instrukcja while (wyrażenie); Instrukcje pętli -ćwiczenia Instrukcja while Pętla while (póki) powoduje powtarzanie zawartej w niej sekwencji instrukcji tak długo, jak długo zaczynające pętlę wyrażenie pozostaje prawdziwe. while ( wyrażenie

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015 POLITECHNIKA WARSZAWSKA Instytut Automatyki i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015 Język programowania: Środowisko programistyczne: C/C++ Qt Wykład 4 : Napisy. Tablice dwuwymiarowe. Formaty

Bardziej szczegółowo

Wstęp do informatyki- wykład 7

Wstęp do informatyki- wykład 7 1 Wstęp do informatyki- wykład 7 Operatory przypisania, złożone operatory przypisania, Pętla while i do..while Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania.

Bardziej szczegółowo

2. Zmienne i stałe. Przykłady Napisz program, który wypisze na ekran wynik dzielenia 281 i 117 w postaci liczby mieszanej (tj. 2 47/117).

2. Zmienne i stałe. Przykłady Napisz program, który wypisze na ekran wynik dzielenia 281 i 117 w postaci liczby mieszanej (tj. 2 47/117). 2. Zmienne i stałe Przykłady 2.1. Napisz program, który wypisze na ekran wynik dzielenia 281 i 117 w postaci liczby mieszanej (tj. 2 47/117). 5 int a = 281; int b = 117; 7 8 cout

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część siódma Przetwarzanie tablic znaków Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,

Bardziej szczegółowo

DANE TEKSTOWE W JĘZYKU C/C++ - TABLICE ZNAKOWE

DANE TEKSTOWE W JĘZYKU C/C++ - TABLICE ZNAKOWE DANE TEKSTOWE W JĘZYKU C/C++ - TABLICE ZNAKOWE Stała tekstowa / łańcuchowa jest tablicą znaków zakończoną znakiem o kodzie: 0 np. stała łańcuchowa: Jestem tekstem ASCII... J e s t e m t e k s t e m \0...

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6 JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona

Bardziej szczegółowo

Wykład 1: Wskaźniki i zmienne dynamiczne

Wykład 1: Wskaźniki i zmienne dynamiczne Programowanie obiektowe Wykład 1: Wskaźniki i zmienne dynamiczne 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD Podstawy programowania w C++ Wskaźniki 2 dr Artur Bartoszewski - Programowanie

Bardziej szczegółowo

Pliki. Informacje ogólne. Obsługa plików w języku C

Pliki. Informacje ogólne. Obsługa plików w języku C Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych (np. dysku twardym, pendrive, płycie DVD itp.). Może posiadać określone atrybuty, a odwołanie do niego

Bardziej szczegółowo

Język C, tablice i funkcje (laboratorium)

Język C, tablice i funkcje (laboratorium) Język C, tablice i funkcje (laboratorium) Opracował: Tomasz Mączka (tmaczka@kia.prz.edu.pl) Wstęp (tablice) Tablica to uporządkowany ciąg elementów tego samego typu, zajmujących ciągły obszar pamięci.

Bardziej szczegółowo

Część 4 życie programu

Część 4 życie programu 1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część

Bardziej szczegółowo

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

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO Rozdział 1. Wybór i instalacja kompilatora języka Pascal 1.1. Współczesne wersje kompilatorów Pascala 1.2. Jak zainstalować

Bardziej szczegółowo

Struktury Struktura polami struct struct struct struct

Struktury Struktura polami struct struct struct struct Struktury Struktura jest zbiorem zmiennych występujących pod wspólna nazwą. Zmienne wchodzące w skład struktury nazywane są polami lub elementami, a czasem członkami struktury. Struktury używamy, jeśli

Bardziej szczegółowo

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny: Wskaźniki nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny: typ nw; /* definicja zmiennej nw typu typ */ typ *w_nw; /* definicja

Bardziej szczegółowo

Zmienne, stałe i operatory

Zmienne, stałe i operatory Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe

Bardziej szczegółowo

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

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 Języki C i C++ Wykład: 2 Wstęp Instrukcje sterujące 1 dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD programowania w C++ Instrukcje sterujące 2 Pętla for for ( instrukcja_ini ; wyrazenie_warunkowe

Bardziej szczegółowo

2 Przygotował: mgr inż. Maciej Lasota

2 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania

Bardziej szczegółowo

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

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

typ y y p y z łoż o on o e n - tab a lice c e w iel e owym m ar a o r we, e stru r kt k ury

typ y y p y z łoż o on o e n - tab a lice c e w iel e owym m ar a o r we, e stru r kt k ury typy złożone- tablice wielowymiarowe, struktury Wykład 6 Deklarowanie wskaźników nazwa_typu * nazwa_wskaznika; WSKAŹNIKI: PRZYPOMNIENIE Przypisywanie wskaźnikom wartości double * pn = &zmienna_typu_double;

Bardziej szczegółowo

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki Konwersje napis liczba Struktury, unie Scanf / printf Wskaźniki Konwersje liczba napis Ćwiczenia 1. Napisz aplikację, która na wejściu dostaje napis postaci W Roku Pańskim 1345, władca Henryk 12,

Bardziej szczegółowo

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

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji

Bardziej szczegółowo

Program 6. Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje:

Program 6. Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje: Program 6 Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje: Funkcja pobierz_osobe wczytuje dane osoby podanej jako argument. Funkcja wypisz_osobe

Bardziej szczegółowo

Struktury, unie, formatowanie, wskaźniki

Struktury, unie, formatowanie, wskaźniki Struktury, unie, formatowanie, wskaźniki 1. Napisz aplikację, która na wejściu dostaje napis postaci W Roku Pańskim 1345, władca Henryk 12, na rzecz swoich 143209 poddanych uchwalił dekret o 20 procentowej

Bardziej szczegółowo

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

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Programowanie w C++ Wykład 2 Katarzyna Grzelak 4 marca 2019 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Na poprzednim wykładzie podstawy C++ Każdy program w C++ musi mieć funkcję o nazwie main Wcięcia

Bardziej szczegółowo

> C++ typy wyliczeniowe, struktury, unie, konwersje napis <-> liczba, formatowanie wyjścia

> C++ typy wyliczeniowe, struktury, unie, konwersje napis <-> liczba, formatowanie wyjścia > C++ typy wyliczeniowe, struktury, unie, konwersje napis liczba, formatowanie wyjścia Dane: Iwona Polak iwona.polak@us.edu.pl Uniwersytet Śląski Instytut Informatyki 1426512600 > Typy wyliczeniowe

Bardziej szczegółowo

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

Temat 1: Podstawowe pojęcia: program, kompilacja, kod Temat 1: Podstawowe pojęcia: program, kompilacja, kod wynikowy. Przykłady najprostszych programów. Definiowanie zmiennych. Typy proste. Operatory: arytmetyczne, przypisania, inkrementacji, dekrementacji,

Bardziej szczegółowo

Argumenty wywołania programu, operacje na plikach

Argumenty wywołania programu, operacje na plikach Temat zajęć: Argumenty wywołania programu, operacje na plikach Autor: mgr inż. Sławomir Samolej Zagadnienie 1. (Zmienne statyczne) W języku C można decydować o sposobie przechowywania zmiennych. Decydują

Bardziej szczegółowo

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

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop. 2010 Spis treści Wstęp 11 Część I PASCAL - wprowadzenie do programowania strukturalnego

Bardziej szczegółowo

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

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119 Tablice Tablica to struktura danych, która może przechowywać wiele wartości tego samego typu. Na przykład tablica może zawierać: 10 wartości typu int opisujących liczbę studentów przyjętych na kierunek

Bardziej szczegółowo

ŁAŃCUCHY W JĘZYKU C/C++

ŁAŃCUCHY W JĘZYKU C/C++ ŁAŃCUCHY W JĘZYKU C/C++ Stała tekstowa / łańcuchowa jest tablicą znaków zakończoną znakiem o kodzie: 0 np. stała łańcuchowa: Jestem tekstem... 74 101 115 116 101 109 32 116 101 107 115 116 101 109 0......

Bardziej szczegółowo

Programowanie strukturalne i obiektowe. Funkcje

Programowanie strukturalne i obiektowe. Funkcje Funkcje Często w programach spotykamy się z sytuacją, kiedy chcemy wykonać określoną czynność kilka razy np. dodać dwie liczby w trzech miejscach w programie. Oczywiście moglibyśmy to zrobić pisząc trzy

Bardziej szczegółowo

Napisz program wypisujący na standardowym wyjściu następujący napis: Napis zawierający różne dziwne znaczki // \ \$ &%.

Napisz program wypisujący na standardowym wyjściu następujący napis: Napis zawierający różne dziwne znaczki // \ \$ &%. ZADANIE 1. ZADANIE 2. ZADANIE 3. ZADANIE 4. ZADANIE 5. ZADANIE 6. ZADANIE 7. ZADANIE 8. ZADANIE 9. ZADANIE 10. ZADANIE 11. Napisz program wypisujący na standardowym wyjściu następujący napis: Napis zawierający

Bardziej szczegółowo

C++ wprowadzanie zmiennych

C++ wprowadzanie zmiennych C++ wprowadzanie zmiennych Każda zmienna musi być zadeklarowana, należy określić jej nazwę (identyfikator) oraz typ. Opis_typu lista zmiennych Dla każdej zmiennej rezerwowany jest fragment pamięci o określonym

Bardziej szczegółowo

Wstęp do informatyki- wykład 1 Systemy liczbowe

Wstęp do informatyki- wykład 1 Systemy liczbowe 1 Wstęp do informatyki- wykład 1 Systemy liczbowe Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com Jerzy Grębosz,

Bardziej szczegółowo

Wskaźniki. Informatyka

Wskaźniki. Informatyka Materiały Wskaźniki Informatyka Wskaźnik z punktu widzenia programisty jest grupą komórek pamięci (rozmiar wskaźnika zależy od architektury procesora, najczęściej są to dwa lub cztery bajty ), które mogą

Bardziej szczegółowo

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje Funkcje (podprogramy) Mianem funkcji określa się fragment kodu, który może być wykonywany wielokrotnie z różnych miejsc programu. Ogólny zapis: typ nazwa(argumenty) ciało funkcji typ określa typ danych

Bardziej szczegółowo

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski 7 kwietnia 2014 1. Wprowadzenie Pierwsza część instrukcji zawiera informacje

Bardziej szczegółowo

Zajęcia 4 procedury i funkcje

Zajęcia 4 procedury i funkcje Zajęcia 4 procedury i funkcje 1. Napisz funkcję, która dokonuje dodania dwóch liczb przekazanych jako parametry. Następnie: zmień wartości zmiennych przekazanych jako parametry wewnątrz tej funkcji, ustaw

Bardziej szczegółowo

Podstawy Programowania C++

Podstawy Programowania C++ Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:

Bardziej szczegółowo

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na

Bardziej szczegółowo

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Wykład: 13 Rekurencja 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Rekurencja - pojęcie 2 Rekurencja - pojęcie Rekurencja (rekursja) wywołanie

Bardziej szczegółowo

Wstęp do Programowania, laboratorium 02

Wstęp do Programowania, laboratorium 02 Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite

Bardziej szczegółowo

DYNAMICZNE PRZYDZIELANIE PAMIECI

DYNAMICZNE PRZYDZIELANIE PAMIECI DYNAMICZNE PRZYDZIELANIE PAMIECI Pamięć komputera, dostępna dla programu, dzieli się na cztery obszary: kod programu, dane statyczne ( np. stałe i zmienne globalne programu), dane automatyczne zmienne

Bardziej szczegółowo

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński WYKŁAD 8 Funkcje i algorytmy rekurencyjne Proste przykłady Programy: c3_1.c..., c3_6.c Tomasz Zieliński METODY REKURENCYJNE (1) - program c3_1 ======================================================================================================

Bardziej szczegółowo

Struktura pliku projektu Console Application

Struktura pliku projektu Console Application Struktura pliku projektu Console Application #include #include using namespace std; int main(int argc, char *argv[]) // to jest komentarz system("pause"); return EXIT_SUCCESS; Na początku

Bardziej szczegółowo

C-struktury wykład. Dorota Pylak

C-struktury wykład. Dorota Pylak C-struktury wykład Dorota Pylak C-struktury W języku C++, jak w każdym języku obiektowym, mamy możliwość definiowania własnych typów danych, wraz z określeniem operacji, jakie na tych danych można wykonywać.

Bardziej szczegółowo

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

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1 Typy złożone Struktury, pola bitowe i unie. Programowanie Proceduralne 1 Typy podstawowe Typy całkowite: char short int long Typy zmiennopozycyjne float double Modyfikatory : unsigned, signed Typ wskaźnikowy

Bardziej szczegółowo

Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak:

Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak: Ćwiczenie nr 6 Temat: Operacje na łańcuchach znaków. Zagadnienia: Zasady pracy z łańcuchami tekstowymi (tablice wartości typu char). funkcje standardowe operacji na łańcuchach, funkcje I/O dla operacji

Bardziej szczegółowo