x szereg(x)

Podobne dokumenty
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

Stałe, tablice dynamiczne i wielowymiarowe

Wskaźniki. Informatyka

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

Funkcje zawarte w bibliotece < io.h >

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 4. Karol Tarnowski A-1 p.

Funkcje zawarte w bibliotece < io.h >

Tablice, funkcje - wprowadzenie

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

// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.

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

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!

Wskaźniki w C. Anna Gogolińska

Podstawy programowania komputerów

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

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

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

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

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

Podstawy programowania w języku C++

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

Wskaźniki. Programowanie Proceduralne 1

Dariusz Chaberski. UMK Toruń

Podstawy programowania C. dr. Krystyna Łapin

۰ Elementem jednostkowym takiego pliku jest bajt. ۰ Format pliku binarnego: [bajty pliku][eof]

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

Argumenty wywołania programu, operacje na plikach

Języki i metodyka programowania. Wskaźniki i tablice.

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

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

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

DYNAMICZNE PRZYDZIELANIE PAMIECI

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

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

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Lab 9 Podstawy Programowania

Wstęp do programowania 1

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

IX. Wskaźniki.(3 godz.)

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

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

2 Przygotował: mgr inż. Maciej Lasota

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

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

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

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

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

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

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

Języki programowania. Karolina Mikulska-Rumińska Pokój 573, tel Konsultacje wtorek 9-10.

Język ANSI C tablice wielowymiarowe

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

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

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

Programowanie Procedurale. Pliki w języku C++

Spis treści JĘZYK C - PLIKI BINARNE. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF30

5 Przygotował: mgr inż. Maciej Lasota

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

Biblioteka standardowa - operacje wejścia/wyjścia

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1

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

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

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

Laboratorium 5: Tablice. Wyszukiwanie binarne

Funkcje i tablice. Elwira Wachowicz. 23 maja 2013

Procesy. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 9 października 2011

Podstawy programowania w języku C++

Uzupełnienie dot. przekazywania argumentów

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

Część 4 życie programu

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

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

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

Jerzy Nawrocki, Wprowadzenie do informatyki

W języku C każdy plik fizyczny jest ciągiem bajtów, z których każdy może być niezależnie odczytany. Borland 01234

// Potrzebne do memset oraz memcpy, czyli kopiowania bloków

Programowanie w językach wysokiego poziomu

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

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

Laboratorium 6: Dynamiczny przydział pamięci. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011

Wykład 5_2 Algorytm ograniczania liczby serii za pomocą kopcowego rozdzielania serii początkowych

Język C, tablice i funkcje (laboratorium)

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

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

Zmienne, stałe i operatory

C++ wprowadzanie zmiennych

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

Programowanie komputerowe. Zajęcia 4

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

iii. b. Deklaracja zmiennej znakowej poprzez podanie znaku

1. Wprowadzanie danych z klawiatury funkcja scanf

Wstęp do programowania

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

Tablice w argumentach funkcji. Tablicy nie są przekazywane po wartości Tablicy są przekazywane przez referencje lub po wskaźniku

Spis treści PLIKI BINARNE W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF23

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

Transkrypt:

Wstęp do Programowania, laboratorium 09 Zadanie 1. Zrobić program liczący wartość funkcji sin(x) przy pomocy rozwinięcia w szereg. Zakres wartości x (od, do) oraz liczba przedziałów podawane będą jako argumenty programu, wyniki wpisywane będą do plików dokładny do pliku sin_dokladny.txt, obliczony z szeregu - sin_szereg.txt. Przykładowe wywołanie programu:./a.out -2 4 60 ^ Policzy dla x od -2 do 5, 60 podprzedziałów Przykładowa zawartość plików: sin_dokladny.txt x sin(x) -2 0.2-1.9 0.31-1.8 0.47... sin_szereg.txt x szereg(x) -2 0.2-1.9 0.3-1.8 0.45... Zadanie 2. Zrobić dwie funkcje: zamieniającą małe znaki na duże, zamieniającą spacje na podkreślenia i cyfry na inne, losowe. Obie funkcje powinny jako argument przyjmować wskaźnik na char. Wczytać dowolny plik tekstowy (całość, do tablicy). Do jednego pliku wpisać jego zawartość po użyciu na nim pierwszej funkcji, do drugiego zawartość po użyciu drugiej funkcji. Zadanie 3. Zrobić funkcję która dla podanego argumentu x zwraca wartość funkcji sin i cos oraz x przeliczone z radianów na stopnie.

