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

Podobne dokumenty
typ_zwracanej_wartości nazwa_funkcji(lista deklaracji argumentów) { ciało(treść) funkcji return Val; //zwracana wartość }

W języku C dostępne są trzy instrukcje, umożliwiające tworzenie pętli: for, while oraz do. for (w1;w2;w3) instrukcja

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

4. Tablica dwuwymiarowa to jednowymiarowa tablica wskaźników do jednowymiarowych tablic danego typu.

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

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

Programowanie - wykład 4

Część 4 życie programu

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Argumenty wywołania programu, operacje na plikach

Pliki. Informacje ogólne. Obsługa plików w języku C

Lab 8. Tablice liczbowe cd,. Operacje macierzowo-wektorowe, memcpy, memmove, memset. Wyrażenie warunkowe.

7 Przygotował: mgr inż. Maciej Lasota

Programowanie w językach wysokiego poziomu

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

Pliki. Informacje ogólne. Obsługa plików w języku C

I - Microsoft Visual Studio C++

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

Język C zajęcia nr 5

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

Biblioteka standardowa - operacje wejścia/wyjścia

int f(); //f - funkcja zwracająca wartość typu int int (*f)(); //f - wskaźnik do funkcji zwracającej wartość typu int

typ_zwracanej_wartości nazwa_funkcji(lista deklaracji argumentów) { ciało(treść) funkcji return Val; //zwracana wartość }

dr inż. Jarosław Forenc

Wstęp do Programowania, laboratorium 02

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

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

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

Programowanie strukturalne i obiektowe

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

1 Podstawy c++ w pigułce.

Instrukcje sterujące. Programowanie Proceduralne 1

Podstawy Programowania Podstawowa składnia języka C++

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

for (i=0; i<10; i=i+1) instrukcja; instrukcja zostanie wykonana 10 razy for (inicjalizacja; test; aktualizacja) instrukcja;

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Podstawy Informatyki sem. I 2014/2015 studia zaoczne Elektronika i Telekomunikacja!

Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop

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

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

PRZYKŁADY OPERACJI PLIKOWYCH z wykorzystaniem biblioteki <stdio.h>

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

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); }

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Podstawy Programowania.

Język ludzki kod maszynowy

Podstawy Programowania C++

2 Przygotował: mgr inż. Maciej Lasota

5 Przygotował: mgr inż. Maciej Lasota

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

do instrukcja while(wyrażenie);

1 Podstawy c++ w pigułce.

Programowanie - instrukcje sterujące

iii. b. Deklaracja zmiennej znakowej poprzez podanie znaku

Program wykonujący operację na plikach powinien zachować schemat działania zapewniający poprawną pracę:

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

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

EGZAMIN MATURALNY 2011 INFORMATYKA

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

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

Podstawy programowania w języku C

while (test) instrukcja; int i=0; while (i<10) i++; dopóki test prawdziwy wykonuj instrukcję Wykonano: 35% / \ fałsz test prawda instrukcja

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory

Język C część 1. Sformułuj problem Zanalizuj go znajdź metodę rozwiązania (pomocny może byd algorytm) Napisz program Uruchom i przetestuj czy działa

Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie 1. Podstawy. Wprowadzenie do programowania w języku C. Katedra Metrologii AGH

Podstawy Programowania

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

3 Przygotował: mgr inż. Maciej Lasota

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

do instrukcja while (wyrażenie);

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Java Podstawy. Michał Bereta

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

Zmienne, stałe i operatory

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

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Pętla for. Wynik działania programu:

Laboratorium nr 1. i 2.

Wstęp do programowania 1

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

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

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

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język C część 2. Podejmowanie decyzji w programie. if else. switch

Wstęp do programowania

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak:

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

Funkcje zawarte w bibliotece < io.h >

Lekcja 1. Składnia języka zmienne i podstawowe instrukcje PHP. Do wyświetlania tekstu służy instrukcja echo echo Hello world ;

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Programowanie Proceduralne

Język C, tablice i funkcje (laboratorium)

