Podstawy programowania

Podobne dokumenty
Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

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

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

Pytania sprawdzające wiedzę z programowania C++

Lab 9 Podstawy Programowania

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

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

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

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

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

Wstęp do Programowania, laboratorium 02

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

Podstawy Programowania C++

Tablice, funkcje - wprowadzenie

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

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

Struktury Struktura polami struct struct struct struct

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

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

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Wykład nr 3. Temat: Wskaźniki i referencje. Edward Morgan Forster

Podstawy algorytmiki i programowania - wykład 4 C-struktury

W języku C/C++ pomiędzy wskaźnikami a tablicami istnieje bardzo ścisły związek. Do onumerowania elementów w tablicy służą tzw. INDEKSY.

1 Podstawy c++ w pigułce.

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

IX. Wskaźniki.(3 godz.)

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

Programowanie strukturalne i obiektowe. Funkcje

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

1 Podstawy c++ w pigułce.

Podstawy programowania. Wykład Co jeszcze... Przypomnienia, uzupełnienia. Krzysztof Banaś Podstawy programowania 1

Programowanie komputerowe. Zajęcia 4

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

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

Funkcja (podprogram) void

Podstawy i języki programowania

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

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

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

Wstęp do wskaźników w języku ANSI C

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

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

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

TEMAT : KLASY DZIEDZICZENIE

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

Wskaźniki. Informatyka

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Wartości domyślne, przeciażenia funkcji

Wartości domyślne, przeciażenia funkcji

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

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

Tablice, funkcje, wskaźniki - wprowadzenie

> C++ wskaźniki. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017

lekcja 8a Gry komputerowe MasterMind

Struktury, unie, formatowanie, wskaźniki

Zmienne i struktury dynamiczne

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania

Wprowadzenie do języka Java

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

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

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

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:

*W uproszczeniu: jest dziewięciu sędziów przyznających po dwie noty: za wartość techniczną i artystyczną (skala od 0.0 do 6.0)

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

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

Tablicę 2-wymiarową można przedstawić jako pewien zestaw tablic 1-wymiarowych np.:

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

Programowanie komputerowe. Zajęcia 3

Inicjacja tablicy jednowymiarowej

1 Powtórzenie wiadomości

Warsztaty dla nauczycieli

- wszystkie elementy - wszystkie elementy

Przekazywanie argumentów wskaźniki

W dowolnym momencie można zmienić typ wskaźnika.

Rozdzia l 3. Laboratorium 3. danych zawierajac

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

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

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

ZASADY PROGRAMOWANIA KOMPUTERÓW

DYNAMICZNE PRZYDZIELANIE PAMIECI

Referencje do zmiennych i obiektów

Podstawy programowania 2. Temat: Wprowadzenie do wskaźników. Przygotował: mgr inż. Tomasz Michno

Podstawy programowania w języku C++

Tablice i funkcje. Marcin Makowski. 26 listopada Zak lad Chemii Teoretycznej UJ

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

Zajęcia 6 wskaźniki i tablice dynamiczne

Podstawy programowania 2. Przygotował: mgr inż. Tomasz Michno

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

Wykład 1: Wskaźniki i zmienne dynamiczne

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

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

Microsoft IT Academy kurs programowania

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Transkrypt:

Podstawy programowania I rok Automatyka i Robotyka Eka PWr Ćwiczenia Zestaw 4 Zakres materiału Analiza poprawności konstrukcji, wyliczanie wyrażeń z wskaźnikami i tablicami, ręczna symulacja, opracowywanie funkcji programu. Zadania 1. Mając zdefiniowane w programie int i =7, p=&i, t [ 1 0 ], q1 ; odpowiedz na poniższe pytania. Które z podstawień są poprawne: a) q1=&i; b) q1=&(&i); c) q1=p; d) q1=&p; e) q1=*t[5]; f) q1=&t[5]; g) q1=&t; h) q1=t; Czy po wykonaniu q1=t; q1++; wartości t[1] i *q1 są równe? Czy wynoszą one 7? 2. Załóżmy, że mamy następujące deklaracje: #define ROZMIAR 5 int liczby[rozmiar]={ 3 int *wsk1, *wsk2; wsk1=liczby; wsk2=&liczby[3]; {{ a1, 8 {{ a2, {{ 10, {{ 3 a3 a4 określ wartość każdego z poniższych wyrażeń: a) liczby+2==&liczby[2] b) *(liczby+2)==liczby[2] c) *(liczby+1) d) *liczby+2 e) liczby f) *wsk1 g) printf("%d,%p",*wsk1++,wsk1) h) printf("%d,%p",*++wsk1,wsk1), 9 {{ a5 adresy ; 1