Instrukcja http://pl.wikibooks.org/wiki/c/wska%c5%baniki Wskaźnik jest zmienną przechowującą adres z pamięci. int *a; char *tekst; int **b; double ******c; int* (*wskaznik)(char*, int); Wskaźnik na zmienną typu int Wskaźnik na zmienną typu char Wskaźnik na zmienną typu int* (wskaźnik na wskaźnik) Wskaźnik na wskaźnik na wskaźnik na wskaźnik... Wskaźnik na funkcję zwracającą wskaźnik na int, przyjmującą argumenty typu char* oraz int Nazwa tablicy jest wskaźnikiem na jej pierwszy element. Nazwa funkcji jest wskaźnikiem na nią. int *a; a=&zmienna; Deklaracja zmiennej a będącej wskaźnikiem na int Przypisanie adresu zmiennej zmienna do wskaźnika a *a; Odczytanie wartości na którą wskazuje a. a++; a+=4; #include <stdio.h> int main(int argc, char *argv[]) int tablica[]=10, 11, 12; int *wskaznik=tablica; // ^ to samo co v // int *wskaznik=&tablica[0]; Przestawienie a na następną zmienną w pamięci Przeskoczenie 4 elementy wprzód. // Zwieksz i o jeden, przesun wskaznik na następny element for(i=0; i<3; i++, wskaznik++) printf("%d\n", *wskaznik); return 0;

Alokacja pamięci Wskaźniki można wykorzystać do tworzenia tablic o różnych wartościach w trakcie działania programu. #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) double *wskaznik; int liczba_elementow=50; wskaznik=(double *) malloc(liczba_elementow * sizeof(double)); for(i=0; i<liczba_elementow; ++i) wskaznik[i]=1.0/i; // *(wskaznik+i)=1.0/i; // To samo co ^ for(i=0; i<liczba_elementow; ++i) printf("%d: %f %f\n", i, wskaznik[i], *(wskaznik+i)); // Zajeta pamiec nalezy oddac przed koncem programu // Tylko zli programisci tego nie robia free(wskaznik); return 0; Funkcja malloc jako argument przyjmuje wielkość pamięci jaką potrzebujemy. Jeśli chcemy zrobić tablicę na 50 elementów, każdy o wielkości 8 bajtów, potrzebujemy 50*8 bajtów. sizeof(double) zwraca wielkość zmiennej typu double. sizeof(int), sizeof(char) zwrócą odpowiednio wielkość zmiennej int i char.

Podpowiedzi Ad. 2 Zrobić dwie funkcje: void zamianaliterki(char *tekst); void zamianacyferki(char *tekst); Na początku każdej sprawdzić jakiej długości przesłany został tekst, przy pomocy funkcji strlen lub wyliczając ręcznie: int dlugosc=0; while(tekst[dlugosc++]); // ^ Kto zgadnie jak to dziala i czemu dziala? printf("dlugosc tekstu: %d\n", dlugosc); Uruchomić pętlę zamieniającą znaki: for(i=0; i<dlugosc; ++i) if(literka jest mala) zamien na duza Aby cały plik wczytać za jednym razem, należy zrobić tablicę która go całego zmieści potrzebna jest więc wiedza o wielkości pliku. Przy pomocy fseek można przeskoczyć na koniec pliku, a przy pomocy ftell można zobaczyć gdzie aktualnie jesteśmy. Będąc na końcu pliku, ftell zwróci jego wielkość w bajtach. Mając wielkość pliku, można zrobić tablicę i przy pomocy fread wczytać do niej cały plik. int wielkosc; char *dane; FILE plik=fopen(...); // Otworz plik fseek(...); wielkosc=ftell(...); fseek(...); // Przeskocz na koniec // Sprawdz wielkosc pliku // Wroc na poczatek dane=(char *)malloc(...); // Zajmij pamiec fread(...) // Wczytaj caly plik do tablicy Proponuję pamiętać o tym, że każdy tekst musi kończyć się znakiem '0'. Po wczytaniu pliku, zrobić drugą tablicę tej samej wielkości i przekopiować do niej zawartość pierwszej. Wywołać obie funkcji zmieniające znaki (do pierwszej przesłać wskaźnik na pierwszą tablicę, do drugiej na drugą). Na koniec otworzyć dwa pliki i przy pomocy funkcji fwrite wpisać do nich zawartość każdej z tablic. Warto też przed końcem programu zwolnić zajętą pamięć.

Ad. 3 Chcemy zrobić funkcję, która zwraca trzy wartości wyliczone na podstawie jednego argumentu. W C można zwrócić tylko jedną wartość, dlatego trzeba zrobić to inaczej: jako argumenty funkcji przesłać wskaźniki na trzy dodatkowe zmienne, do których zostaną wpisane obliczone wartości: void sincosrad(float x, float *vsin, float *vcos, float *xdeg); Przesłanie zmiennej 'normalnie' (float x) powoduje wysłanie do funkcji nowej zmiennej o tej samej wartości (tzw. przesłanie argumentu przez wartość). Przesyłając wskaźnik podajemy funkcji adres miejsca w pamięci do którego ma wpisać obliczone wartości.