background image

Podstawy

programowania

PP - WYK1

Wojciech Pieprzyca

background image

Pojęcia podstawowe

• Program

 – określa proces przekształcania danych 

wejściowych w dane wyjściowe (wyniki) według pewnego 

algorytmu.

• Dane wejściowe

 – informacje dostarczone do programu 

przez użytkownika, w celu umożliwienia wykonania 

algorytmu

• Dane wyjściowe

 – generowane przez program wyniki 

działania

• Algorytm

 – określa sposób przekształcania danych 

wejściowych w dane wyjściowe zgodnie z zadanym celem. 

background image

Pojęcia podstawowe

Programowanie

 – polega na zapisywaniu 

algorytmów w formie zrozumiałej dla 

komputera.

Kod źródłowy

 – program napisany w konkretnym 

języku programowania (np. Pascal, C++) – 

czytelny dla programisty

Kod wynikowy

 (wykonywalny) – program 

zapisany jako ciąg rozkazów w kodzie 

maszynowym, zrozumiały dla maszyny cyfrowej.

background image

Proces tworzenia 

programu

1. Kod źródłowy zapisywany jest przez 

programistę w edytorze kodu w ramach 

określonego środowiska programowania (w 

przypadku języka C++ są to pliki *.cpp)

2. Kompilator kompiluje kod źródłowy i tworzy 

kod wynikowy (pliki *.obj)

3. Linker łączy kod wynikowy z wymaganymi 

bibliotekami, powstaje plik wykonywalny 

exe.

background image

Problem informatyczny

1. sformułowanie problemu,
2. określenie danych wejściowych,
3. określenie celu działania,
4. sformułowanie algorytmu działania (sposobu 

rozwiązania problemu),

5. przedstawienie algorytmu w postaci :

– opisu słownego,

– listy kroków,

– schematu blokowego,

– jednego z języków programowania.

6. Analiza poprawności rozwiązania,
7. Testowanie rozwiązania dla różnych danych oraz 

ocena efektywności przyjętej metody.

background image

Algorytm

• Algorytm to przepis postępowania, który doprowadza do 

uzyskania pożądanego efektu – rozwiązania zadania.  

• W życiu codziennym spotykamy się z rozmaitymi 

algorytmami, niekoniecznie związanymi z informatyką.  

• Za algorytmy (choć często nieścisłe) można uznać 

przepisy kucharskie, zapis nutowy muzyki, instrukcje 

montażu, itp.

• Ludzie nie muszą otrzymywać algorytmów objaśnianych 

dokładnie – wiele mogą sobie dopowiedzieć, 

wywnioskować z kontekstu czy doświadczenia.  

background image

Algorytm

• Jednak zapis algorytmu w postaci słownej jest wysoce 

nieskuteczny ze względu na duże możliwości 

niejednoznacznej interpretacji takiego zapisu. 

• Komputer nie posiada zdolności domyślania się, wyciągania 

wniosków z danego kontekstu działania, nie rozumie języka 

naturalnego. 

• W związku z tym konieczne jest szczegółowe i jednoznaczne 

określenie czynności, które mają zostać wykonane. 

• Jest to sposób ogólny, tak by na jego podstawie można było 

zaimplementować program w dowolnym  języku 

programowania.

background image

Schematy blokowe

• Jednym ze sposobów ścisłego zapisu algorytmu jest 

forma graficzna zapisu w postaci schematu 

blokowego.

• Schemat blokowy obrazuje za pomocą umownych 

symboli sekwencje wykonywanych operacji oraz 

kierunek przepływu informacji. 

• Jest to diagram, na którym wykonywane operacje 

reprezentowane są przez figury geometryczne, 

połączone strzałkami zgodnie z kolejnością 

wykonywania czynności wynikających z przyjętego 

algorytmu działania.

background image

Schematy blokowe

• Blok graniczny

 (etykieta) – używane do oznaczenia 

początku i końca algorytmu

• Blok wejścia/wyjścia

 – służy do wprowadzania danych 

z zewnątrz (odczyt danych) lub wyprowadzania 

wyników np. na ekran (zapis danych)

• Blok wykonawczy

 (operand) – jedna lub kilka 

instrukcji, które mają zostać wykonane. W ramach 

