Referencje. Programowanie w C/C++ Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Informacje organizacyjne: Krzysztof Trojanowski

Podobne dokumenty
Referencje. Programowanie w C/C++ Zasady zaliczeń. Referencje. Zasady zaliczeń. Zasady zaliczeń. Informacje organizacyjne: Krzysztof Trojanowski

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Rok akademicki: 2016/2017 Kod: JFT s Punkty ECTS: 5. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Podstawy programowania w języku C i C++

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1

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

Wskaźniki. Programowanie Proceduralne 1

2 Przygotował: mgr inż. Maciej Lasota

Podstawy programowania w języku C

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

( wykł. dr Marek Piasecki )

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

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Programowanie komputerowe. Zajęcia 1

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

1 Podstawy c++ w pigułce.

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

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

Zajęcia trwają 15 tygodni (2 godziny wykładu, 2 godziny laboratorium tygodniowo) Zaliczenie zajęć jest uwarunkowane zaliczeniem zajęć laboratoryjnych

Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania w języku C++

Rok akademicki: 2013/2014 Kod: JFT s Punkty ECTS: 5. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

KARTA PRZEDMIOTU. Egzamin / zaliczenie. Egzamin / zaliczenie. ocenę*

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

Wstęp do informatyki- wykład 5 Instrukcja selekcji if-else Operatory arytmetyczne i logiczne

Algorytm. a programowanie -

Paostwowa Wyższa Szkoła Zawodowa w Płocku Dariusz Wardowski

Ćwiczenie 1. Wprowadzenie do programu Octave

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

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

Operatory w C++ Operatory arytmetyczne. Operatory relacyjne (porównania) Operatory logiczne. + dodawanie - odejmowanie * mnożenie / dzielenie % modulo

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

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

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.

Rok akademicki: 2012/2013 Kod: JFM s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

Część 4 życie programu

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

Podstawy Programowania

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

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

Techniki Programowania wskaźniki

Podstawy i języki programowania

dr inż. Jarosław Forenc

Podstawy Programowania

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy WSKAŹNIKI KLASOWE

Wykład 2 Składnia języka C# (cz. 1)

Wstęp do programowania

Zmienne i struktury dynamiczne

KARTA PRZEDMIOTU. 1. NAZWA PRZEDMIOTU: Algorytmizacja i programowanie. 2. KIERUNEK: Matematyka. 3. POZIOM STUDIÓW: I stopnia

1 Podstawy c++ w pigułce.

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

PRZEWODNIK PO PRZEDMIOCIE

Język C zajęcia nr 11. Funkcje

Wprowadzenie do programowania i programowanie obiektowe

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

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

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

EGZAMIN MATURALNY Z INFORMATYKI

Semestr letni Brak Tak

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Tablice, funkcje, wskaźniki - wprowadzenie

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

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Elektrotechnika I stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny) Kierunkowy (podstawowy / kierunkowy / inny HES)

część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia

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

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

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

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

Ćwiczenie 1. Wprowadzenie do programu Octave

PODSTAWY PROGRAMOWANIA STRUKTURALNEGO (C) SYLABUS A. Informacje ogólne

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

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

Wstęp do informatyki- wykład 2

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

6 Przygotował: mgr inż. Maciej Lasota

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:

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

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

Wstęp do programowania. Wykład 1

Cw.12 JAVAScript w dokumentach HTML

KURS C/C++ WYKŁAD 6. Wskaźniki

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

Języki programowania II - opis przedmiotu

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

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

Struktury, unie, formatowanie, wskaźniki

Programowanie, algorytmy i struktury danych

Odczyt danych z klawiatury Operatory w Javie

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

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

Wskaźniki w C. Anna Gogolińska

Zmienne, stałe i operatory

Wstęp do Programowania Lista 1

Języki i paradygmaty programowania

Proste programy w C++ zadania

Transkrypt:

