Wykład 1. Proponowany termin kolokwium zaliczeniowego ostatni wykład w semestrze letnim

Podobne dokumenty
Podstawy programowania - 1

Podstawy programowania (1)

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

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

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce.

Programowanie strukturalne i obiektowe

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

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++

Zmienne, stałe i operatory

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

Wstęp do programowania. Wykład 1

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

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

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

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

( wykł. dr Marek Piasecki )

1. Wprowadzanie danych z klawiatury funkcja scanf

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

2 Przygotował: mgr inż. Maciej Lasota

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

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

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

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

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 proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

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

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

Podstawy programowania w języku C

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

Podstawy Programowania

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

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

Język C zajęcia nr 11. Funkcje

Programowanie w języku Python. Grażyna Koba

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

Podstawy programowania C. dr. Krystyna Łapin

Wykład 2 Składnia języka C# (cz. 1)

Podstawy Programowania. Wykład 1

Część 4 życie programu

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

Wstęp do programowania INP003203L rok akademicki 2016/17 semestr zimowy. Laboratorium 1. Karol Tarnowski A-1 p.

Tablice (jedno i wielowymiarowe), łańcuchy znaków

#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 ); }

Microsoft IT Academy kurs programowania

#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 ); }

Podstawy programowania w C++

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

Programowanie strukturalne. dr inż. Tadeusz Jeleniewski

Język ludzki kod maszynowy

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

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

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

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

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

Pytania sprawdzające wiedzę z programowania C++

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

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

Wstęp do Programowania 2

Programowanie w języku C++

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

Język C część 1. Sformułuj problem Zanalizuj go znajdź metodę rozwiązania (pomocny może byd algorytm) Napisz program Uruchom i przetestuj czy działa

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

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

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

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

Wykład 1.sxw

1 P roste e t ypy p d a d n a ych c - c ąg ą g d a d l a szy 2 T y T py p z ł z o ł żo ż ne e d a d n a ych c : T BLICE

Podstawy i języki programowania

Powtórka algorytmów. Wprowadzenie do języka Java.

Programowanie strukturalne język C - wprowadzenie

WPROWADZENIE DO JĘZYKA C++

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

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

1. Brian W. Kernighan, Dennis M. Ritchie, Język ANSI C, WNT, Warszawa 1998.

INFORMATYKA Studia Niestacjonarne Elektrotechnika

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

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Programowanie komputerowe. Zajęcia 1

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

Wstęp do Programowania, laboratorium 02

Utworzenie pliku. Dowiesz się:

I - Microsoft Visual Studio C++

Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania w języku C++

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 2. Karol Tarnowski A-1 p.

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

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

Struktura pliku projektu Console Application

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

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

Programowanie Obiektowe i C++

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

tablica: dane_liczbowe

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

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

Powtórka algorytmów. Wprowadzenie do języka Java.

Język C - podstawowe informacje

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Transkrypt:

Wykład 1 Dr inż. Tadeusz Jeleniewski e-mail: tadeusz.jeleniewski@pwr.edu.pl lub t.jeleniewski@ujw.pl Materiały streszczenia wykładów, zadania, przykłady znajdują się pod adresem: http://tjeleniewski.ujw.edu.pl Przedmiot kończy się zaliczeniem na stopień Proponowany termin kolokwium zaliczeniowego ostatni wykład w semestrze letnim Formą towarzyszącą jest laboratorium 2017-02-16 Programowanie strukturalne W1 1