tego elementu mogą być wykorzystane instrukcje 

przypisania (=) oraz operatory arytmetyczne (+,-,*,/).

background image

Schematy blokowe

• Blok decyzyjny

 (predykat) – element z jednym wejściem 

i dwoma wyjściami. Element posiada część warunkową 

w postaci wyrażenia logicznego. W zależności od tego 

czy warunek został spełniony czy też nie.

• Łącznik wewnętrzny

 – służy do łączenia odrębnych 

części schematu, znajdujących się na tej samej stronie, 

powiązane ze sobą łączniki oznaczone są tym samym 

napisem

• Łącznik zewnętrzny

 – służy do łączenia odrębnych części 

schematu, znajdujących się różnych stronach, 

powiązane ze sobą łączniki oznaczone są tym samym 

napisem

background image

Schematy blokowe

• Przykład prostego schematu blokowego dla programu 

obliczającego sumę dwóch liczb

background image

Instrukcje 

programowania

• Instrukcja przypisania

Jest to instrukcja postaci v:=E, gdzie v to zmienna czyli 

obiekt, który może przyjmować wartości określonego typu 

(np. liczba całkowita, liczba rzeczywista, znak, ciąg 

znaków, itp.). E to wyrażenie. Najpierw wyliczana jest 

wartość wyrażenia E występującego po prawej stronie 

instrukcji przypisania, a potem obliczona wartość zostaje 

przypisana do zmiennej v.
a := a+b;

i := 2+5; //i=7
i := i+1; //i=8
j := i;

//j=8

background image

Instrukcje 

programowania

• Instrukcja warunkowa

Instrukcja warunkowa ma postać:
if warunek then
 instrukcja1
else

     instrukcja2

• Warunek jest wyrażeniem logicznym, które może być 

spełnione (wartość true) lub niespełnione (wartość false).  

• Instrukcja warunkowa pozwala nam wybrać jeden z dwóch 

wariantów dalszego wykonania programu w zależności od 

tego, czy warunek jest spełniony, czy nie. 

background image

Instrukcje 

programowania

• Instrukcja warunkowa

W pierwszym kroku obliczana jest wartość wyrażenia 

warunkowego i jeśli jest ono równe true, to 

wykonujemy ciąg instrukcji oznaczony jako instrukcja1, 

a jeżeli nie, wykonujemy ciąg instrukcji oznaczony jako 

instrukcja2.

Przykład:
if a<b then 
    c:=a 
else 
    c:=b;

background image

Instrukcje 

programowania

• Instrukcja warunkowa

background image

Instrukcje 

programowania

• Instrukcja pętli

Instrukcja pętli ma postać:
while wyrazenie do 
  instrukcja1 

• Wyrażenie jest warunkiem logicznym, a instrukcja1 

jest ciągiem instrukcji, które pętla ma powtarzać, tak 

długo aż spełniony jest warunek podany w wyrażeniu. 

• Wykonanie pętli zaczyna się od obliczenia wartości 

warunku.

background image

Instrukcje 

programowania

• Instrukcja pętli

• Jeśli wartość ta wynosi false, to pętla nie robi niczego i 

kończy swoje działanie, ale jeśli wynosi true, to pętla 

wykonuje instrukcje, a następnie wraca do sprawdzenia 

warunku. 

• Pętla jest wykonywana tak długo, aż warunek przestanie 

być spełniony.

• Może się zdarzyć, że warunek nigdy nie przestanie być 

spełniony i pozostanie prawdziwy na zawsze. Program 

wtedy nie zatrzyma się nigdy i mówimy o takiej sytuacji, 

jako o zapętleniu programu.

background image

Instrukcje 

programowania

• Instrukcja pętli

Przykład:

while b>1 do
  b:=b/2;

background image

Narzędzie pracy

• Programy na laboratorium 

piszemy w środowisku 

Borland 

Builder C++

,

• Programujemy w trybie 

konsoli 

tekstowej

 tzn. na zajęciach PP 

uczymy się programować a nie 

obsługiwać środowisko wizualne.

background image

Jak wejść do trybu 

konsoli?

(1)

 

• Po uruchomieniu BBC++ klikamy na 

ikonę    znajdującą się w lewym 
górnym rogu programu,