Podstawy programowania, I rok Automatyka i Robotyka PWr 2 i) (*wsk2)++ j) wsk1+4==&liczby[4] k) wsk2-2!=&liczby[1] l) *--wsk2 m) wsk2-wsk1 n) wsk2==wsk1 o) *wsk2==*wsk1 3. Jaka jest wartość *wsk i *(wsk+2) w każdym przypadku? a) int *wsk; int kulki[2][2]={12,14,16 wsk=kulki[0] b) int *wsk; int pilki[2][2]={{12,{14,16 wsk=pilki[0] 4. Ile wynosi **wsk i **(wsk+1) w każdym przypadku? a) int (*wsk)[2]; int kulki[2][2]={12,14,16 wsk=kulki b) int (*wsk)[2]; int pilki[2][2]={{12,{14,16 wsk=pilki 5. Zadeklarowano zmienne: char a[10]="0123456789"; char *pa; char x, y, z; Które z poniższych instrukcji są poprawne? Jeśli są poprawne, jaki będzie efekt ich działania. pa = a; pa++; a++; a=pa; *pa++; (*pa)++; x = *pa; y = *pa++; z = *++pa; printf("%c%c%c\n",x,y,z); printf("%s\n",pa-2); 6. Podaj różnice pomiędzy poniższymi definicjami zmiennej napis char napis[80] = "Ala ma kota"; char napis[] = "Ala ma kota"; char *napis = "Ala ma kota";

Podstawy programowania, I rok Automatyka i Robotyka PWr 3 7. Przy definicjach: int *zptr; int *aptr; void *sptr = 0; int liczba, i; int z[5] = {1,2,3,4,5; zptr = z; wykaż błędy w poniższych fragmentach programu i opisz w jaki sposób można je poprawić. a) ++aptr; b) Aby pobrać pierwszy element tablicy, należy skorzystać z konstrukcji liczba = zptr; c) Przypisanie trzeciego elementu tablicy (o wartości 3) zmiennej liczba uzyskuje się przez liczba=*zptr[2]; d) Na wydrukowanie całej zawartości tablicy z pozwalają instrukcje for(i=0; i<=5; i++) printf("%d\n", zptr[i]); e) Przypisanie wartości wskazywanej przez sptr zmiennej liczba liczba = *sptr; f) ++z; 8. Załóżmy, że liczby zmiennoprzecinkowe pojedynczej precyzji przechowywane są w 4 bajtach, natomiast pierwszy element tablicy znajduje się pod adresem 1002500. Wykonaj następujące operacje: a) Załóżmy, że stałej symbolicznej ROZMIAR została nadana wartość 10. Zadeklaruj tablicę liczb typu float o nazwie liczby, zawierającą 10 elementów i zainicjuj ją wartościami: 0.0, 1.1, 2.2,... 9.9. b) Zadeklaruj wskaźnik nptr wskazujący na obiektu typy float. c) Wydrukuj na standardowym wyjściu zawartość tablicy liczby posługując się indeksem. Posłuż się instrukcją for, zakładając, że została zdefiniowana kontrolująca ją zmienna całkowita i. Każdy z elementów tablicy powinien być wydrukowany z jednym miejscem po przecinku. d) Podaj przykład dwóch różnych wyrażeń, przypisujących zmiennej nptr adres tablicy liczby. e) Wydrukuj zawartość tablicy liczby korzystając z notacji wskaźnik/przesunięcie oraz ze wskaźnika nptr. f) Wydrukuj zawartość tablicy liczby korzystając z notacji wskaźnik/przesunięcie, gdy funkcję wskaźnika pełni nazwa tablicy. g) Wydrukuj zawartość tablicy liczby indeksując wskaźnik nptr. h) Pokaż czwarty element tablicy liczby posługując się metodą indeksowania tablicy oraz notacją wskaźnik/przesunięcie, gdy funkcję wskaźnika pełni nazwa tablicy, a także metodą indeksowania wskaźnika oraz notacją wskaźnik/przesunięcie, gdy funkcję wskaźnika pełni nptr. i) Zakładając, że nptr wskazuje początek tablicy liczby, jaki adres jest określany przez nptr+8? Jaka znajduje się tam wartość? j) Zakładając, że nptr wskazuje na liczby[5], jaki adres będzie wskazywany przez nptr po wykonaniu operacji nptr-=4? W jaki sposób jest przechowywana wartość pod tym adresem?