Programowanie strukturalne program zajęć 1. Wprowadzenie Algorytmiczne języki programowania. Struktura programu źródłowego w języku C/C++. Proces kompilacji, konsolidacji i uruchamiania. Przykład prostego programu. Jednostki składniowe języka. 2. Podstawowe pojęcia Typy wartości, zmienne. Reprezentacja danych w komputerze. Typy całkowite i rzeczywiste. Inicjacja zmiennych. 3. Komunikacja programu z otoczeniem Funkcje scanf, prntf, gets, puts. Podejście "obiektowe" - strumienie standardowe cin, cout 4. Wskaźniki Zmienne i ich adresy. Odwoływanie się do zmiennych przez nazwę lub adres. Zmienne wskaźnikowe - notacja, znaczenie. Arytmetyka wskaźników. 5. Operatory i wyrażenia Przypisanie proste i arytmetyczne, wyrażenia arytmetyczne, inkrementacja i dekrementacja, operatory logiczne, relacje, operatory bitowe, wyrażenie warunkowe 6. Sterowanie wykonaniem programu Instrukcja if, if... else, else if. Zagnieżdżanie instrukcji if. Instrukcja switch... case 7. Instrukcje iteracyjne Pojęcie pętli programowej. Pętla for, pętle z badaniem warunku na początku (while) i na końcu (do... while). Zagnieżdżanie pętli. Instrukcje break oraz continue 8. Funkcje Pojęcie funkcji w C/C++. Deklaracja (prototyp) i definicja funkcji. Zwracanie wartości funkcji. Przekazywanie argumentów przez wartość, adres i referencję 9. Tablice i łańcuchy Typ strukturalny - tablica, deklaracja i inicjacja wartości elementów. Tablice jako argumenty funkcji. Łańcuch znaków i jego reprezentacja w postaci tablicy znakowej. 10. Struktury Pojęcie struktury, deklaracja struktury, atrybuty dostępu, możliwość definiowania metod. Zagnieżdżanie struktur. Wskaźniki na struktury. Tablice struktur. Unie i ich zastosowanie. 2017-02-16 Programowanie strukturalne W1 2

Literatura Walter Savitch Programowanie w tonacji C++. Wydawnictwo RM, Warszawa, 2005 Jerzy Grębosz Symfonia C++. Oficyna Kallimach, Kraków, 2010 Jesse Liberty C++ dla każdego. Wydawnictwo HELION, 2002 I wiele innych podręczników na temat programowania w języku C/C++ 2017-02-16 Programowanie strukturalne W1 3

O czym będzie pierwszy wykład? Co to jest program komputerowy i jak powstaje Struktura programu źródłowego w języku C/C++ Jednostki składniowe Typy i zmienne całkowite, reprezentacja danych całkowitych, stałe całkowite Typy rzeczywiste, inicjacja zmiennych rzeczywistych Typy i zmienne wskaźnikowe 2017-02-16 Programowanie strukturalne W1 4

Tworzenie programu komputerowego w języku C/C++ (i innych) odbywa się w dwóch etapach: - opracowanie kodu źródłowego - generowanie kodu wynikowego. Przed rozpoczęciem opracowywania kodu źródłowego należy obmyślić algorytm rozwiązania postawionego zadania. Algorytm to sposób rozwiązania pewnej klasy zadań. Opracowanie kodu źródłowego czyli tzw. kodowanie to zapis wcześniej obmyślonego algorytmu w języku programowania - w naszym przypadku jest nim język C/C++. Kod wynikowy generuje komputer. Specjalny program - kompilator analizuje kod źródłowy programu pod względem poprawności leksykalnej, składniowej i częściowo semantycznej (znaczeniowej) i po ewentualnym usunięciu przez programistę wykrytych błędów tłumaczy na postać pośrednią, do której inny program (program łączący - linker) dołącza brakujące elementy umieszczone w bibliotekach funkcji. 2017-02-16 Programowanie strukturalne W1 5