• Następnie wybieramy Console 

Wizard

background image

Jak wejść do trybu 

konsoli?

(2)

 

• Opcje konfiguracyjne 

konsoli pozostawiamy 
bez zmian i klikamy OK,

• W ten oto prosty sposób udało 

się nam przejść do trybu 
konsoli i jesteśmy gotowi by 
napisać pierwszy program

background image

Pierwszy program 

(1)

• Po uruchomieniu konsoli automatycznie 

generowany jest 

szkielet programu

,

• Zawiera on 

dyrektywy kompilatora

 

(rozpoznamy je po tym, że zaczynają się 
od znaku 

#

), podstawowa dyrektywa 

kompilatora taka jak np. 

include

 pozwala 

na dołączenie 

plików nagłówkowych

 (czyli 

deklaracji funkcji bibliotecznych, które 
będą nam potrzebne podczas pisania 
programów). Przykładem pliku 
nagłówkowego jest 

iostream.h

.

background image

Pierwszy program 

(2)

• Na początku będą nam potrzebne funkcje 

biblioteczne z 3 plików nagłówkowych:

– vcl.h

 – standardowa biblioteka BBC++, której 

dołączenie jest niezbędne do poprawnej 

kompilacji,

– iostream.h 

– biblioteka wejścia/wyjścia, pozwala 

m.in. wyświetlać informacje na strumieniu 

wyjściowym (np. monitorze) i pobierać dane ze 

strumienia wejściowego (np. klawiatury),

– conio.h

 – zawiera interesującą funkcje getch(), 

oczekującą na naciśnięcie klawisza przez 

użytkownika. W środowisku konsoli pozwoli nam 

to zobaczyć okno tekstowe programu (bez 

getch() okno jest automatycznie zamykane po 

wykonaniu programu).

background image

Pierwszy program 

(3)

• Każdy program w języku C obowiązkowo 

zawiera funkcję main. Jest to główna 
funkcja programu od której rozpoczyna 
się proces wykonywania programu.

• Treść każdej funkcji (tzw. ciało programu) 

zawiera się w obszarze ograniczonym 
przez dwa 

nawiasy klamrowe

.

{

….. (ciało)

}

background image

Pierwszy program 

(4)

• Pierwszy program będzie wyświetlał 

powitanie na ekranie.

• //dyrektywy dotyczące plików nagłówkowych

#include <vcl.h>
#include <iostream.h>
#include <conio.h>

//definicja funkcji main

int main(int argc, char* argv[])
{
  

 //wyświetlenie napisu na ekranie

  cout << ”Witaj w swoim pierwszy programie!”;

  //oczekiwanie na naciśnięcie klawisza

 

  getch();

        return 0;

}

background image

Pierwszy program 

(5)

• Uwagi do programu:

- niektóre linie kodu poprzedzone znakami 

//

 stanowią 

komentarz

 i nie są brane pod uwagę w czasie kompilacji 

programu,
- funkcja 

main

 zawiera argumenty 

wejściowe i wyjściowe

ponieważ jednak tworzona jest ona automatycznie przez 

środowisko BBC++  to na razie pominiemy ten aspekt i 

wrócimy do jego omówienia w rozdziale dotyczącym 

funkcji,
- jedyną linią kodu do samodzielnego wpisania jest ta z 

instrukcją 

cout

 powodującą wysłanie tekstu przekazanego 

po operatorze 

<<

 na domyślny strumień wyjściowy (zwykle 

monitor). Tekst jawny używany w programie musi zostać 

objęty apostrofami. Instrukcja 

endl

 wymusza przejście do 

nowej linii,
- instrukcja 

getch()

 powoduje zatrzymanie programu aż do 

naciśnięcia klawisza przez użytkownika,

return

 w tym przypadku zawraca kod pomyślnego 

zakończenia funkcji.

background image

Jak skompilować 

program?

(1)

• W celu kompilacji programu należy 

nacisnąć klawisze ALT+F9. Zazwyczaj 
jednak będziemy jednocześnie chcieli 
skompilować program i go uruchomić 
(klawisz F9).

• Kompilujemy program i…

background image

Jak skompilować 

program?

(2)

KOMPILACJA

Sukces :-)