Referencje Informacje organizacyjne: Krzysztof Trojanowski Wykład: środy, 13:15 14:45 Programowanie w C/C++ Informacje organizacyjne Strona główna www z komunikatami: http://troja.uksw.edu.pl/category/pro2019/ E-mail: k.trojanowski@uksw.edu.pl maile zbiorowe i anonimowe są ignorowane (konieczne jest imię i nazwisko) 2 Zasady zaliczenia Programowania Obiektowego Zasady zaliczenia laboratoriów PO 1. Trzeba zaliczyć laboratoria PO. 2. Potem można próbować zaliczyć wykład PO (podejść do egzaminu). Nigdy w odwrotnej kolejności. 1. trzeba zaliczyć zajęcia laboratoryjne 2. trzeba zaliczyć zadanie semestralne (tematy zadań semestralnych rozdawane są na trzecich lub czwartych zajęciach) Również tylko w tej kolejności. 3 4 Zasady zaliczenia zajęć laboratoryjnych Na każdych zajęciach można uzyskać 0, 6, 7, 8, 9 lub 10 pkt. Zajęcia zaczynają się od wejściówki. Jej zaliczenie nie daje punktów, ale uprawnia do przystąpienia do rozwiązywania zadań. Na zajęciach zawsze ustalony jest minimalny zestaw zadań do realizacji. Wykonanie tego zestawu w całości gwarantuje 6 pkt. Niewykonanie tego zestawu - 0 pkt. Nie ma praktyki przyznawania 1 lub 2 pkt. za wykonanie np. połowy minimalnego zestawu zadań. Za program, który się nie kompiluje, nie ma żadnych punktów. Nigdy. Zasady zaliczenia zajęć laboratoryjnych Oprócz zadań zestawu minimalnego podawane są na zajęciach jeszcze inne zadania, za które można zdobyć pozostałe dwa punkty. Można mieć tylko trzy razy 0 pkt. za udział w zajęciach. Jeżeli przydarzy się to cztery razy, jedne zajęcia można odrobić na koniec semestru. Odrobienie polega na samodzielnym wykonaniu na ostatnich zajęciach dodatkowego zadania, którego zakres dotyczy całego materiału, niezależnie od tego, które zajęcia zostały zaliczone na zero i są odrabiane. Pięć razy 0 pkt. oznacza negatywną ocenę z zajęć laboratoryjnych. 5 6 1

Zasady zaliczenia zadania semestralnego Aby zaliczyć zadanie semestralne należy na przedostatnich zajęciach w semestrze oddać do oceny prowadzącemu: Kod źródłowy programu opatrzony odpowiednimi komentarzami Dokumentację, obejmującą: manual, diagram klas, oraz specyfikację danych wejściowych i wyjściowych Przykładowe dane wejściowe Oddanie powyższego zestawu w późniejszym terminie powoduje zmniejszenie maksymalnej liczby punktów do uzyskania za zadanie semestralne do 80%. Brak któregokolwiek z komponentów powyższego zestawu dyskwalifikuje zadanie semestralne. Zasady zaliczenia zadania semestralnego W programie muszą być zastosowane techniki i technologie obiektowe, których lista zostanie podana przez prowadzącego przy okazji rozdawania tematów zadań semestralnych. Brak wykorzystania w/w technologii będzie powodował obniżenie oceny za zadanie semestralne, nawet jeżeli udało się zrealizować kompletną funkcjonalność programu ustaloną w założeniach projektowych. Za zadanie semestralne można uzyskać 100 pkt. 7 8 - UWAGA Zasady zaliczenia ćwiczeń PO Ćwiczenia mogą być zaliczone w terminie do końca semestru (14 czerwca) albo nie zaliczone wcale. Warunkiem koniecznym zaliczenia ćwiczeń jest spełnienie łącznie następujących trzech wymagań: (1) zebranie co najmniej połowy ze wszystkich możliwych do uzyskania punktów (licząc razem za zajęcia i zadanie semestralne), (2) ewentualnie niezaliczenie nie więcej niż trzech zajęć w semestrze oraz (3) zaliczenie zadania semestralnego, tj. uzyskanie za niego co najmniej połowy z możliwych do uzyskania punktów. Wszystko to należy spełnić w terminie do końca semestru. W tym drugim przypadku jest jeszcze możliwość poprawy ćwiczeń we wrześniu ale tylko po uprzednim zaliczeniu zadania semestralnego. Prowadzący ma prawo wyznaczyć nowy temat zadania semestralnego na poprawę we wrześniu. 9 10 Zasady zaliczenia wykładów Zasady zaliczenia wykładów Wykład kończy się egzaminem pisemnym. Do egzaminu dopuszczone zostaną tylko te osoby, które wcześniej otrzymają zaliczenie z ćwiczeń. Należy je uzyskać przed rozpoczęciem sesji egzaminacyjnej (do 14 czerwca). Przewidywane są dwa terminy egzaminu: jeden w sesji czerwcowej i jeden w sesji wrześniowej. Zestaw egzaminacyjny będzie zawierał pytania z teorii programowania obiektowego oraz dobrych praktyk programistycznych. Na egzaminie nie będzie natomiast wymagane napisanie kodu programu. Może być jednak wymagane poprawne zinterpretowanie kodu podanego w materiale egzaminacyjnym (pytania w rodzaju: "dlaczego ten program nie zostanie skompilowany? - znajdź błąd", lub "co pojawi się w oknie konsoli po wykonaniu tego programu?"). 11 12 2