Po pomyślnym zakończeniu procesu łączenia powstaje kod wynikowy - program gotowy do wykonania przez maszynę. Jest to algorytm rozwiązania zadania zapisany w języku wewnętrznym komputera. Algorytm nie jest na ogół pozbawiony błędów wykonania. Są to błędy, których nie wykrywa kompilator w fazie analizy poprawności programu źródłowego. Inna kategoria błędów, to błędy wykrywane przez program tłumaczący kompilator. Są to tzw. błędy kompilacji. Porównać je można do błędów ortograficznych, składniowych oraz gramatycznych, które często zdarza nam się popełniać w języku naturalnym (nawet ojczystym). Rysunek przedstawia schematycznie przebieg procesu tworzenia kodu wynikowego pewnego programu 2017-02-16 Programowanie strukturalne W1 6

2017-02-16 Programowanie strukturalne W1 7

Charakterystyczną cechą języka C/C++ jak i wielu innych języków programowania jest możliwość budowy programu z wielu modułów. Modułem w języku C/C++ może być każdy plik zawierający poprawny kod źródłowy. Program w języku C/C++ buduje się z funkcji. Każda funkcja może (ale nie musi) posiadać parametry i może, ale nie musi reprezentować wartość określonego typu. Aby możliwe było wygenerowanie kodu wynikowego programu w postaci przyjmowanej przez system operacyjny (w systemach operacyjnych DOS, Windows jest to zbiór z rozszerzeniem.exe) w jednym (i tylko w jednym) module programu musi znaleźć się funkcja o nazwie main (lub podobnej zależnie od środowiska). Od tej funkcji głównej system rozpoczyna wykonywanie programu. Moduł, który zawiera tą funkcję nazywa się modułem głównym. 2017-02-16 Programowanie strukturalne W1 8

Najprostszy, poprawny program w C/C++ może mieć postać: { } void main(void) Program ten składa się z bezparametrowej funkcji main. Funkcja ta nie reprezentuje żadnej wartości - powiadamy że nie "zwraca" do systemu operacyjnego żadnej wartości. Wewnątrz nawiasów klamrowych znajduje się blok, który zawiera definicję funkcji. Definicję funkcji często nazywa się jej ciałem. Przydatność praktyczna takiego programu jest oczywiście znikoma. Wewnątrz bloku stanowiącego definicję funkcji nie umieszczono żadnego polecenia ten program niczego nie wykonuje. 2017-02-16 Programowanie strukturalne W1 9

Inny, prosty program może mieć postać: /* Program 1.2 - przykład prostego programu napisanego w języku C++. Program wyświetla na ekranie komunikat powitalny */ #include <iostream.h> void main(void) { cout << "\nwitaj w świecie C++"; } 2017-02-16 Programowanie strukturalne W1 10

W tekście tego programu można wyróżnić następujące elementy (jednostki składniowe): komentarz - fragment tekstu pomijany przez kompilator w procesie analizy i tłumaczenia programu źródłowego; komentarzem jest dowolny tekst pomiędzy parą symboli dwuznakowych /* (ukośnik gwiazdka) oraz */ (gwiazdka ukośnik); w wersji C++ języka znacznikiem komentarza (tzw. jednowierszowego) jest też znak // i wtedy kompilator ignoruje napis od tego znacznika do końca wiersza; dyrektywa preprocesora - słowo include wraz z poprzedzającym je znakiem #; jest to polecenie dla kompilatora, aby przed rozpoczęciem analizy tekstu źródłowego dołączył do niego tzw. plik nagłówkowy o nazwie iostream.h; w plikach nagłówkowych znajdują się definicje symboli użytych w programie oraz tzw. prototypy funkcji; deklaracja funkcji main - przykładowy program składa się z bezparametrowej funkcji głównej nie reprezentującej sobą żadnej wartości, na co wskazuje słowo kluczowe void poprzedzające nazwę funkcji głównej; wewnątrz nawiasów klamrowych znajduje się blok zawierający definicję (ciało) funkcji głównej; cout jest nazwą obiektu zdefiniowanego w pliku nagłówkowym iostream.h; obiekt ten to tzw. strumień wyjściowy, do którego za pomocą operatora << (również zdefiniowanego w pliku iostream.h) program prześle tekst komunikatu do wyświetlenia na ekranie monitora. 2017-02-16 Programowanie strukturalne W1 11

