AJ
AJ
S
S
„Język
programowania”
Rozwijanie zdolności
logicznego
i precyzyjnego inżynierskiego
myślenia
poprzez naukę
programowania.
AJ
AJ
S
S
Zakładane wyniki
nauki:
-
umiejętność budowania
algorytmów dla rozwiązywania
podstawowych problemów
inżynierskich,
-
opanowanie podstaw
języka programowania C++,
-
umiejętność myślenia
programistycznego.
AJ
AJ
S
S
Główny prowadzący przedmiot:
dr inż. Andrzej
Studnicki
Osoby prowadzące laboratorium:
- dr inż. Krzysztof Janerka,
- dr inż. Jacek Suchoń
- dr inż. Andrzej Studnicki,
- dr inż. Dariusz Bartocha,
AJ
AJ
S
S
Instytut Materiałów
Inżynierskich
i Biomedycznych
Zakład Odlewnictwa
Wydział Mechaniczny
Technologiczny
Politechniki Śląskiej
Gliwice ul. Towarowa 7
tel.231-60-31
sekrmt3@zeus.polsl.gliwice.pl
AJ
AJ
S
S
Zakres tematyczny wykładu obejmuje:
1.analizę problemu na przykładach
ściśle związanych z kierunkiem
studiowania i poszukiwanie metody
(metod) jego rozwiązywania,
2. projektowanie algorytmów według
wybranej
metody
rozwiązywania
problemu – budowanie schematów
blokowych
AJ
AJ
S
S
Cd Zakres tematyczny wykładu
obejmuje:
3. podstawy programowania w języku
C++
(struktura
programu,
typy
danych,
deklaracje
zmiennych
i
stałych,
operatory
i
wyrażenia,
instrukcje, funkcje),
4. wybrane algorytmy i ich programy
(np. sortowanie, przeszukiwanie).
AJ
AJ
S
S
Laboratorium obejmuje
ćwiczenia
praktyczne
(programowanie w C++) dające
prawidłowe nawyki i właściwe
podejście
do
rozwiązywania
problemów.
Ćwiczenia
praktyczne
są
związane
z
kierunkiem studiowania.
AJ
AJ
S
S
Ćwiczenia laboratoryjne obejmują:
-
podstawy C++ (obsługa zintegrowanego
środowiska C++, struktura programu, typy
danych, wyrażenia i operatory),
- stopniowe wprowadzanie instrukcji C++
(instrukcje wejścia, wyjścia, warunkowe,
obliczeń cyklicznych-pętle),
- zastosowanie funkcji w programie,
- wybrane funkcje graficzne w C++
- podstawy programowania obiektowego w
C++,
- umiejętność czytania programów w C++.
AJ
AJ
S
S
Tematy ćwiczeń laboratoryjnych
„Język Programowania”
1.
Ogólna struktura i podstawowe elementy
programu źródłowego w C++ - program
sekwencyjny
1.1. Obsługa zintegrowanego środowiska pracy
C++, Ogólna
struktura programu źródłowego w C++,
operacje wejścia-
wyjścia
1.2. Program sekwencyjny – proste typy danych,
wybrane
operatory, funkcje biblioteczne
(matematyczne)
2.
Podejmowanie decyzji w programie
2.1. Instrukcja warunkowa – if...else, operatory
relacyjne i
logiczne,
2.2. Instrukcja wyboru – switch...case.
AJ
AJ
S
S
Tematy ćwiczeń laboratoryjnych cd
„Język Programowania”
3.
Organizacja obliczeń cyklicznych w
programie (pętle)
3.1. Pętle o nieokreślonej liczbie powtórzeń –
instrukcje
while i do-while,
3.2. Pętla o określonej liczbie powtórzeń –
instrukcja for.
4.
Instrukcje sterujące przebiegiem
programu
4.1. Wykorzystanie instrukcji sterujących w
pisaniu
programów.
5.
Zmienne strukturalne w języku C++
5.1. Tablice w języku C++ - tablice liczbowe.
AJ
AJ
S
S
Tematy ćwiczeń laboratoryjnych cd
„Język Programowania”
6.
Konstruowanie funkcji w języku C++
6.1. Programowanie własnych funkcji w języku
C++,
6.2. Wykorzystanie funkcji iteracyjnych i
rekurencyjnych w
programowaniu.
7.
Wskaźniki w języku C++
7.1. Posługiwanie się typem wskaźnikowym w
programowaniu,
7.2. Wykorzystanie wskaźników w operowaniu
tablicami.
Dynamiczny przydział pamięci.
AJ
AJ
S
S
Tematy ćwiczeń laboratoryjnych
cd
„Język Programowania”
8.
Programy graficzne w języku C++
wykorzystujące
bibliotekę graph
8.1. Tworzenie prostej grafiki punktowej w
języku C++ przy
użyciu funkcji standardowych,
9.
Obsługa plików dyskowych w C++ - file
handling
9.1. Zapis i odczyt prostych plików
tekstowych i binarnych.
10.
Wprowadzenie do programowania
obiektowego w C++
10.1. Początki programowania obiektowego w
C++
AJ
AJ
S
S
- uczestnictwo w zajęciach lab. (dopuszczalne 2
zajęcia nieusprawiedliwione),
- zaliczenie dwóch kolokwiów na komputerach
(pisanie programów 40 min., poprawa nie
zaliczonych kolokwiów tylko na konsultacjach),
- wcześniejsze zaliczenie laboratorium (zestaw
zadań przygotowany przez wykładowcę lub
zadanie inżynierskie przygotowane przez
prowadzącego laboratorium, termin 15 listopad,
obrona na konsultacjach-listing programu
źródłowego, dyskietka z programem źródłowym,
oceny 4, 4.5, 5 zwalniają z wykładów),
- zaliczenie wykładów (1 kolokwium),
warunki zaliczenia
przedmiotu
AJ
AJ
S
S
-ocena końcowa z przedmiotu:
O
K
= 0.6*O
W
+ 0.4*O
L
- zaliczenie laboratorium w normalnym
toku zajęć na ocenę 5 zwalnia z zaliczania
wykładów i staje się oceną końcową z
przedmiotu,
- możliwość podwyższenia oceny
końcowej (na 3.5, 4.0) na konsultacjach
po zaliczeniu wybranego przez
prowadzącego zadania z zestawu
- możliwość podwyższenia oceny
końcowej (z 4 na 4.5, 5.0) tylko po
obronie napisanego programu z zestawu
zadań przygotowanego przez wykładowcę
warunki zaliczenia
przedmiotu cd
AJ
AJ
S
S
Język niskiego poziomu
(asemblery)
–szybkość i efektywność kodu wynikowego
programów.
Język wysokiego poziomu
–
łatwiejsza
przenośność
programów,
prostszy zapis algorytmu.
C++
- ogólna charakterystyka
„Język wysokiego, ale dostatecznie
niskiego poziomu” – synteza
AJ
AJ
S
S
Autorami pierwszego standardu
języka C są
Kernighan i Ritchie
Bjarne Stroustrup
z
Laboratorium Bella firmy AT&T jest
twórcą C++ - początek lat 80
AJ
AJ
S
S
1. Struzińska-Walczak A., Walczak K.:
Nauka programowania dla początkujących
C++.
Wyd. W&W, Warszawa 2000,
2. Zalewski A.: Programowanie w językach C
i C++ z wykorzystaniem pakietu Borland
C++. Wyd. Nakom, Poznań 2000,
3. Snaith P.:
Nie tylko dla orłów C++.
Wyd.
Intersoftland, Warszawa 2000,
4.
N.M.Josuttis:
C++
Biblioteka
standardowa. Podręcznik Programisty.
Wyd.
Helion, Gliwice 2003,
Literatu
ra
AJ
AJ
S
S
5. Wróblewski P.: Algorytmy struktury
danych i techniki programowania. Wyd.
Helion, Gliwice 1997,
6. Bentley J.: Perełki oprogramowania.
WNT, Warszawa 1992,
7.
Wirth N
.: Algorytmy+struktury danych =
programy. WNT, Warszawa 1989,
Literatu
ra
AJ
AJ
S
S
1. Wróblewski P.: Język C++ dla programistów.
Wyd. Helion, Gliwice 1994,
2. Kernighan B., Ritchie D.: Język C. WNT,
Warszawa 1988
3. Lippman S.: Podstawy języka C++. WNT,
Warszawa 1994,
4. Delanoy C.: Ćwiczenia z języka C++. WNT,
Warszawa 1993,
5. Ragen A.: Leksykon języka C. WNT, Warszawa
1990,
6. Kopacz T.: Język C w praktyce Turbo C i C++.
Wyd. Mikom, Warszawa 1993,
7. Wróblewski P.: Od C do Asemblera. Wyd.
Helion, Gliwice 1992,
8. K.Loundon: C++ Leksykon kieszonkowy. Wyd.
Helion, Gliwice 2003.
AJ
AJ
S
S
Wirth N.: Algorytmy+struktury danych = programy. WNT,
Warszawa 1989,
„... programowanie
stało się dziedziną
wiedzy, której
opanowanie ma
zasadnicze znaczenie
przy rozwiązywaniu
wielu problemów
inżynierskich, ...”
Niklaus Wirth
AJ
AJ
S
S
Programowanie jako
umiejętność rozwiązywania
problemów
Wykonan
ie
program
u
Dane
Wyniki
Proble
m
Sprawa do
rozwiązania
Algoryt
m
Sposób, przepis rozwiązania
danego problemu w
skończonej liczbie kroków
Progra
m
Sformalizowany zapis
algorytmu w danym języku
programowania
AJ
AJ
S
S
Algorytm
w sensie
ogólnym określa
sposób wykonania
pewnego zadania,
rozwiązania
określonego
problemu, czy
osiągnięcia
zamierzonego celu
AJ
AJ
S
S
Algorytm
opracowany dla
progra-mu
określa sposób
przekształcenia danych
wejściowych w dane wyj-
ściowe zgodnie z celem
(dla realizacji jednego celu
można zastosować wiele
algorytmów)
AJ
AJ
S
S
Algorytm składa się z
opisu:
-
obiektów
, na których
wykony-wane są
działania,
-
działań
realizujących
cel algorytmu,
-
kolejności działań
.
AJ
AJ
S
S
PROBLEM 1
Korekta zawartości węgla w
piecu metalurgicznym przy
wytopie żeliwa szarego
DANE
-
norma określająca zawartość węgla w
wytapianym gatunku żeliwa,
- masa ciekłego metalu w piecu,
- dostępne materiały wsadowe do korekty
zawartości węgla,
- analiza chemiczna zawartości węgla w
wytapianym żeliwie.
AJ
AJ
S
S
START
STOP
DANE
CC
max
Oblicz dodatek wsadu
obniża-jący węgiel
(złom stalowy)
CC
min
Oblicz dodatek wsadu
zwiększający węgiel
(grafit)
Dodaj do wsadu
Dodaj do wsadu
T
T
N
N
AJ
AJ
S
S
PROBLEM
PROBLEM
2
2
Drzwi z zamkiem na
hasło. Po 3-krotnym
błędnym wpisaniu hasła
ma uruchomić się alarm.
DANE
- hasło definiowane jako stała (możliwość
- hasło definiowane jako stała (możliwość
zmiany tylko w programie źródłowym)
zmiany tylko w programie źródłowym)
AJ
AJ
S
S
STAR
T
Utwórz wzór hasła
Wprowadź hasło
Poprawne
Dodaj p+1
p>3
Otwórz drzwi
Włącz alarm
STOP
N
T
N
T
AJ
AJ
S
S
PROBLEM 3
Ustalenie spawalności stali
konstrukcyjnej dla
opracowania optymalnej
technologii spawania.
DANE
-
-
skład chemiczny stali konstrukcyjnej
AJ
AJ
S
S
STAR
T
STOP
Skład chemiczny
stali
Oblicz równoważnik
węgla Rc
Wybór Rc
Rc0.4
0.4<Rc0.48
0.48<Rc0.5
5
Rc>0.
55
Stal łatwospawalna
Stal spawalna po
podgrzaniu lub
elektrodą zasadową
Stal spawalna po
podgrzaniu tylko
elektrodą zasadową
Stal niespawalna
Podaj technologię
spawania
AJ
AJ
S
S
Schemat
blokowy jest
graficznym
zapisem
algorytmu,
pokazuje
następstwo
działań,
nazywany jest
też siecią
działań.
SCHEMAT
BLOKOWY
AJ
AJ
S
S
Metody tworzenia algorytmu i jego
zapisu w postaci schematu blokowego
(sieci działań):
metoda od szczegółu do
ogółu
polega na wyodrębnieniu w
problemie
małych
fragmentów,
które
po
oddzielnym
opisaniu
są
składane w coraz większe
części aż do otrzymania
całego pełnego algorytmu
realizującego problem.
AJ
AJ
S
S
metoda od ogółu do
szczegółu
polega na ogólnym zapisaniu
całego
problemu
bez
szczegółowego analizowania
jego
fragmentów.
Po
otrzymaniu
podstawowego
algorytmu należy przystąpić
do
podobnej
analizy
poszczególnych fragmentów.
Metody tworzenia algorytmu i jego
zapisu w postaci schematu blokowego
(sieci działań):
AJ
AJ
S
S
Postać graficzna podstawowych bloków
wykorzystywanych w schematach blokowych
blok początkowy
(rozpoczyna
algorytm)
Start
blok we/wy
(określa
nazwy
danych
wprowa-dzanych
i
wyprowadzanych
przez
program)
Dane
blok operacyjny
(określa działanie, które
może zmienić wartość
zmiennej)
Działanie
AJ
AJ
S
S
Warunek
nie
tak
blok warunkowy (decyzyjny)
(rozdziela
wykonywanie
algorytmu na dwie drogi w
zależności od spełnienia tak
lub niespełnienia warunku;
nie zmienia stanu zmiennych)
Zmienn
a=
w1
w2
w3
w
n
blok wyboru
(wybiera
jedną
z
wielu
możliwych dróg algorytmu, na
podstawie aktualnej wartości
wyrażenia)
Postać graficzna podstawowych bloków
wykorzystywanych w schematach blokowych
cd
AJ
AJ
S
S
Postać graficzna podstawowych bloków
wykorzystywanych w schematach blokowych
cd
Blok kolekcyjny
(łączy dwie różne drogi
algorytmu)
Blok końcowy
(kończy
algorytm)
Stop
Blok podprogramu
(określa nazwę procedury lub
funkcji i jej zadanie)
Nazwa
Funkcj
a
AJ
AJ
S
S
Postać graficzna podstawowych bloków
wykorzystywanych w schematach blokowych
cd
3/5
Blok wyjściowy
łącznika
międzystr.
Blok
wejściowy
łącznika
międzystr.
3/5
Blok
wyjściowy
łącznika na
stronie
Blok wejściowy
łącznika na
stronie
1
1
AJ
AJ
S
S
Proces tworzenia i uruchamiania
programów w C++
Każdy nowoczesny kompilator
zawiera :
Edytor
Program do wpisywania i modyfikowania
tekstów programów (kodów źródłowych)
[*.cpp],
Kompilator
Program do sprawdzania poprawności i
wyszukiwania formalnych błędów w kodzie
źródłowym. Gdy kod jest poprawny kompilator
przekształca go w plik binarny [*.obj]),
Konsolidator
(linker) Program, który do pliku
binarnego(skompilowanego) dołącza z bibliotek
(*.lib) kody maszynowe gotowych do użycia funkcji i
tworzy program wykonywalny (program wynikowy,
maszynowy) na komputerze [*.exe]).
AJ
AJ
S
S
Komput
er
Kod
źródłowy
program
źródłowy
[*.cpp]
Kod
kompilowany
kod binarny
[*.obj]
Kod
wykonywalny
Kod maszynowy
[*.exe]
Zintegrowane
środowisko pracy
AJ
AJ
S
S
AJ
AJ
S
S
September 28 2002 :
September 28 2002 :
Dev-C++ 5 Beta
Dev-C++ 5 Beta
6 (4.9.6.0)
6 (4.9.6.0)
PC FORMAT CD#27
PC FORMAT CD#27
Listopad 2002
Listopad 2002
Strona internetowa
Strona internetowa Bloodshed
Bloodshed
Software
Software
.
AJ
AJ
S
S
Ogólny schemat kodu źródłowego
programu w C++
#include <iostream.h>
#include <conio.h>
#include <math.h>
#include
“nazwa_uzytkownika”
#define stala 2
main()
{
int liczba, suma=0, iloczyn=1;
clrscr;
cout<<”Podaj pierwsza liczbe”<<endl;
cin>>liczba;
while (liczba!=0)
{
suma+=liczba;
iloczyn*=liczba;
cin>>liczba;
}
cout<<”Suma liczb wynosi” <<suma<<endl;
cout<<”Podwojony
iloczyn
liczb
wynosi”<<iloczyn*stala<<endl;
getch();
return 0;
}
funkcja główna - start
funkcja główna - start
programu
programu
lista wszystkich
lista wszystkich
zmiennych
zmiennych
ciąg instrukcji
ciąg instrukcji
realizujący
realizujący
dany algorytm
dany algorytm
dyrektywy
preprocesora
AJ
AJ
S
S
#
#
main(
main(
)
)
{
{
}
}
dyrektywy preprocesora:
#include –dołącz pliki
nagłówkowe
#define –zdefiniuj stałe
funkcja główna - start
funkcja główna - start
programu
programu
deklaracja zmiennych i ciąg instrukcji
deklaracja zmiennych i ciąg instrukcji
realizujący dany algorytm
realizujący dany algorytm
AJ
AJ
S
S
#
#
main( )
main( )
{
{
}
}
Zadania
preprocesora
- definiowanie
makrodefinicji
upraszczających
postać kodu
źródłowego,
- włączanie tekstów
innych plików,
- sterowanie
przebiegiem
kompilacji
AJ
AJ
S
S
Typy danych w
C++
Typ danych
definiuje
zakres lub zbiór
dopuszczalnych wartości
dla stałej, zmiennej,
wyrażenia, funkcji oraz
zbiór dopuszczalnych
operacji wykonywanych na
tych wartościach. Określa
też format zapisu w
pamięci.
AJ
AJ
S
S
1.
Typy proste
(skalary)
- arytmetyczne (
całkowite i
rzeczywiste
)
- wskaźnikowe,
- referencyjne.
Typy danych w
C++
2.
Typy
strukturalne
(złożone)
-
tablice
,
- struktury,
- unie,
- klasy.
AJ
AJ
S
S
Typy całkowite
(skończone , przeliczalne podzbiory zbioru liczb
całkowitych)
Słowa kluczowe określające typy całkowite
char
typ znakowy
int
typ całkowity
long
typ tzw.długich liczb
całkowitych
signed
liczby ze znakiem
short
typ tzw.krótkich
liczb całkowitych
unsigned
liczby bez znaku
AJ
AJ
S
S
Typy całkowite
(skończone , przeliczalne podzbiory zbioru liczb
całkowitych)
Typ
Rozmiar
w bitach
min
max
unsigned
char
8, jeden
znak
0
255
char,
signed
char
8, jeden
znak
-128
127
int, signed
int
16
-32768
32767
unsigned
int
16
0
65535
long
unsigned
int
32
0
4294967
295
long
signed int
32
-
2147483
648
2147483
647
AJ
AJ
S
S
char a, b=‘F’;
int x, y=2;
long k;
inicjowanie
składnia
typ całkowity identyfikator[=wartość zainicjowana
Deklaracje
i
inicjacja
zmiennych całkowitych
AJ
AJ
S
S
Typy rzeczywiste
(skończone , przeliczalne
podzbiory zbioru liczb
rzeczywistych)
Typ
Rozmi
ar w
bitach
min
max
Liczba
znaczący
ch cyfr
float
32
3.4E-38 3.4E38
6
double
64
1.7E-
308
1.7E30
8
15
long
double
80
3.4E-
4932
1.1E49
32
18
AJ
AJ
S
S
Typy rzeczywiste
(skończone , przeliczalne podzbiory zbioru liczb
rzeczywistych)
Pojęcie znaczących cyfr
Pojęcie znaczących cyfr
Liczbę rzeczywistą w pamięci komputera
Liczbę rzeczywistą w pamięci komputera
zapisuje się w postaci dwóch liczb (mantysa,
zapisuje się w postaci dwóch liczb (mantysa,
cecha)
cecha)
L=mantysa*10
L=mantysa*10
cecha
cecha
Dla
Dla float
float
liczba 1254986719873674.678
liczba 1254986719873674.678
zostanie zapisana w 0.125498 E16
zostanie zapisana w 0.125498 E16
A więc zostanie zaokrąglona do
A więc zostanie zaokrąglona do
wartości: 1254980000000000
wartości: 1254980000000000
AJ
AJ
S
S
float a, b=123.16e10;
double x, y=-145.67;
long double k;
inicjowanie
składnia
typ rzeczywisty identyfikator[=wartość
zainicjowana
Deklaracje i inicjacja zmiennych
rzeczywistych