- UWAGA Definitywne niezaliczenie przedmiotu wskutek np. niezaliczenia samego egzaminu z wykładu oznacza, że w następnym roku akademickim cały przedmiot (wykład i laboratoria oraz zadanie semestralne) należy zaliczać od nowa. W szczególności żadne oceny cząstkowe ani całościowe z ćwiczeń zdobyte w bieżącym roku akademickim nie będą przepisywane. Referencje: Dowolny podręcznik do programowania obiektowego w C++: Język C++, Stroustrup Bjarne, WNT, 2002 Podstawy języka C++, S.B. Lippman, J. Lajoie, WNT, 2003 C++ dla każdego, Jesse Liberty, Helion, 2002 Język C++. Szkoła programowania. Stephen Prata, Helion 2012 Symfonia C++ Standard t.1/2, J. Grębosz, Edition 2000, 2008 Thinking in C++. Edycja polska, Bruce Eckel, Helion, 2002 Thinking in C++ Tom 2. Edycja polska, Bruce Eckel, Chuck Allison, Helion, 2004 Dodatkowo: Algorytmy, Maciej Sysło, WSiP, 2002 13 14 Bardzo ważna informacja Obecność na wykładach nie jest obowiązkowa, ale.. jeżeli już ktoś postanowił uczestniczyć: kontynuacja 15 Materiał, który jest traktowany jako znany: Operacje WE/WY (printf, scanf) Zmienne Instrukcje: if-else, switch, while, for Stałe znakowe, kody ASCII znaków Wybrane funkcje matematyczne Tablice jedno- i dwuwymiarowe Łańcuchy tekstowe Operatory Logiczne, bitowe, arytmetyczne, wskazania, odniesienia 17 3

