Funkcje standardowe (1)

Slides:



Advertisements
Podobne prezentacje
Funkcje matematyczne Microsoft Office 2003 Exel.
Advertisements

Tablice 1. Deklaracja tablicy
Język C/C++ Funkcje.
Wzorce.
Język ANSI C Funkcje Wykład: Programowanie komputerów
Kompilator: a) gcc [cc, g++]
Języki programowania C++
Standardowe kontrolki (1)
dynamiczny przydział pamięci
formatowanie kodu źródłowego
Funkcje Modularyzacja : program główny , funkcje Funkcje :
Zakres i zasięg deklaracji Zakres : obszar programu, w którym identyfikator może być użyty zakres globalny : cały program zakres lokalny : definicja pojedynczej.
Modularyzacja i struktury danych w C Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie.
Modularyzacja i struktury danych w C Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Podstawy informatyki Wirtotechnologia – Wskaźniki i referencje
Podstawy informatyki Powtórka Grupa: 1A Prowadzący: Grzegorz Smyk
Tablice.
1 Dygresja: cztery płyty główne…. 2 Dygresja: osobliwości C /* cos o nieistniejacym typie Boolean */ /* oraz o operatorze przecinkowym */ #include int.
Ćwiczenie (1) Dostosuj poniższy program do wymogów programu zaliczeniowego #include typedef struct{ char imie[30]; char nazwisko[50]; int rokUrodzenia;
Funkcje znakowe, liczbowe i obsługa dat Kolejny krok w poznaniu SQL-a.
Funkcje znakowe, liczbowe i obsługa dat Kolejny krok w poznaniu SQL-a.
Programowanie w C Wykład 3
PRZEPEŁNIENIE BUFORA B u f f e r O v e r f l o w
Podstawy programowania PP – WYK3 Wojciech Pieprzyca.
Podstawy programowania PP – LAB6 Wojciech Pieprzyca.
Podstawy programowania PP – LAB4 Wojciech Pieprzyca.
Język ANSI C Operacje we/wy
Wykład 2 struktura programu elementy języka typy zmienne
Tablice tablica jest sekwencją elementów tego samego typu (prostego lub obiektowego) w Javie tablice są obiektami, a zmienne tablicowe przechowują referencję
Arkusz kalkulacyjny Excel
nowe operatory & . (kropka) * operator rzutowy -> , (przecinek)
Podstawy programowania II
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
SQL – podstawowe funkcje
Pliki tekstowe. Operacje na plikach. mgr inż. Agata Pacek.
Podstawy programowania w języku C i C++
TABLICE C++.
Łódź, 3 października 2013 r. Katedra Analizy Nieliniowej, WMiI UŁ Podstawy Programowania Złożona składnia języka C++
Pliki Pojęcie i rodzaje plików Definicja typu plikowego Operacje wykonywane na plikach elementowych.
sortowanie na bazie – wykorzystanie sortowania ze zliczaniem
Podstawy programowania w języku C i C++
Jerzy F. Kotowski1 Informatyka I Wykład 14 DEKLARATORY.
C# Platforma .NET CZ.3 Kuba Ostrowski.
Historia Języka C Idea C pochodzi od języka BCPL, opracowanego przez M. Richardsa 1970 – język B stworzony przez K. Thompsona Język C wprowadzono po raz.
Podstawy informatyki 2013/2014
PWSZ Gniezno // codefly 2009 Łukasz Tomczak
Systemy operacyjne (wiosna 2014)
Podstawy języka Instrukcje - wprowadzenie
1 argumenty wiersza poleceń: getopt #include /* getopt2.c getopt2.c */ #include int main(int argc, char *argv[]) { int n; int opt; printf("\n argc=%d\n",argc);
1 Zagadnienia na egzamin. 2 Język C podsumowanie Struktura programu w języku C Zmienne, Stałe Operacje arytmetyczne Operatory logiczne Priorytety operatorów.
1 dynamiczny przydział pamięci malloc() free() realloc() calloc() memset() memcpy( ) mempcpy( ) memmove() (wskaźniki!! )
Programowanie proceduralne Podstawy Programowania dla geoinformatyków Wykład 3 Rafał Witkowski, 2015.
1 Uzupełnienie dot. przekazywania argumentów #include struct nowa { int f; char line[20000]; int k; } reprezentant; int main() { void funkcja7( struct.
Wykład 2 Programowanie obiektowe. Programowanie obiektowe wymaga dobrego zrozumienia działania funkcji definiowanych przez użytkownika, w ten sposób będziemy.
Seminarium Dyplomowe: Metodyka i Techniki Programowania Autor: Bartłomiej Fornal.
Podstawy informatyki Tablice Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Grzegorz Cygan Wstęp do programowania mikrosterowników w języku C
PODSTAWY INFORMATYKI Wykład 4.
Wstęp do programowania
Uzupełnienie dot. przekazywania argumentów
nowe operatory & . (kropka) * operator rzutowy -> , (przecinek)
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
dynamiczny przydział pamięci
Język C++ Tablice Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Zapis prezentacji:

