wsiiz pp wyk1

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


Wyszukiwarka

Podobne podstrony:
wykłady Pyka, pp-wyk1
ZHP PP 1
Firma PP
PISZ wyk1
Chemia Bionie wyk1
Zagrożenia powodziowe zachowanie podczas powodzi PP
Lasery pp
Nawigacja fragmenty wykładu 4 ( PP 2003 )
wyk1 09 materiał
osobowosc wyklad 4 pp
FM zaocz W7 8 pp
Psychologia Medyczna 1 pp
osobowosc wyklad 8 pp
wyk1 Elektronika
MT wyk1 (2)
Odpowiedzi Przykladowy arkusz PP Fizyka (2)

więcej podobnych podstron