Operacje arytmetyczne: a++ przyrostkowe zwiększenie a-- przyrostkowe zmniejszenie --a przedrostkowe zwiększenie ++a przedrostkowe zmniejszenie a*b mnożenie a/b dzielenie a%b reszta z dzielenia a+b suma a-b różnica Operacje bitowe: a>>b przesunecie bitowe w prawo: a/2 b a<<b przesunecie bitowe w lewo: a*2 b a b alternatywa bitowa ( OR ) a^b bitowa różnica symetryczna (XOR) a&b koniunkcja bitowa ( AND ) ~a negacja bitowa The byte ordering used to represent integers by most Intel CPUs is little-endian. 19 20 Operacje logiczne:!a negacja logiczna a<b mniejsze od a<=b mniejsze lub równe a>b większe od a>=b większe lub równe a==b równe a!=b różne a&&b koniunkcja logiczna a b alternatywa logiczna Złożone operatory przypisania: a += b; a = a + b; a -= b; a = a b; a *= b; a = a * b; a /= b; a = a / b; a %= b; a = a % b; a <<= b; a = a << b; a >>= b; a = a >> b; a &= b; a = a & b; a = b; a = a b; a ^= b; a = a ^ b; 21 22 Operator selekcji: Szczególne własności operatorów arytmetycznych: b? w1 : w2 1. obliczenie wartości b 2. jeżeli b==prawda to obliczenie w1 i ignorowanie w2 3. jeżeli b==fałsz to obliczenie w2 i ignorowanie w1 int a = 0, b=1, c; c = a > b? a : b; /*wybiera wartość większą*/ 23 kod: stan zmiennych: int a=1; a: 1 int b=a++; a: 2 b: 1 int a=1; a: 1 int b=++a; a: 2 b: 2 Argumentem musi być l-nazwa: (identyfikator zmiennej trwałej) (x + y)++; /* Źle! */ (x * 4)++; /* Źle! */ ((a>b)? a : b )++; /* Źle! */ 24 4

Szczególne własności operatorów logicznych: operatory logiczne działają również na wartościach całkowitych Kod programu: stan zmiennych: int a=1, b=2; a: 1 b: 2 int r = a && b; a: 1 b: 2 r: 1 a=0; a: 0 b: 2 r: 1 r = a && b; a: 0 b: 2 r: 0 Szczególne własności operatorów logicznych: kolejność obliczania argumentów w wyrażeniu od lewej Kod programu: stan zmiennych: int a=0, b=0; a: 0 b: 0 int r = ++a b++; a: 1 b: 0 (!) r: 1 int a=0, b=0; a: 0 b: 0 int r = a++ ++b; a: 1 b: 1 r: 1 int a=0, b=0; a: 0 b: 0 int r = a b++; a: 0 b: 1 r: 0 r = ++a && b; a: 1 b: 1 r: 1 int a=-2; a: 0 b: 0 int r = ++a && ++a && ++a && ++a && ++a; Pytanie: jaką wartość ma a? 25 26 - wskaźniki Szczególne własności operatorów arytmetycznych: W wyrażeniach arytmetycznych porządek wartościowania nie jest ustalony int a=1,b=2,c=3,d; d = (--c<a) + (--c<b); /* ryzykowny zapis */ obliczając od lewej: (2<1)+(1<2), razem: 1 obliczając od prawej:(1<1) + (2<2), razem: 0 27 Deklaracja zmiennej wskaźnikowej: Typ * nazwa; Nie ma znaczenia, gdzie jest spacja: int wsk; int wsk; int wsk; Za każdym razem jest to prawidłowo zadeklarowana zmienna, służąca do przechowywania adresu innej zmiennej, przechowującej wartość całkowitą typu int Zadeklarowana zmienna wskaźnikowa jest typu: int* Deklaracja kilku wskaźników tego samego typu: int *wsk1, *wsk2, *wsk3; 28 Przykłady: - wskaźniki int wsk ; /* wskaźnik na zmienną całkowitą */ double wsk_liczby ; /* wskaźnik na zmienną rzeczywistą */ int tab_wsk[ 10 ] ; /* tablica dziesięciu wskaźników na int */ int ( wsk_t)[ 10 ] ; /* wskaźnik na tablicę 10-ciu liczb int */ int ( wsk_t)[ 10 ] ; /* wskaźnik na tablicę 10-ciu wskaźników na int */ int wsk_w ; /* wskaźnik na zmienną zawierającą wskaźnik na zmienną typu int (tzn. wskaźnik na wskaźnik) */ 29 - wskaźniki Aby otrzymać adres zmiennej, który potem będzie można zapisać do zmiennej wskaźnikowej, należy np. użyć operatora pobrania adresu: & int x = 9; /* tworzymy zmienną typu int */ int *wskx = NULL; /* tworzymy zmienną wskaźnikową typu int* i od razu inicjalizujemy ją wartością NULL, która oznacza adres pusty */ wskx = &x; /* pobieramy adres zmiennej x i zapisujemy go do zmiennej wskx */ 30 5

