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,
- mgr inż. Maria Dziuba,
- mgr inż. Marcin Kondracki
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
Andrzej.Studnicki@polsl.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ę -termin
10 listopad lub zadanie inżynierskie
przygotowane przez prowadzącego laboratorium
– twermin 2 grudzień, 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
-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.0 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