Porażka :-(

Nie pojawiają się 

komunikaty o błędach, 

pojawia się za to okno 

programu w trybie 

tekstowym.

Kompilator informuje nas o 

występujących błędach 

składni    i podświetla linie w 

której wystąpił pierwszy błąd

background image

Słowa kluczowe

• Słowa kluczowe

 

są integralną częścią składni 

języka.

 

Oznacza to, że są one

 

zarezerwowane

 

i

 

nie mogą być używane w innych celach niż 

to pierwotnie założono, nie można ich np. 

wykorzystać

 

do nadawania nazw zmiennych 

czy funkcji.

• Przyklady slów kluczowych

:

asm, break, case, catch, char, class, const, 

continue, default, delete, do, double, else, 

enum, extern, float, for, friend, goto, if, inline, 

int, long, new, operator, private, protected, 

public, register, return, short, signed, sizeof, 

static, struct, switch, this, throw, try, typedef, 

unsigned, virtual, void, volatile, while

background image

Zmienne

• Pod pojęciem

 

zmiennej

 

rozumiemy zwykle

 

komórkę pamięci

, której rozmiar zależy od 

typu danej, którą chcemy w niej 

przechowywać. Inny będzie więc rozmiar 

zmiennej dla liczby całkowitej, a inny dla 

ciągu znaków.

• Każda zmienna posiada swój

 

adres w 

pamięci

jednak odwoływanie się do zmiennej 

poprzez adres byłoby dość kłopotliwe, 

dlatego też zmiennym można 

przyporządkować nazwy. Nazwa składa się z 

ciągu liter i cyfr, nie może jednak zawierać 

„polskich liter”, spacji ani rozpoczynać się od 

cyfry. Nie może być oczywiście taka sama jak 

istniejące słowo kluczowe. W języku C 

rozróżniane są duże i małe litery. 

background image

Typy danych

• Tak jak już wspomnieliśmy każda zmienna w 

języku C musi mieć ściśle przyporządkowany typ 

danych.

• Wyróżniamy następujące podstawowe

 

typy 

danych

:

Typ danych

Liczba bitów

Zakres wartości

char

8

-128:127 lub jeden znak 
ASCII

int

32

-2 147 483 648 : 2 147 483 
647

unsigned int

32

0 : 4 294 967 295

short int

16

-32 768 : 32 767

float

32

3,4*10

-38 

 : 3,4*10

38

double

64

2,2*10

-308

 : 1,8*10

308

background image

Deklarowanie 

zmiennych

• Wszystkie wykorzystywane zmienne w 

programie napisanym w języku C++ 

muszą być najpierw 

zadeklarowane

Deklaracja polega na podaniu typu i 

nazwy zmiennej w postaci:

typ_zmiennej nazwa_zmiennej;

• Przykłady deklaracji zmiennych:

int

 liczbacalkowita;

float

 liczbarzeczywista;

char

 znak;

background image

Przykładowy program 

(1)

#include <vcl.h>
#include <iostream.h>
#include <conio.h>
#include <math.h> 

//plik naglowkowy z funkcja sqrt

int main(int argc, char *argv[])
{
    

//deklaracja zmiennych

    float a,b,c;
    float delta,x1,x2;
    

//pobranie danych z klawiatury

    cout << "Podaj a: ";
    cin >> a;
    cout << "Podaj b: ";
    cin >> b;
    cout << "Podaj c: ";
    cin >> c;
    

//obliczenie delty i pierwiastkow

    delta = b*b-4*a*c;
    x1 = (-b-sqrt(delta))/(2*a); 

//sqrt – pierwiastek kwadratowy

    x2 =  (-b+sqrt(delta))/(2*a);
    

//wypisanie wynikow na ekranie

    cout << "x1 = " << x1 << endl;
    cout << "x2 = " << x2 << endl;    
    getch();
    return 0;
}

background image

Przykładowy program 

(2)

• Uwagi do programu:

– jak można łatwo się zorientować program

 

nie jest 

doskonaly

, nie sprawdza chociażby czy wskaźnik 

delta jest nieujemny co jest warunkiem istnienia 

rozwiązań równania kwadratowego, podobnie nie 

jest sprawdzane czy iloczyn w mianowniku 

wyrażenia na rozwiązania x1 i x2 jest niezerowy, 

w przypadku gdy a=0 uzyskamy błąd dzielenia 

przez zero,

– podobnie jak instrukcja cout służyła do 

wyprowadzenia wyników na ekran, tak instrukcja

 

cin

 

służy do pobrania danych z klawiatury,

– ponieważ istniała konieczność użycia funkcji 

pierwiastkowania

 

sqrt

, to konieczne było 

dołączenie funkcji bibliotecznych z pliku 

nagłówkowego

 

math.h

,

– po zapoznaniu się z instrukcjami warunkowymi 

będziemy mogli

 

udoskonalić

 

program

.

background image

Zmienne globalne, 

lokalne, zakresy ważności 

(1)

• Zmienne globalne

 swoim zakresem obejmują cały 

program, oznacza to, że możemy odwoływać się 

do nich z dowolnego miejsca w programie,

• Zmienne lokalne

 swój zakres ograniczają do bloku 

programu w którym zostały zadeklarowane, blok 

programu rozpoczyna się nawiasem klamrowym 

otwierającym {, a kończy nawiasem zamykającym 

}. Typowym przykładem bloku jest funkcja.

• Jeżeli zadeklarujemy zmienną globalną i lokalną o 

takich samych nazwach

, to w ramach bloku z 

deklaracją zmiennej lokalnej będzie obowiązywała 

wartość zmiennej  lokalnej, a poza nim wartość 

zmiennej globalnej. Mówimy, wówczas, że 

zmienna lokalna 

zasłania

 wartość zmiennej 

globalnej.

background image

Zmienne globalne, 

lokalne, zakresy ważności 

(2)

#include <vcl.h>
#include <iostream.h>
#include <conio.h>

//zmienna globalna

int zm=100;

int main(int argc, char *argv[])
{    
    cout << ”Zmienna przed deklaracja lokalnej:” << zm << endl;

    //zmienna lokalna

    int zm = 200;
   

 

cout << ”Zmienna po deklaracji lokalnej:” << zm << endl;

   //nowy blok programu

   {
      int b = 2;
      cout << ”Zmienna b w bloku:” << b << endl;
   }

  //b=3 BŁĄD! Zmienna b nie jest widoczna poza blokiem

    
    getch();
    return 0;
}

background image

Instrukcja warunkowe if

 

(1)

• Instrukcja 

if 

służy do 

sterowania przebiegiem 

programu

 i wyboru jednej z kilku alternatywnych 

dróg jego realizacji w zależności od aktualnych 

warunków.

• Składnia:

If

 (warunek) instrukcja1

     

else

 instrukcja2

• Warunek jest wyrażeniem, które może 

przyjmować wartość 

zero (fałsz)

 lub 

wartość różną 

od zera (prawda),

• Działanie instrukcji warunkowej

 if

:

1. 

obliczenie wartości

 wyrażenia warunkowego,

2. jeżeli wartość wyrażenia jest 

różna od 0

 to wykonywana jest 

instrukcja1

,

3. jeżeli wartość wyrażenia jest 

równa 0

 to wykonywana jest 

instrukcja2

background image

Instrukcja warunkowe if 

(2)

• W poniższym programie wyrażenie warunkowe 

jest prawdziwe dla każdej liczby różnej od zera 

(zgodnie z założeniem C):

#include <vcl.h>
#include <iostream.h>
#include <conio.h>

int main(int argc, char *argv[])
{    
    int liczba;
    cout << ”Podaj liczbe: ”;
    cin >> liczba;

   

 if 

(liczba)

        cout << ”Liczba rozna od 0 (prawda) – warunek jest 
spelniony”;
    

else

        cout << ”Liczba rowna 0 (fałsz) – warunek niespelniony”;

    getch();
    return 0;
}

background image

Operatory

• Podstawowe operatory arytmetyczne 

+,-,*,/

• Operator przypisania 

=

• Operatory porównania 

<,>,>=,<=,==

Przykład:

if

 (liczba

==

10) 

cout

 << ”Ta liczba to 10”;

• Operator modulo (reszta z dzielenia) 

%

Przykład:

if

 (liczba

%

10

==

0) 

cout

 << ”Ta liczba jest podzielna przez 10”;


Document Outline