Podział programu na moduły

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

Wstęp do Programowania, laboratorium 02

5 Przygotował: mgr inż. Maciej Lasota

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

Podstawy programowania. Wykład 9 Preprocesor i modularna struktura programów. Krzysztof Banaś Podstawy programowania 1

Co nie powinno być umieszczane w plikach nagłówkowych:

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

Zofia Kruczkiewicz, ETE8305_2 1

public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana

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

Wskaźniki. Informatyka

Programowanie Proceduralne

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {

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

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {

Struktura programu. Projekty złożone składają się zwykłe z różnych plików. Zawartość każdego pliku programista wyznacza zgodnie z jego przeznaczeniem.

Funkcja (podprogram) void

Przeciążenie (przeładowanie nazw) funkcji

Podstawy wykorzystania bibliotek DLL w skryptach oprogramowania InTouch

Wykład 1

Abstrakcyjne struktury danych w praktyce

Functionalization. Jeszcze o funkcjach i strukturze projektu. Marcin Makowski. 3 grudnia Zak lad Chemii Teoretycznej UJ

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw

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

Języki programowania obiektowego Nieobiektowe elementy języka C++

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)

Etapy kompilacji. Wykład 7. Przetwarzanie wstępne, str. 1. #define ILE for(i=0; i<ile; i++)...

Argumenty wywołania programu, operacje na plikach

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

Funkcje. czyli jak programować proceduralne. Programowanie Proceduralne 1

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

Wstęp do programowania 1

Programowanie 2. Język C++. Wykład 1.

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

Wprowadzenie do programowania w języku C

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Tablice, funkcje - wprowadzenie

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

Języki i paradygmaty programowania 1 studia stacjonarne 2018/19. Lab 9. Tablice liczbowe cd,. Operacje na tablicach o dwóch indeksach.

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Krótkie wprowadzenie do korzystania z OpenSSL

Programowanie strukturalne język C - wprowadzenie

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

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Podstawy programowania C. dr. Krystyna Łapin

zastępować zarezerwowane słowa lub symbole innymi,

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

Zdalne wywołanie procedur. Krzysztof Banaś Systemy rozproszone 1

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) { zdefiniuje. Integer::operator=(ri);

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce

Lab 1. Wstęp do programowania w C. Zintegrowane środowisko programistyczne Visual Studio.

Funkcje. czyli jak programować proceduralne. Programowanie Proceduralne 1

PARADYGMATY PROGRAMOWANIA Wykład 2

Rysowanie punktów na powierzchni graficznej

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

ŁAŃCUCHY W JĘZYKU C/C++

Fragment wykładu z języka C ( )

I - Microsoft Visual Studio C++

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc

Wstęp do programowania

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

Język C - podstawowe informacje

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji?

Podstawy programowania. Wykład 2 Zmienne i obsługa wejścia/wyjścia. Krzysztof Banaś Podstawy programowania 1

Język C. Kierunek: Informatyka Stosowana (Wydział FAIS UJ) Wykład: Wtorek, s. A Forma zaliczenia kursu: Egzamin pisemny (test wyboru) * **

PROGRAMOWANIE w C prolog

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

Projektowanie klas c.d. Projektowanie klas przykład

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

Functionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

Język C zajęcia nr 11. Funkcje

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur.

Dzisiejszy wykład. Przestrzenie nazw (namespaces) Funkcje o zmiennej liczbie argumentów

Wskaznik. Przekazywanie wyniku funkcji przez return. Typy i zmienne wskaznikowe. Zmienna wskazywana. typ * nazwa_wkaznika

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

Materiał uzupełniający do ćwiczen z przedmiotu: Programowanie w C ++ - ćwiczenia na wskaźnikach

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Lab 9 Podstawy Programowania

Języki i paradygmaty programowania 1 studia niestacjonarne 2018/19

Języki i metodyka programowania. Wprowadzenie do języka C

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

Temat 1. Podstawy Środowiska Xcode i wprowadzenie do języka Objective-C

3. Identyfikacja. SKŁADNIA #include <sys/socket.h> int getpeername(int socket, struct sockaddr *addr, int *addrlen);

Laboratorium 3: Preprocesor i funkcje ze zmienną liczbą argumentów. mgr inż. Arkadiusz Chrobot

Wstęp do programowania

KURS C/C++ WYKŁAD 2. char znak; znak = a ; Program 2 #include<stdio.h> void main() { char znak; while( (znak = getchar() )!= t ) putchar(znak); }

Język C, tablice i funkcje (laboratorium, EE1-DI)

Szablony funkcji i klas (templates)

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

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

2 Przygotował: mgr inż. Maciej Lasota

Transkrypt:

Materiały Podział programu na moduły Informatyka Szczegółowe informacje dotyczące wymagań odnośnie podziału na moduły: http://www.cs.put.poznan.pl/wcomplak/bfiles/c_w_5.pdf Podział programu na moduły pozwala na: Stworzenie programu, który jest bardziej czytelny. Duży program pisany jako jedna całość jest nieczytelny (brak pośrednich form organizacji poza podziałem na funkcje), łatwiej w nim także popełnić błędy (zmodyfikowanie zmiennej globalnej, zależność działania jednej funkcji od ubocznych efektów działania drugiej). Łatwiejsze wykorzystanie poszczególnych modułów w innych programach. Kompilowanie poszczególnych modułów niezależnie. Jeśli dokonamy zmian w jednym z modułów to nie będziemy musieli kompilować ponownie całości, tylko ten jeden plik. Modułem będziemy nazywać fragment programu kompilowany jako jeden plik. Każdy moduł składa się z: Interfejsu (tego co dany plik udostępnia) czyli pliku nagłówkowego (*.h lub.hpp) Implementacji (realizacji) czyli pliku implementacyjnego (*c. lub *.cpp). Na początku takiego pliku należy włączyć odpowiadający implementacji plik nagłówkowy (Np. dla pliku module.c będzie to plik module.h).

Każdy plik nagłówkowy powinien być napisany tak, aby można go było kilkakrotnie włączać do dowolnego modułu i w dowolnym miejscu. Pliki nagłówkowe mogą zawierać: Stałe jawne (np. EOF w pliku stdio.h) Funkcje-makra np. getchar() jest z reguły definiowana jako zamiennik getc(stdin) czy funkcje z rodziny ctype.h Deklaracje funkcji, np. plik string.h zawiera deklaracje funkcji operujących na łańcuchach. Definicje struktur, np. standardowe funkcje we/wy korzystają ze struktury zawierającej informacje o pliku i związanym z nim buforze (plik stdio.h). Definicje typów, np. typ FILE jest wskaźnikiem do struktury zdefiniowanym w pliku stdio.h (za pomocą typedef lub dyrektywy #define). W plikach nagłówkowych zdefiniowane są również typy size_t oraz time_t. Wielu programistów opracowuje własne pliki nagłówkowe i wykorzystuje je w swoich programach. Niektóre z nich są przeznaczone do specjalnych zastosowań, inne można

dołączać do niemal każdego programu. Dołączane pliki mogą same zawierać dyrektywy #include. Pliki nagłówkowe mogą zawierać deklaracje zmiennych zewnętrznych współużytkowanych przez kilka plików. Uważane jest to jednak za rozwiązanie wadliwe stylistycznie, ponieważ sprawdzenie, czy dana zmienna została zadeklarowana wymaga w tym przypadku otwarcia dodatkowego pliku. Mimo to pliki nagłówkowe nadają się dobrze do przechowywania danych typu const static. Kwalifikator const chroni przed przypadkowymi modyfikacjami, a słowo static, że każdy z plików dołączających plik nagłówkowy otrzyma własną kopię stałej nie trzeba więc pamiętać o umieszczeniu w jednym pliku deklaracji definiującej, a we wszystkich pozostałych deklaracji nawiązujących (za pomocą słowa kluczowego extern). Przykład nieprawidłowego podziału na moduły (nie wystąpi błąd kompilacji) Efekt końcowy: cały kod zostanie wklejony do pliku main.cpp, a następnie dopiero skompilowany (modularność w poniższym przykładzie nie występuje). // kod zawarty w pliku Part1.cpp double Recip(double x) if(x!= 0) return 1.0/x; // kod zawarty w pliku Part2.cpp int Power(int n) if (n < 0 n > 12) if (n == 0) return 1; return n * Power(n-1); // kod zawarty w pliku main.cpp #include <stdio.h> #include "Part1.cpp" #include "Part2.cpp" int main(int argc, char* argv[])

int k; printf("liczba calkowita : "); scanf("%d",&k); printf("\n%lf\t%d\n\n", Recip(k), Power(k)); Przykład prawidłowego podziału na moduły Efekt końcowy: poszczególne moduły zostaną skompilowane oddzielnie, połączenie nastąpi na etapie linkowania. //kod zawarty w pliku nagłówkowym Part1.h double Recip(double x); // kod zawarty w pliku Part1.cpp #include "Part1.h" double Recip(double x) if(x!= 0) return 1.0/x; //kod zawarty w pliku nagłówkowym Part2.h int Power(int n); // kod zawarty w pliku Part2.cpp #include "Part2.h" int Power(int n) if (n < 0 n > 12) if (n == 0) return 1; return n * Power(n-1); // kod zawarty w pliku main.cpp #include <stdio.h> #include "Part1.h" #include "Part2.h" int main(int argc, char* argv[]) int k;

printf("liczba calkowita : "); scanf("%d", &k); printf("\n%lf\t%d\n\n", Recip(k), Power(k));