Przykładowy program wyświetli na ekranie monitora napis (komunikat) treści: Witaj w świecie C++ oraz zakończy działanie. Takie samo zadanie wykona program: /* Program w1_2 - inna wersja (proceduralna) prostego programu, ktory wyswietla komunikat powitalny */ #include <stdio.h> void main(void) { printf("\nwitaj w swiecie C++"); } Do wyświetlenia komunikatu użyto tutaj funkcji standardowej o nazwie printf, której parametrem jest łańcuch znaków. Funkcja ta nie zwraca żadnej wartości. Warto zauważyć, że w tym przypadku do tekstu programu dołączono inny niż poprzednio plik nagłówkowy. W pliku stdio.h znajduje się prototyp funkcji standardowej użytej w naszym przykładzie. Definicja tej funkcji znajduje się w bibliotece funkcji standardowych, która jest automatycznie przeglądana przez program łączący w fazie tworzenia kodu wynikowego. 2017-02-16 Programowanie strukturalne W1 12

Jednostkami składniowymi języka C++ są: identyfikatory, słowa kluczowe, znaki przestankowe, stałe, literały łańcuchowe, operatory. Identyfikatorem (nazwą) w języku C++ może być ciąg znaku podkreślenia. Identyfikator jest nazwą elementu języka (zmiennej, funkcji itp.). Pierwszy znak identyfikatora musi być literą lub znakiem podkreślenia. dużych i małych liter, cyfr i Kompilator C++ rozróżnia pierwsze 32 litery nazwy. Nazwy dłuższe są poprawne. Kompilator rozróżnia duże i małe litery nazwy. Nazwa Yuma_15_10 np. yuma_15_10 jest identyfikatorem zupełnie innego elementu programu niż 2017-02-16 Programowanie strukturalne W1 13

Słowa kluczowe są to identyfikatory zastrzeżone dla specjalnych celów. Mogą być wykorzystywane tylko zgodnie z ich przeznaczeniem. Zestawienie wszystkich słów kluczowych można znaleźć w wielu podręcznikach języka C/C++ Kilka przykładów słów kluczowych: void for int short float return do while struct class continue switch case Słowa kluczowe to instrukcje języka, nazwy typów, dyrektywy preprocesora i kompilatora itp. 2017-02-16 Programowanie strukturalne W1 14

Znakami przestankowymi są: [ ] ( ) { }, ; :... * = # nawiasy kwadratowe [ ] - definiowanie tablic i wskazywanie ich elementów, nawiasy okrągłe ( ) - grupowanie wyrażeń, wywołania funkcji, lista parametrów, nawiasy klamrowe { } - początek i koniec instrukcji złożonej (bloku), przecinek, - oddzielanie elementów listy, średnik ; - zakończenie instrukcji, dwukropek : - poprzedzający go ciąg znaków jest etykietą, wielokropek... - deklarowanie funkcji o zmiennej liczbie parametrów, gwiazdka * - deklarowanie zmiennych wskaźnikowych, znak równości = - oddzielanie deklaracji zmiennej od części inicjującej tą zmienną, znak # - oznaczenie dyrektywy preprocesora. 2017-02-16 Programowanie strukturalne W1 15

Typ danej to zbiór wartości jakie dana może przyjmować. Typ danej determinuje również sposób jej przechowywania w pamięci komputera i obszar jaki zajmuje (liczbę jednostek pamięci - bajtów). W języku C/C++ dostępne są typy proste i strukturalne. Typy proste wykorzystuje się do tworzenia typów strukturalnych. Do kategorii prostych w języku C/C++ należą typy: - arytmetyczne całkowite i rzeczywiste, - wskaźnikowe, W języku C++ występuje ponadto typ referencyjny. Typy strukturalne mogą składać się z danych typów prostych i innych typów strukturalnych. Typami strukturalnymi w języku C/C++ są: - tablice, - struktury, - unie. W C++ grupę typów strukturalnych uzupełniają klasy. Typ danej jest pojęciem logicznym. Reprezentantem fizycznym typu danej jest zmienna. 2017-02-16 Programowanie strukturalne W1 16