- wskaźniki - wskaźniki Po co incjalizować zmienną wskaźnikową adresem pustym NULL? Z powodów praktycznych. Korzystanie ze zmiennych wskaźnikowych: W przypadku błędnie zaimplementowanego algorytmu może się zdarzyć, że program będzie próbował używać zmiennej wskaźnikowej, która nie ma przypisanej żadnej prawidłowej wartości. No to co?.. Wtedy procesor nie rozpozna, że jest to wartość przypadkowa i będzie ją interpretował jako prawidłowy adres. W przypadku próby pisania do obszaru pamięci wskazywanego przez taki przypadkowy adres może nastąpić przerwanie pracy programu. int m, k = 7; int *pk = NULL; pk = &k; *pk += 1; m = *pk; 31 32 - wskaźniki - wskaźniki Wskaźniki a tablice: Weźmy tablicę: int tab[20]; tab[3] --- czwarta komórka tablicy, stąd: x = tab[3]; --- instrukcja kopiowania czwartego elementu do zmiennej x tab ---? y = tab; ---? Wartością tab jest adres pierwszego elementu tablicy (!) Stąd: *tab reprezentuje pierwszy element tablicy [pobranie danych za pośrednictwem wskaźnika = wyłuskanie (ang. dereferencing)] Jakiego typu musi być zmienna y? Wskaźniki a tablice: Do wskaźników można dodawać (i odejmować) liczby całkowite. Dodawanie jest zdefiniowane w szczególny sposób. Niech: int *p = tab; Wtedy p przechowuje adres pierwszego elementu tablicy tab, natomiast wartością wyrażenia p+x będzie adres tab powiększony o x wielokrotności wymiaru zmiennej typu int (bo takiego typu wartości akurat przechowuje ta tablica). Czyli: p+x przechowuje adres elementu tablicy o indeksie x (!) 33 34 - wskaźniki - wskaźniki Arytmetyka wskaźników: int tab[10] = {1,2,3,4,5}; int i, *p, *q; q = tab; p = q + 2; /* p wskazuje na: 3 */ i = *(tab + 2); /* i ma wartość: 3 */ i = q[5]; /* i ma wartość: 0 */ p = &tab[0] + 3; /* p wskazuje na: 4 */ p -= 2; /* p wskazuje na: 2 */ Arytmetyka wskaźników: &tab[0] tab p[i] *( p + i ) i[p] *( p + i ) (!) p q różnica między dwoma wartościami adresowymi ma sens, jeżeli obydwa wskazują na elementy tej samej tablicy. Wynikiem jest odległość między komórkami tablicy mierzona w jednostkach równych szerokości pojedynczej komórki. 35 36 6

- wskaźniki Arytmetyka dla tablic dwuwymiarowych: int tab[3][5]; tab[0][0] tab[0][1] tab[0][2] tab[0][3] tab[0][4] tab[1][0] tab[1][1] tab[1][2] tab[1][3] tab[1][4] tab[2][0] tab[2][1] tab[2][2] tab[2][3] tab[2][4] Alokacja w pamięci: tab[0][0] tab[0][1] tab[0][2] tab[0][3] tab[0][4] tab[1][0] tab[1][1] tab[1][2] tab[1][3] tab[1][4] tab[2][0] tab[2][1] tab[2][2] tab[2][3] tab[2][4] - wskaźniki Arytmetyka dla tablic dwuwymiarowych: int tab[3][5]; tab[i][j] *( tab[i] + j ) tab[i] *( tab + i ) stąd: tab[i][j] *( *( tab + i ) + j ) 37 38 - wskaźniki int i, tab[20]; int* x = tab; for ( i = 0; i < 20; ++i ) tab[i] = 2; // indeksowanie while ( x!= tab + 20 ) *x++ = 1; // wyłuskanie 39 7