Podstawy programowania, I rok Automatyka i Robotyka PWr 4 9. Czy następujący fragment kodu jest poprawny? int s t ; s t = &s t ; 10. Co jest niepoprawnego w następującym fragmencie kodu i jak można to poprawić? int s t ; s t = 1 0 0 ; p r i n t f ( %d\n, s t ) ; 11. Pracujesz pewnie już długo. Odpocznij chwilę :) 12. Czy następujący fragment kodu poprawnie skompiluje się i wykona? Jeżeli tak, to co zostanie wyświetlone na ekranie? int a = 5 ; a = & & & &a ; p r i n t f ( a wynosi %d\n, a ) ; 13. Czy następujący fragment kodu poprawnie skompiluje się i wykona? int a = 5 ; a = &&a ; p r i n t f ( a wynosi %d\n, a ) ; 14. Jaki wynik da następujący program? char p ; for ( p = WNT ; p ; p++) p r i n t f ( %c, p 1 ) ; p r i n t f ( \n ) ; 15. Napisz funkcje int strlen(char *str) i int strlen(char str[]), które zwracają długość napisu. 16. Napisz program, który w danej tablicy liczb całkowitych wyszuka element największy. Wszędzie, gdzie to jest możliwe wykorzystać wskaźniki. 17. Jeszcze jedna chwila relaksu nie zaszkodzi. Tym bardziej, że poniżej może być ciężko :) 18. Napisz funkcję void dopisz(char *p, char *q) która dopisuje ciąg znaków wskazywany przez q do ciągu znaków wskazywanego przez p. Przyjąć, że długość struktur danych służących do przechowywania ciągów wskazywanych przez p i q jest określona stałą LENGTH. Zaproponować przebieg testów funkcji.

Podstawy programowania, I rok Automatyka i Robotyka PWr 5 19. Przeanalizuj poniższy program, a następnie odpowiedz na pytania. Odpowiedzi uzasadnij. #include<s t d i o. h> int i, t i [ 1 5 ], t p1 [ 1 5 ], t p2 [ 1 5 ], t p3 [ 1 5 ], t p4 [ 1 5 ] ; for ( i =0; i <=14; i ++) { t i [ i ]= i ; t p1 [ i ]= i ; t p2 [ i ]=& i ; t p3 [ i ]=& t i [ i ] ; t p4 [14 i ]= t i+i ; p r i n t f ( %d\n, t p1 [ 1 0 ] ) ; p r i n t f ( %p\n, t p1 [ 1 0 ] ) ; p r i n t f ( %d\n, ( t p1 [ 1 0 ] ) ) ; / TEST / return 1 ; a) Które linie zawierają polecenia powodujące błąd kompilacji? Które linie zawierają polecenia, które mogą powodować błąd w czasie wykonywania programu? b) Jaką wartość mają tp_2[5], *tp_2[5]w linii 18? c) Jaką wartość mają tp_3[5], *tp_3[5]w linii 18? d) Co zostanie wypisane w linii 14? A co w linii 15? e) Czy polecenie p r i n t f ( %d\n, ( t i + t p4 [ ( t i + 3 ) ] ) ) ; jest poprawne? Jeśli tak, to co zostałoby wypisane po umieszczeniu go w linii 18? 20. Programista miał napisać grę w przesuwankę na planszy 5x5 (na planszy znajdują się 24 elementy ponumerowane od 1 do 24, jedno pole jest puste, gra polega na ułożeniu elementów w kolejności). Jako sposób reprezentacji danych przyjął tablicę jednowymiarową zdefiniowaną jako int plansza[25]; Przyjął także następujące oznaczenia kierunków przesuwania się wolnego pola na planszy: 1 góra, 2 prawo, 4 dół, 8 lewo. Pomóż mu zdefinować funkcje: a) z1d_na2d, której pierwszym argumentem będzie indeks w tablicy, a będzie zwracać parę liczb będących współrzędnymi (x,y) elementu; b) z2d_na1d, która na podstawie współrzędnych (x,y) wyliczy indeks tablicy; c) ruch, która na podstawie aktualnego indeksu wolnego miejsca oraz kierunku wyliczy nowe położenie wolnego miejsca. 21. Nie ma to jak lista zawierająca dwudzieścia jeden zadań. Na szczęście to zadanie też pozwala na chwilę relaksu. Zwłaszcza, że to już koniec (takie info na wszelki wypadek, dla tych co nie zauważyli:).