Typy i zmienne całkowite. Typy całkowite w C/C++ są skończonymi, przeliczalnymi podzbiorami zbioru liczb całkowitych. Zmienne typów całkowitych deklaruje się w programach za pomocą słów kluczowych (lub ich kombinacji): char int long signed short unsigned typ znakowy typ całkowity typ tzw. długich liczb całkowitych liczby całkowite ze znakiem typ tzw. krótkich liczb całkowitych liczby całkowite bez znaku 2017-02-16 Programowanie strukturalne W1 17

Wymienione słowa kluczowe można łączyć dla oznaczenia różnych kombinacji cech zmiennych. Przykłady: char a; signed char a; - zmienna a jest wartością dziesiętną kodu ASCII pewnego znaku wartość kodu jest opatrzona znakiem plus lub minus short k, m, n; short int k, m, n; short signed k, m, n; short signed int k, m, n; - zmienne k, m, n są liczbami całkowitymi krótkimi ze znakiem unsigned short q, ilosc; unsigned short int q, ilosc; - zmienne q, ilosc są liczbami całkowitymi krótkimi bez znaku int K[20] signed int K[20]; - tablica K zawiera liczby całkowite ze znakiem (dodatnie albo ujemne) 2017-02-16 Programowanie strukturalne W1 18

unsigned _jakosc; unsigned int _jakosc; - zmienna _jakosc jest liczbą całkowitą bez znaku long dlugosc, kat; long int dlugosc, kat; signed long int dlugosc, kat; - zmienne dlugosc, kat są liczbami całkowitymi długimi ze znakiem unsigned long szerokosc, x, y; unsigned long int szerokosc, x, y; - zmienne szerokosc, x, y są liczbami całkowitymi długimi bez znaku 2017-02-16 Programowanie strukturalne W1 19

Obszar zajmowany w pamięci oraz zakres wartości zmiennych całkowitych zależą od sprzętu, systemu operacyjnego, kompilatora, wreszcie typu wartości. Przykładowo w systemie programowania C/C++ Borland: unsigned char 8 bitów 0 255 signed char 8 bitów -128 127 unsigned int 16 bitów 0 65535 short signed int 16 bitów -32768 32767 signed int 16 bitów -32768 32767 long unsigned int 32 bity 0 4.294.967.295 long signed int 32 bity -2.147.483. 648 2.147.483.647 2017-02-16 Programowanie strukturalne W1 20

Inicjowanie zmiennych polega na przypisaniu im początkowej wartości. Kompilator podczas tłumaczenia programu źródłowego nadaje zmiennym wartości nieokreślone (przypadkowe). Prowadzi to często do powstania trudnych do wykrycia błędów wykonania. Zapobiec temu może inicjowanie zmiennych przed ich pierwszym użyciem. W języku C/C++ można tego dokonać wraz z deklaracją zmiennej. Ma ona następującą postać ogólną: typ-całkowity identyfikator [=stała-odpowiedniego-typu] (1.1) Uwaga! Dalej w wyrażeniach przedstawiających postać ogólną składni będziemy używać "metasymbolu" [ ] dla oznaczenia części zdania, która może, ale nie musi wystąpić. Metasymbol { } będzie oznaczać część definicji, która może wystąpić wiele razy. 2017-02-16 Programowanie strukturalne W1 21