Funkcje standardowe (1) Pliki standardowej biblioteki C: assert.h - makra do asercji ctype.h - klasyfikacje znaków typu char (isspace, isalpha itd.) errno.h - deklaracja errno fenv.h - środowisko dla liczb zmiennoprzecinkowych (ISO C 9X) float.h - definicje specjalne dla liczb zmiennoprzecinkowych limits.h - makra określające granice dla typów ścisłych locale.h - definicje lokali math.h - funkcje matematyczne setjmp.h - funkcje setjmp i longjmp signal.h - sygnały stdarg.h - narzędzia dla funkcji o zmiennej liście argumentów stddef.h - standardowe definicje (ptrdiff_t i size_t głównie) stdio.h - operacje wejścia/wyjścia stdlib.h - zespół funkcji użytkowych string.h - funkcje operujące na tablicach znaków time.h - narzędzia do odczytywania, interpretacji i prezentacji czasu wchar.h - obsługa "szerokiego" (wide-char) zestawu znaków wctype.h - wersja `ctype.h' dla szerokich znaków

Funkcje standardowe (2) Funkcje znakowe: isalpha(c) - czy c jest znakiem z alfabetu, isupper(c) - czy C jest duże, islower(c) - czy C jest małe, isdigit(c) - czy c jest cyfrą [0..9], isalnum(c) - czy c jest znakiem alfanumerycznym, isspace(c) - czy c jest separatorem (spacja, TAB, LF, FF, VT lub CR), toupper(c) - zwraca c duże, tolower(c) - zwraca c małe. Zadanie 1. Napisz program zmieniający we wskazanym pliku wszystkie małe litery na duże lub odwrotnie. Zadanie 2. Napisz program, który oblicza ile jest dużych liter, ile małych liter, ile cyfr, a ile innych znaków we wskazanym pliku.

Funkcje standardowe (3) Funkcje matematyczne (1): sin(x) – sinus cos(x) – cosinus tan(x) – tangens asin(x) – arcussinus, acos(x) – arcuscosinus, atan(x) – arcustangens, atan2(y,x) – arcustangens (x / y), sinh(x) – sinus hiperboliczny, cosh(x) – cosinus hiperboliczny, tanh(x) – tangens hiperboliczny, exp(x) – funkcja wykładnicza,

Funkcje standardowe (4) Funkcje matematyczne (2): log(x) – logarytm naturalny, log10(x) – logarytm dziesiętny, pow(x,y) – x do potęgi y, sqrt(x) – pierwiastek kwadratowy z x, ceil(x) – najmniejsza liczba całkowita nie mniejsza niż x, floor(x) – największa liczba całkowita nie większa niż x , fabs(x) – wartość bazwzględna, fmod(x,y) – reszta z dzielenia x/y. Zadanie 3. Napisz program obliczający odległość Euklidesową między punktami o wprowadzonych przez użytkownika współrzędnych

Funkcje standardowe (5) Funkcje obsługi czasu (1): clock() - przybliżoną wartość czasu procesora zużytego przez program, ctime() - przekształca czas w formie podawanej przez funkcję time() na napis zawierający lokalny czas, difftime() - różnicę między zmienną czas1, a zmienną czas2, localtime() - przekształca czas kalendarzowy zadany za pomocą wskaźnika do zmiennej zawierającej ilość sekund od 1 stycznia 1970 r. na czas lokalny w postaci wskaźnika do struktury tm, strftime() - przekształca dane o czasie zawarte w strukturze tm na tekst, time() - odczytu czasu, który upłynął od dnia 1 stycznia 1970 roku godziny 0:00:00 czasu uniwersalnego, tm (struktura) - struktura zawierająca elementy reprezentujące liczbę sekund, liczbę minut, godzinę, dzień miesiąca miesiąc liczbę lat od roku 1900, numer dnia tygodnia, numer dnia w rokuZadanie 3. Napisz program obliczający odległość Euklidesową między punktami o wprowadzonych przez użytkownika współrzędnych

Funkcje standardowe (6) Funkcje obsługi czasu (2): Zadanie 4. Napisz program wypisujący na ekran aktualną datę i godzinę

Funkcje standardowe (7) Inne funkcje użytkowe: Interpretacja liczbowa argumentu tekstowego int atoi( const char * ); long atol( const char* ); double atof( const char* ); Generowanie liczb pseudolosowych void srand( unsigned int ); - inicjalizacja generatora int rand( void ); - zwraca liczbę losową z przedziału <0, RANDMAX> Przerywanie programu void exit( int ); void abort( void ); int atexit( void (*)( void ) ); - rejestracja funkcji wykonywanej przy opuszczeniu programu Obsługa środowiska char* getenv( const char *name ); int setenv( const char *name, const char *value, int replace ); void unsetenv( const char *name ); int putenv( const char *string );

Funkcje standardowe (8) Zadanie: Napisz program wypisujący na ekran wartość wybranej zmiennej środowiskowej

Niezdefiniowane zachowania Odczyt i zapis poza zasięgiem tablicy Przepełnienie liczby całkowitej ze znakiem Dotarcie do końca funkcji zwracającej wartość, bez napotkania na wyrażenie return Odczytanie zmiennej przed zapisaniem do niej wartości Kolejność wykonywania wyrażeń przekazanych jako argumenty do funkcji

Zarządzanie pamięcią (1) Programy w języku C mają dostęp do dwóch rodzajów pamięci: stosu i sterty. Na stosie przechowywane są zmienne lokalne. Stos jest obsługiwany automatycznie. Sterta jest obszarem pamięci udostępnianym przez system operacyjny wszystkim wykonującym się procesom. Wielkość sterty jest często znacznie większa niż stosu. Procesy działające w systemie współzawodniczą o dostęp do wspólnego obszaru pamięci.

Zarządzanie pamięcią (2) Przydzielanie pamięci Do przydzielania pamięci w języku C służą funkcje malloc() i calloc(). void* malloc(int size) void* calloc(size_t numberOfElements, size_t elementSize) Funkcja malloc() przydziela podaną w argumencie ilość bajtów. Zawartość przydzielonej pamięci jest nieokreślona. Funkcja calloc() przydziela alokuje na stercie numberOfElements elementów o rozmiarze elementSize. Funkcja wypełnia zerami przydzielany obszar pamięci przed dokonaniem alokacji. Funkcja malloc() i calloc() zwracają wskaźnik do przydzielonego miejsca w pamięci. Jeśli alokacja nie powiodła się, to funkcje zwracają NULL.

Zarządzanie pamięcią (3) Zwalnianie pamięci Przydzielony obszar pamięci można zwolnić za pomocą funkcji free(). void free(void * pointer) Funkcja zwraca obszar pamięci wskazany przez argument. Po wywołaniu funkcji pointer ma niepoprawną wartość.

Zarządzanie pamięcią (4) Problemy z wykorzystaniem sterty: 1. Alokacja pamięci jest wolniejsza niż na stosie. 2. Możliwe, że żądanie przydzielenia pamięci w czasie wykonania programu jest niemożliwe. Wymaga to obsłużenia takich sytuacji w kodzie. 3. Jeżeli zajmowana pamięć nie jest zwalniana, gdy nie jest już potrzebna, to procesy mogą przestać funkcjonować, ponieważ w systemie zabraknie pamięci. 4. Częste alokowanie sterty może spowodować fragmentację, czyli rozrzucenie wolnych obszarów pamięci po wielu różnych fragmentach sterty. Powoduje to zwiększenie ryzyka niepowodzenia alokacji i zmniejszenia wydajności

Zarządzanie pamięcią (5) Przykład: #include <stdio.h> #define FALSE 0 #define NULL 0 typedef struct { int dataitem; struct listelement *link; } listelement; void Menu (int *choice); listelement * AddItem (listelement * listpointer, int data); listelement * RemoveItem (listelement * listpointer); void PrintQueue (listelement * listpointer); void ClearQueue (listelement * listpointer);

Zarządzanie pamięcią (6) Przykład: main () { listelement listmember, *listpointer; int data, choice; listpointer = NULL; do { Menu (&choice); switch (choice) { case 1: printf ("Wprowadz liczbe calkowita do kolejki: "); scanf ("%d", &data); listpointer = AddItem (listpointer, data); break; case 2: if (listpointer == NULL) printf ("Kolejka jest pusta.\n"); else listpointer = RemoveItem (listpointer); case 3: PrintQueue (listpointer); case 4: default: printf ("Wskazano niewlasciwa pozycje menu\n"); } } while (choice != 4); ClearQueue (listpointer);

Zarządzanie pamięcią (7) Przykład: void Menu (int *choice) { char local; printf ("\n\t1 - dodaj element,\n\t2 - usun element\n\ \t3 - wyswietl kolejke\n\t4 - zakoncz program\n"); do { local = getchar (); if ((isdigit (local) == FALSE) && (local != '\n')) { printf ("\n\Prosze wprowadzic liczbe\n"); printf ("Nacisnij 1 aby dodac element, 2 aby usunac element, 3 aby wyswietlic kolejke, 4 aby zakonczyc program\n"); } } while (isdigit ((unsigned char) local) == FALSE); *choice = (int) local - '0';

Zarządzanie pamięcią (8) Przykład: listelement * AddItem (listelement * listpointer, int data) { listelement * lp = listpointer; if (listpointer != NULL) { while (listpointer -> link != NULL) listpointer = listpointer -> link; listpointer -> link = (struct listelement *) malloc (sizeof (listelement)); listpointer -> link = NULL; listpointer -> dataitem = data; return lp; } else { listpointer = (struct listelement *) malloc (sizeof (listelement)); return listpointer;

Zarządzanie pamięcią (9) Przykład: listelement * RemoveItem (listelement * listpointer) { listelement * tempp; printf ("Usunieto element %d\n", listpointer -> dataitem); tempp = listpointer -> link; free (listpointer); return tempp; } void PrintQueue (listelement * listpointer) { if (listpointer == NULL) printf ("Kolejka jest pusta\n"); else while (listpointer != NULL) { printf ("%d\t", listpointer -> dataitem); listpointer = listpointer -> link; printf ("\n"); void ClearQueue (listelement * listpointer) { listpointer = RemoveItem (listpointer);

Zarządzanie pamięcią (10) Zadanie: Zmodyfikuj przedstawiony program tak, by otrzymać listę dwukierunkową