Transkrypt:

Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Lab 4. Podstawowe biblioteki. Pętle. Operatory inkrementacji, dekrementacji, przypisania. Instrukcje goto, continue, break. Operacje na plikach. Projekt nr 1. 1. Pliki nagłówkowe dołączamy dyrektywą #include. Do najczęściej wykorzystywanych bibliotek możemy zaliczyć: i. <stdio.h> Definiuje podstawowe funkcje wejścia/wyjścia. ii. <stdlib.h> Zawiera najbardziej podstawowe funkcje związane z konwersją numeryczną, generacją liczb pseudolosowych, alokacją pamięci czy sterowaniem wykonywanych instrukcji. iii. <math.h> Zawiera podstawowe funkcje matematyczne. iv. <stdbool.h> Definiuje typ logiczny (bool). v. <string.h> Dostarcza funkcji dla ciągów znakowych. 2. W językach imperatywnych instrukcje wykonywane są sekwencyjnie - jedna po drugiej. W celu zmiany takiego porządku stosuje się instrukcje sterujące. Do takich instrukcji zaliczamy instrukcje warunkowe (lab 2) czy pętle. W języku C wyróżniamy trzy podstawowe pętle: i. for - pętla składająca się z trzech wyrażeń: warunku początkowego (zwykle inicjalizacji zmiennej będącej licznikiem wykonywanych iteracji), warunku stopu (określającego kiedy nasza pętla ma się zatrzymać), wyrażenie wykonywane po każdej iteracji (zwykle inkrementacja licznika); ii. while - pętla przyjmująca jedno wyrażenie wykonywane zawsze przed instrukcjami w ciele pętli. Jeśli wyrażenie zwraca 0 (logiczny fałsz), pętla jest przerywana; iii. do-while - pętla podobna do while z tą różnicą, że wpierw wykonywane są instrukcje podane w ciele pętli, a następnie wyrażenie warunkowe. Pętla ta gwarantuje, że instrukcje wykonają się co najmniej jeden raz. Zapoznaj się ze strukturą i sposobem użycia wyrażeń w dokumentacji MSDN (https://msdn.microsoft.com/en-us/library/015az3wz.aspx). 3. Język C dostarcza skróconych zapisów przypisania łączonego z daną operacją arytmetyczną. Poniższa tabela przedstawia zapisy skrócone i ich pełne odpowiedniki. Lp. Zapis skrócony Zapis pełny 1. x += 2; x = x + 2; 2. x -= 2; x = x - 2; 3. x *= 2; x = x * 2; 4. x /= 2; x = x / 2; 5. x++; x = x + 1; 6. ++x; x = x + 1; 7. x--; x = x - 1; 8. --x; x = x - 1; Zapisy 5. i 6. nazywamy inkrementacją, natomiast 7. i 8. dekrementacją. Przetestuj poniższy kod - czym różnią się zapisy 5. - 8.? Wydział Fizyki, Matematyki i Informatyki Politechniki Krakowskiej 1