Przykłady deklaracji i inicjacji zmiennych znakowych: char litera_a=65; char bubel='b'; char Nowa_Linia='\n'; wartość dziesiętna kodu znaku A znak B znak sterujący "przejście" do następnej linii char odstep16='\x20'; znak o kodzie szesnastkowym 20 - odstęp (spacja) char odstep10='\32'; znak o kodzie dziesiętnym 32 spacja Zmiennym typu znakowego (char) nadaje się wartości (również początkowe) podając wartość dziesiętną kodu znaku lub znak ujęty w apostrofy. Znaki sterujące oraz znaki wykorzystywane przez język C/C++ są kodowane w postaci \litera-lub-znak. Można również podać wartość szesnastkową lub ósemkową kodu ASCII znaku. 2017-02-16 Programowanie strukturalne W1 22

Znaki sterujące w C/C++ Sekwencja Wartość hex Nazwa znaku \a 07 BEL sygnał dźwiękowy Funkcja \b 08 BS cofnięcie kursora i usunięcie znaku \f 0C FF wysunięcie strony (ang. Form Feed) \n 0A LF przesunięcie o 1 wiersz w dół (ang. Line Feed) \r 0D CR przesunięcie kursora na poczatek linii (ang. Carriage Return) \t 09 HT tabulator poziomy \v 0B VT tabulator pionowy \\ 5C lewy ukośnik \' 27 apostrof \" 22 cudzysłów \? 3F znak zapytania 2017-02-16 Programowanie strukturalne W1 23

Aby zainicjować zmienne typów int i long int należy po znaku równości podać liczbową stałą całkowitą. Może nią być: stała dziesiętna, stała ósemkowa (rozpoczynająca się od cyfry 0), stała szesnastkowa (rozpoczynająca się znakami 0x). W podanym dalej przykładzie programu występują deklaracje zmiennych całkowitych, ich inicjacje oraz wywołania funkcji wyprowadzania do standardowego urządzenia wyjściowego - monitora. 2017-02-16 Programowanie strukturalne W1 24

/* Przyklad programu, w ktorym wystepuja inicjacje zmiennych calkowitych i wyswietlanie ich wartosci */ #include <conio.h> //Wiersze nr 3-5 #include <stdio.h> #include <stdlib.h> using namespace std; // 6 int main(void) // 7 { // 8 char xa=65, my='y'; // 9 unsigned int x=12101, y=0121, z=0xfa; // 10 short signed int q=-23409, r=11206; // 11 unsigned long dluga=234ul; // 12 signed long int po_co=-567l; // 13 system("cls"); // 14 printf("\n Liczby: \n wartosc xa = %c \n wartosc my = %c", xa, my); // 15 i 16 printf("\n wartosc x = %u \n wartosc y = %o \n wartosc z = %x", x, y, z); // 17 i 18 printf("\n wartosc q = %d \n wartosc r = %d", q, r); // 19 printf("\n wartosc dluga = %lu \n po_co = %ld", dluga, po_co); // 20 system("pause"); // 21 system("cls"); // 22 return 0; // 23 } 2017-02-16 Programowanie strukturalne W1 25