int a, b, c, d; a = 0; b = a++; c = 0; d = ++c; printf("a = %i\n", a); printf("b = %i\n", b); printf("c = %i\n", c); printf("d = %i\n", d); 4. Utwórz nowy projekt. Napisz program, który wypisuje określoną ilość razy tekst "Hello world!". Przed wykonaniem pętli poproś o podanie ilości powtórzeń. 5. Napisz program, który oblicza silnię dla podanego n. Algorytm zaimplementuj tworząc nową funkcję z pętlą. 6. Do instrukcji sterujących zaliczamy również poniższe polecenia: i. break - pozwala na opuszczenie wykonywania pętli w dowolnym momencie; ii. continue - powoduje przejście do kolejnej iteracji pętli; iii. goto etykieta - powoduje przejście do miejsca oznaczonego etykietą. 7. Napisz nieskończoną pętlę wczytującą wprowadzane z klawiatury przez użytkownika znaki do momentu podania znaku 'e'. Do przerwania wykorzystaj instrukcję break. 8. Edytuj powyższy program tak, aby zliczał wystąpienia liter: a, b, c - każdej osobno oraz wszystkich pozostałych znaków razem - do momentu podania znaku 'e'. Skorzystaj z instrukcji continue i break. 9. Edytuj powyższy program tak, aby w przypadku wystąpienia litery 'c' była ona zarówno zliczana jako litera 'c' jak i wliczana do sumarycznej liczby wystąpień pozostałych znaków. Skorzystaj z instrukcji goto. 10. Funkcje operacji na plikach dostarcza biblioteka stdio.h. Wyróżniamy dwie metody dostępu do plików: niskopoziomową (binarną, np. open()) i wysokopoziomową (tekstową, np. fopen()). Aby otrzymać dostęp do pliku musimy zadeklarować pusty wskaźnik na obiekt typu FILE. Następnie funkcją fopen(filename, mode), gdzie filename jest ścieżką dostępu (względną lub bezwzględną) wraz z nazwą pliku, natomiast mode określa nam uprawnienia, otrzymujemy dostęp do naszego pliku. Wyróżniamy następujące podstawowe metody dostępu (mode) do pliku: i. "r" - otwiera na czytanie; plik musi istnieć; ii. "w" - otwiera na pisanie; jeśli plik istnieje to jego zawartość zostaje zniszczona; iii. "a" - otwiera na pisanie; jeśli plik istnieje to zawartość jest dopisywana do końca pliku; jeśli plik nie istnieje to zostaje utworzony; iv. "r+" - otwiera na czytanie i pisanie; plik musi istnieć; v. "w+" - otwiera na czytanie i pisanie; jeśli plik istnieje to jego zawartość zostaje zniszczona; Wydział Fizyki, Matematyki i Informatyki Politechniki Krakowskiej 2