Pierwsze 2 wiersze tekstu stanowią komentarz (łańcuch znaków pomiędzy /* i */ ). Wiersze 3-5 - dyrektywy include preprocesora (poprzedza je znak #); polecają dołączyć w tym miejscu do tekstu programu pliki nagłówkowe conio.h oraz stdio.h. W plikach tych znajdują się definicje stałych i symboli oraz prototypy funkcji odpowiedzialnych za obsługę konsoli (plik conio.h) oraz standardowego wejścia-wyjścia (plik stdio.h). Znaki < > ograniczające nazwy tych plików oznaczają, że kompilator powinien szukać tych zbiorów w specjalnym katalogu o nazwie INCLUDE stanowiącym podkatalog katalogu, gdzie zlokalizowane są wszystkie elementy języka C/C++. Ograniczniki " " nazw plików nagłówkowych polecają kompilatorowi szukać tych zbiorów w bieżącej kartotece (tzw. katalogu roboczym). Wiersz 6 informuje o tym, że do poprawnego skompilowania i uruchomienia programu niezbędna jest tzw. "przestrzeń nazw" (biblioteka) std Wiersz 7 zawiera deklarację (nagłówek) funkcji głównej main. Wiersz 8 - nawias klamrowy otwierający blok, który stanowi "ciało" funkcji głównej W wierszu 9 znajdują się deklaracje i inicjacje zmiennych całkowitych typu char. Zmienną xa zainicjowano wartością dziesiętną kodu dużej litery A (wartość 65), a zmienną my - znakiem y (wewnątrz maszyny jest on przechowywany jako liczba o wartości dziesiętnej 121). W wierszu 10 zadeklarowano i nadano wartości początkowe zmiennym x, y, z typu całkowitego bez znaku; zmiennej x nadano wartość dziesiętna 12101, zmiennej y - wartość 81 zapisaną w postaci ósemkowej jako 0121; zmienna z będzie mieć wartość odpowiadającą liczbie dziesiętnej 250; w wyrażeniu inicjującym wartość tą zapisano w postaci stałej szesnastkowej jako 0xfa. 2017-02-16 Programowanie strukturalne W1 26

Wiersz 11 - deklaracja i inicjacja zmiennych q oraz r typu całkowitego krótkiego ze znakiem. Nadano im wartości początkowe właściwe dla ich typów. W wierszu 12 znajduje się deklaracja i inicjator zmiennej całkowitej długiej bez znaku dluga - nadano jej wartość początkową 234. Litery UL sygnalizują kompilatorowi, że powinien on zapisać tą daną w pamięci w postaci właściwej dla typu unsigned long. Zapobiega to ewentualnej zmianie sposobu zapisu w czasie wykonywania programu. W wierszu 13 zadeklarowano i zainicjowano zmienną całkowitą po_co typu signed long int. W wierszu 14 znajduje się wywołanie funkcji standardowej system("cls"); jej prototyp znajduje się w pliku nagłówkowym stdlib.h, a jej zadaniem jest wykonanie polecenia systemu operacyjnego, którego nazwa jest argumentem funkcji - będzie to "oczyszczenie" ekranu monitora ze zbędnych napisów pochodzących np. z poprzednio wykonywanego programu i ustawienie kursora w lewym górnym rogu ekranu. Wiersze 15-20 zawierają wywołania funkcji standardowej printf odpowiedzialnej za obsługę wyjścia z programu. Funkcja printf obsługuje tzw. wyjście formatowane. Jest to funkcja o zmiennej liczbie argumentów. Pierwszym jej argumentem musi być łańcuch znaków zawierający znaki wyświetlane na ekranie oraz tzw. kody formatujące, które określają sposób przedstawiania danych (sposób tłumaczenia wyświetlanych danych z zapisu wewnętrznego, zero-jedynkowego, na postać czytelną dla człowieka). Kolejne argumenty tej funkcji to nazwy wyprowadzanych zmiennych. 2017-02-16 Programowanie strukturalne W1 27

Wywołanie funkcji printf w wierszu 15 i 16 spowoduje wyświetlenie napisu Liczby:. W następnym wierszu pojawią się nazwy zmiennych xa oraz my i ich wartości (znaki A oraz y). Kody formatujące są zastępowane wartościami zmiennych użytych jako kolejne argumenty funkcji. Kod formatujący %c jest właściwy dla danych typu char. Kod %u oznacza konwersję na postać zewnętrzną liczby całkowitej bez znaku. Kod %o jest właściwy dla wartości w postaci ósemkowej, a kod %x odpowiada zmiennym o wartościach w postaci szesnastkowej (wiersz numer 17). Ciąg znaków %d wykonuje konwersję na postać zewnętrzną liczb dziesiętnych (w tym przypadku chodzi o liczby całkowite krótkie ze znakiem). Prototyp funkcji printf znajduje się w pliku nagłówkowym stdio.h. Wiersz 20 wyświetla wartości zmiennych dluga oraz po_co; na ekranie będą poprzedzone napisami odpowiednio wartosc dluga = oraz po_co =. Kod formatujący %lu odpowiada konwersji liczby całkowitej długiej bez znaku, a łańcuch %ld oznacza polecenie konwersji liczby całkowitej ze znakiem W wierszu 21 ponownie wywołano funkcję system, tym razem z argumentem pause, która wyświetla komunikat "Aby kontynuować naciśnij dowolny klawisz " i "czeka" na wpisanie do bufora klawiatury dowolnego znaku, a następnie wraca do wykonywania programu. Efektem jest "zatrzymanie" działania komputera do momentu naciśnięcia dowolnego klawisza. W ten sposób możemy odczytać z ekranu wyniki działania. Instrukcja return 0 kończy działanie programu i powoduje powrót do systemu operacyjnego z kodem błędu o wartości 0. 2017-02-16 Programowanie strukturalne W1 28

2017-02-16 Programowanie strukturalne W1 29

Typy rzeczywiste są nieciągłymi podzbiorami zbioru liczb rzeczywistych. Ich rodzaje i zakresy wartości są następujące: Typ/słowo kluczowe Rozmiar w bitach Zakres od Zakres do float 32 3,4*10 38 3,4*10 38 double 64 1,7*10 308 1,7*10 308 long double 80 3,4*10 4932 1,1*10 4932 Kilka przykładów deklaracji i inicjacji zmiennych rzeczywistych: float blad = -12.3e-2; zmienna blad ma wartość początkową 0,123 double x, y = 18., z =.11e11; x nieokreślona, y wartość 18, z wartość 0,11*10 11 long double r_dluga = -0.304e-607L; r_dluga wartość 0,304*10 607 typu long double float xc = 16.099e+32F; xc wartość 16,099*10 32 2017-02-16 Programowanie strukturalne W1 30

Wartości zmiennych rzeczywistych są standardowo przechowywane w postaci właściwej dla typu double - podobnie jak w przypadku liczb całkowitych, litery F, f, L, l umieszczane po liczbie w miejscu jej inicjacji zapobiegają wykonywaniu konwersji. W języku C/C++ można deklarować i używać zmienne, które zamiast właściwej danej zawierają adres obszaru pamięci - miejsca przechowywania właściwej danej. Obszar ten może być interpretowany jako zmienna określonego typu. Zmienna zawierająca adres innej zmiennej nosi nazwę zmiennej wskaźnikowej lub krócej wskaźnika. Zmienna, której adres zapisany jest w zmiennej wskaźnikowej to zmienna wskazywana. Wskaźniki w języku C/C++ są wygodnym i często używanym mechanizmem; umożliwiają: tworzenie i przetwarzanie tzw. dynamicznych struktur danych, zarządzanie blokami pamięci, łańcuchami znaków i tablicami, przekazywanie parametrów do i z funkcji. 2017-02-16 Programowanie strukturalne W1 31

/* Przyklad uzycia i dzialania zmiennych wskaznikowych */ #include <stdio.h> #include <conio.h> #include <stdlib.h> using namespace std; int main(void) { char znak = 'y', *w_znak = &znak; // w_znak - wskaznik, adres zmiennej znak int numer = 113, *w_numer = &numer; // w_numer - adres zmiennej numer double rzecz = 13.077e21, *w_rzecz = &rzecz; // w_rzecz - adres zmiennej rzecz system("cls"); printf("\n Wartosci zmiennych wskazywanych: \n %c, %d, %f", znak, numer, rzecz); *w_znak = 'A'; *w_numer = 251; *w_rzecz = -11.11e2; printf("\nnowe wartosci zmiennych wskazywanych:\n %c, %d, %f", znak, numer, rzecz); system("pause"); system("cls"); return 0; } 2017-02-16 Programowanie strukturalne W1 32

2017-02-16 Programowanie strukturalne W1 33