vi. "a+" - otwiera na czytanie i pisanie; jeśli plik istnieje to zawartość jest dopisywana do końca pliku; jeśli plik nie istnieje to zostaje utworzony. Do parametru mode można również dołączyć opcje określające, czy mamy do czynienia z plikiem zwykłym (t) czy binarnym (b). Domyślnie wybierany jest tryb dla plików zwykłych (tekstowych). Więcej informacji nt. metod dostępu na wykładzie i w dokumentacji MSDN (https://msdn.microsoft.com/en-us/library/yeby3zcb.aspx). 11. Operacje odczytu i zapisu do pliku są bardzo podobne do znanych już nam operacji printf i scanf, z tą różnicą, że jako pierwszy argument podajemy wskaźnik do pliku. Do odczytu możemy wykorzystać funkcję fscanf, a do zapisu fprintf. Po każdej zakończonej pracy z plikiem należy go zamknąć poleceniem: fclose. Opis wymienionych i dodatkowych funkcji - na wykładzie i w dokumentacji MSDN. 12. Utwórz nowy projekt. Przekopiuj i przeanalizuj poniższy kod: #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main(int argc, char *argv[]) FILE *fp = NULL; fp = fopen("lab4.txt", "w"); if (fp == NULL) printf("nie mogę otworzyć pliku lab4.txt do zapisu!\n"); getchar(); exit(1); char tekst[] = "Hello world w pliku :)"; fprintf(fp, "%s", tekst); fclose(fp); fp = NULL; getchar(); return 0; 13. Utwórz plik tekstowy z wiadomością: "I <3 programming". Napisz program, który będzie odczytywał wiadomość z pliku po jednym znaku i wyświetlał ją na ekranie. Skorzystaj z pętli while. Podpowiedź: sprawdź jakie wartości zwraca funkcja fscanf w przypadku, gdy dojdzie do końca pliku. 14. Utwórz nowy projekt. W ustawieniach projektu (Projekt/nazwa_projektu Właściwości) wpisz argumenty przekazywane do programu wraz z jego wywołaniem w trybie Debug (tak jak na poniższym zrzucie ekranu). Wydział Fizyki, Matematyki i Informatyki Politechniki Krakowskiej 3

Przeanalizuj wywołanie poniższego kodu: #include<stdio.h> #include<stdlib.h> int main(int argc, char *argv[]) int i; printf("liczba argumentow: %i\n", argc); for (i = 0; i < argc; i++) printf("%s\n", argv[i]); getchar(); return 0; 15. Tablicowanie funkcji w przedziale [a,b] z krokiem dx. Policzyć wartości funkcji 1 123 Dla x zmieniającego od a do b z krokiem dx. Wartości funkcji liczone w funkcji double ff(double x) Wyniki (, ) wyświetl na ekranie i zapisz do pliku. fprintf(fw, "\t%10.2lf\t\t%15.4lf\n", x, y); printf("\t%10.2lf\t\t%15.4lf\n", x, y); 16. Tablicowanie funkcji w przedziale [a,b] z krokiem dx. Do wyznaczenia wartości funkcji w danym punkcie wykorzystaj rozwinięcie funkcji w szereg Taylora. Dla sprawdzenia poprawności rozwiązania wypisz wartość ścisłą funkcji w danym punkcie. Wydział Fizyki, Matematyki i Informatyki Politechniki Krakowskiej 4

Policzyć dla dowolnego argumentu wartość funkcji korzystając z jej rozwinięcia w szereg Taylora 1 1! 2!, < < 3! Obliczenie sumy wykonaj z zadaną dokładnością. Sumę nieskończoną zastępujemy sumą skończoną: W której n przyjmujemy tak, by!! < dla dowolnie małego. Natomiast dobierzemy tak, by! " #! < gdzie, " dokładna wartość funkcji, # przybliżona wartość funkcji, żądana dokładność. Zależność między i można wyznaczyć ze znanej postaci reszty szeregu Taylora. #pragma warning (disable: 4996) #include <stdio.h> #include <math.h> #include <stdlib.h> FILE *fw; double sz(double x, double delta); int main() /* Tablicowanie funkcji (szereg potegowy) */ double a, b, dx, x, y, delta, z; printf("podaj przedzial [a,b], krok dx oraz dokladnosc: "); if (scanf("%lf %lf %lf %lf", &a, &b, &dx, &delta)!= 4) printf("blad danych\n"); system("pause"); exit(1); if (!(fw = fopen("wyniki.txt", "w"))) printf("blad otwarcia zbioru\n"); exit(2); for (x = a; x <= b + 0.5*dx; x += dx) y = sz(x, delta); z = exp(x); fprintf(fw, "\t%10.2lf\t\t%15.4le\t\t%15.4le\n", x, y, z); fclose(fw); exit(0); system("pause"); double sz(double x, double delta) /* Obliczanie sumy szeregu potegowego */ double d = 1, s = 1; Wydział Fizyki, Matematyki i Informatyki Politechniki Krakowskiej 5

int n = 1; do d *= x / n; s += d; n++; while (fabs(d) >= delta); return s; 17. PROJEKT NR1. Policz wartości funkcji we wszystkich punktach podziału na części przedziału [%,&]. Funkcja dana jest w postaci rozwinięcia w szereg potęgowy i w postaci wzoru analitycznego. Obliczanie sumy szeregu wykonaj z dokładnością. Algorytm obliczania sumy szeregu zapisz w oddzielnej funkcji. Uzupełnij funkcję obliczającą sumę szeregu tak, by sumowanych było co najmniej ( wyrazów szeregu. Oznacza to, że przerwanie sumowania może nastąpić również wtedy, gdy nie została osiągnięta żądana dokładność. Informacja o tym, czy została osiągnięta dokładność czy też nie winna być znana w funkcji main(). Uzupełnij funkcję obliczającą sumę szeregu tak, by w funkcji main() znana była dodatkowo liczba sumowanych wyrazów szeregu. Wyniki wyświetl na ekranie i zapisz do pliku. Wyniki przedstaw w następującym układzie: x f_szereg(x) f_ścisłe(x) liczba wyrazów szeregu warunek stopu 18. Przeanalizuj w trybie pracy krokowej następujące przykłady do wykładu 4: http://torus.uck.pk.edu.pl/~fialko/text/cc/przykl/ww4.pdf http://torus.uck.pk.edu.pl/~fialko/text/cc/przykl/ww4_1.pdf http://torus.uck.pk.edu.pl/~fialko/text/cc/przykl/ww4_2.zip Wszystkie przykłady dostępne pod adresem: http://torus.uck.pk.edu.pl/~fialko/text/cc/przykl/ Wydział Fizyki, Matematyki i Informatyki Politechniki Krakowskiej 6