Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 6 sie 2026, o 11:35


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 25 ] 
Autor Wiadomość
PostNapisane: 29 lut 2016, o 08:30 
Offline
Użytkownik

Dołączył(a): 01 lis 2015
Posty: 129
Pomógł: 0

Pozdrawiam forumowiczów.
Dlaczego w d_led.h deklarujemy zmienne cy1, cy2 ze słówkiem extern?
W d_led.c mamy już definicję tych zmiennych a definicja to też deklaracja.
I dlaczego w przerwaniu używamy static? Nie możemy użyć zmiennej globalnej.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lut 2016, o 09:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
elektronikq napisał(a):
Dlaczego w d_led.h deklarujemy zmienne cy1, cy2 ze słówkiem extern?

- aby można było z tych zmiennych korzystać w tych plikach które będą miały #include<d_led.h>
elektronikq napisał(a):
dlaczego w przerwaniu używamy static? Nie możemy użyć zmiennej globalnej

ponieważ po wejściu w przerwanie zmienna zaczynała by się od zera, a tak jej wartość/stan jest zapamiętany i w każdym wywołaniu przerwania jest "na bieżąco".

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lut 2016, o 11:14 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27464
Lokalizacja: Szczecin
Pomógł: 1045

elektronikq napisał(a):
Dlaczego w d_led.h deklarujemy zmienne cy1, cy2 ze słówkiem extern?


Bo to są DEKLARACJE zmiennych

zaś w pliku d_led.c masz bez extern i to są DEFINICJE tych zmiennych

nie zwróciłeś uwagi w Bluebooku na to jak naciskam mocno na to aby czytelnik zrozumiał czym różni się DEKLARACJA od DEFINICJI ? .... brak zrozumienia tego zagadnienia będzie powodował, że wciąż będzie się miało problemy ze zrozumieniem różnych części kodu w C

elektronikq napisał(a):
a definicja to też deklaracja.

Jak widzisz - już błądzisz i to poważnie, bo wciąż w książce piszę co to jest DEKLARACJA a co to jest DEFINICJA i czym się różni - i NIGDY nie jest to to samo.

------------------------ [ Dodano po: 1 minucie ]

kicajek napisał(a):
elektronikq napisał(a):
dlaczego w przerwaniu używamy static? Nie możemy użyć zmiennej globalnej

ponieważ po wejściu w przerwanie zmienna zaczynała by się od zera, a tak jej wartość/stan jest zapamiętany i w każdym wywołaniu przerwania jest "na bieżąco".


Mogłaby być globalna ... mogłaby by być - ale po co pchać niepotrzebnie zmienne globalne. Należy dążyć zawsze aby było ich jak najmniej. Dzięki static znakomicie możemy sobie z tym radzić i specyficzne zmienne na potrzeby konkretnych funkcji osadzić je właśnie w tych funkcjach. A zachowują się tak jak globalne jeśli chodzi o pozostałe sprawy


Autor postu otrzymał pochwałę

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lut 2016, o 22:54 
Offline
Użytkownik

Dołączył(a): 01 lis 2015
Posty: 129
Pomógł: 0

Co do static rozumiem. Przydomek static spowoduje że tej zmiennej możemy tylko używać wyłącznie w tym przerwaniu?

Z tego co pamiętam DEKLARACJA tylko określa jakieś pewne parametry ale nie zajmuje pamięci natomiast DEFINICJA deklaruje jakiś obiekt i zajmuje pamięć. Tak zrozumiałem, że DEFINICJA ma jakby w sobie DEKLARACJĘ. Błędne myślenie?

Nie rozumiem dlaczego w d_led.c jest definicja zmiennych i tam jeszcze zamieszczony jest d_led.h z tymi deklaracjami.
Pan Mirek coś pisał o tym, że czasami lepiej deklarować nawet jak jest definicja bo funkcja się odwołuje do jakiejś wcześniejszej i fajnie bybyło jakby znała na początku przynajmniej deklarację. Ale dlaczego to nie wiem.

Jeśli chodzi o program z wyświetlaczem to fajnie Pan Mirek opisał.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 mar 2016, o 09:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 1190
Lokalizacja: Kraków
Pomógł: 95

elektronikq napisał(a):
Co do static rozumiem. Przydomek static spowoduje że tej zmiennej możemy tylko używać wyłącznie w tym przerwaniu?
Nie. Static oznacza, że po wyjściu z funkcji, w której zmienna jest użyta, jej wartość jest zapamiętana.
Bez static zmienne lokalne są tworzone przy wywołaniu funkcji i, jeśli nie jest przypisana im wartość, przyjmują wartość 0.
EDIT: Wartość 0 przyjmują zmienne globalne. Zmienne lokalne przyjmują losową wartość Po wyjściu z funkcji zmienna "znika" i przy następnym wywołaniu funkcji znowu przyjmuje wartość 0 losową.
Jeżeli użyjesz static, po wyjściu z funkcji zmienna "znika" (nie można jej użyć w innym miejscu programu), ale po następnym wywołaniu funkcji, zmienna przyjmuje wartość, jaką miała na zakończeniu poprzedniego wywołania funkcji



Ostatnio edytowano 1 mar 2016, o 14:27 przez Marhef, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 mar 2016, o 13:43 
Offline
Użytkownik

Dołączył(a): 01 lis 2015
Posty: 129
Pomógł: 0

Cytuj:
(nie można jej użyć w innym miejscu programu)


To chyba to co napisałem w 1 zdaniu. Skoro użyliśmy w przerwaniu to tylko tam możemy jej używać.
Jakbyśmy użyli tam lokalnej to przy każdym przerwaniu start przerwania zaczynał by z nowo zinicializowaną zmienną. Np.:
x=1
x=x*2
to za każdym przerwaniem x będzie równy 1.

Cytuj:
Bez static zmienne lokalne są tworzone przy wywołaniu funkcji i, jeśli nie jest przypisana im wartość, przyjmują wartość 0

Chyba nieprawdę kolega napisał. Może przyjąć różne wartości, inne niż 0.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 mar 2016, o 14:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 1190
Lokalizacja: Kraków
Pomógł: 95

elektronikq napisał(a):
To chyba to co napisałem w 1 zdaniu. Skoro użyliśmy w przerwaniu to tylko tam możemy jej używać.
Jakbyśmy użyli tam lokalnej to przy każdym przerwaniu start przerwania zaczynał by z nowo zinicializowaną zmienną.
Ale to nie dlatego, że zmienna została zapisana ze static, tylko dlatego, że została utworzona lokalnie. Zmienna static nadal jest lokalna.
Cytuj:
Chyba nieprawdę kolega napisał. Może przyjąć różne wartości, inne niż 0.
Napisałem, że JEŚLI NIE JEST PRZYPISANA IM WARTOŚĆ. Nie napisałem, że nie możesz przypisać innej wartości. Jeśli zapiszesz:
Kod:
int x;
to x będzie równe 0. Jeśli napiszesz:
Kod:
int x = 100;
to x będzie równe 100
EDIT: Jak zauważył kolega @zoom, wartość 0 przyjmują zmienne globalne. Zmienne lokalne przyjmują wartość losową. Przepraszam za wprowadzenie w błąd.



Ostatnio edytowano 1 mar 2016, o 14:29 przez Marhef, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 mar 2016, o 14:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lis 2012
Posty: 298
Pomógł: 13

Marhef napisał(a):
Jeśli zapiszesz:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

to x będzie równe 0.


Ale to jest prawdą jedynie dla zmiennych globalnych.
Zmienne lokalne po takiej operacji mogą posiadać wartości losowe, zmienna dostała miejsce w pamięci i ma wartość taką, jak dane, które wcześniej tam były. A kto wie, co tam było?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 mar 2016, o 14:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 1190
Lokalizacja: Kraków
Pomógł: 95

@zoom, masz rację. Pomyliłem zmienne :oops: . Już poprawiam w poprzednich wpisach



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 mar 2016, o 23:30 
Offline
Użytkownik

Dołączył(a): 01 lis 2015
Posty: 129
Pomógł: 0

d_led.c:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


d_led.h:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


main.c:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Taki kod. Atmega32. Jak mam 3 pliki to który wgrywam do procesora? 3 pliki jeden po drugim?
Po wgraniu tego kodu mam "głupoty na wyświetlaczu". Nie ma 1 4 9 0.

Nie bardzo rozumiem:
Tej nazwy: _d_led_h dlaczego tak? Rozumiem, że tylko tak sobie to nazwałem. Na początku sprawdza kompilator czy takie taka nazwa została zdefiniowana (#ifndef xyz )jak nie to definiuje (#define xyz) a jak już jakiś plik.c dodał już plik.h z tym napisem to zostanie pominięte wszystko to co jest #define xyz?

I tego zapisu:
if (licznik == 1) LED_DATA=cy1;
czyli:
if (licznik == 1) PORTC=1;
więc wpisuje 1 na PORTC ok, więc:

else if (licznik == 4) LED_DATA=cy3;
tutaj:
PORTC=9 czyli wpisuje 9 na PORTC?

Nie wiem czy kod jest kompletny ale wyświetla się coś na wyświetlaczu. Kropki między segmentami też się palą.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2016, o 08:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 1190
Lokalizacja: Kraków
Pomógł: 95

elektronikq napisał(a):
Taki kod. Atmega32. Jak mam 3 pliki to który wgrywam do procesora? 3 pliki jeden po drugim?
Do procesora nie wgrywasz plików. Podczas budowania projektu wszystkie pliki z projektu są kompilowane i łączone (linkowane?) ze sobą, tworząc plik .hex. Jest to plik w kodzie maszynowym wgrywany na procesor.
elektronikq napisał(a):
Nie bardzo rozumiem:
Tej nazwy: _d_led_h dlaczego tak? Rozumiem, że tylko tak sobie to nazwałem. Na początku sprawdza kompilator czy takie taka nazwa została zdefiniowana (#ifndef xyz )jak nie to definiuje (#define xyz) a jak już jakiś plik.c dodał już plik.h z tym napisem to zostanie pominięte wszystko to co jest #define xyz?
Nie rozumiesz, dlaczego plik się tak nazywa? Czy dlaczego jest taka zawartość?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2016, o 20:12 
Offline
Użytkownik

Dołączył(a): 01 lis 2015
Posty: 129
Pomógł: 0

Nazwa to po prostu jaką sobie weźmiemy. Także jasne. Zawartość d_led.h też zrozumiała, mam problem z:
if (licznik == 1) LED_DATA=cy1;
czyli:
if (licznik == 1) PORTC=1;
więc wpisuje 1 na PORTC ok, więc:

else if (licznik == 4) LED_DATA=cy3;
tutaj:
else if (licznik == 4) PORTC=9; czyli wpisuje 9 na PORTC? Tylko, że wgranie 9 na PORTC nie spowoduje zaświecenia odpowiednich segmentów. I dlaczego mam głupoty na wyświetlaczu. Siedzę już nad tym dzisiaj 2h i nie wychodzi.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2016, o 20:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
A te biblioteki d_led.h i d_led.c to pokazałeś jakie wgrywasz czy pokazałeś fragmenty a masz kompletne?

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2016, o 20:22 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27464
Lokalizacja: Szczecin
Pomógł: 1045

elektronikq napisał(a):
Zawartość d_led.h też zrozumiała, mam problem z:

No dobrze a co na to mówi książka ? tzn Bluebook ? ... nie ma tam nic na ten temat ? ... Czy może coś jest ? .. jeśli jest to powiedz czego nie rozumiesz z opisu z książki?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2016, o 20:38 
Offline
Użytkownik

Dołączył(a): 01 lis 2015
Posty: 129
Pomógł: 0

Dobry wieczór. Dziękuje kolegom za odzew.
Te kody które pokazałem to wgrałem one są z BK. Myślałem, że to będzie działać.

Otóż nie potrafie przetrybić tego:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Ja rozumiem to tak:
Utwórz zmienną statyczną lokalną i wpisz 1 czyli 0b00000001
Do PORTA wpisz zanegowaną wartość licznika czyli 0b11111110
jeśli licznik =1 to w PORTC wpisz 1 czyli 0b00000001
potem jeśli licznik=2 to w PORTC wpisz 4 czyli 0b00000010
itd.? Wpisanie 4 w PORTC nie uruchomi odpowiednich segmentów w wyświetlaczu LED.
Dla mnie powinny być w PORTC zapisywana taka liczba aby uruchomić odpowiednie segmenty do odpowiedniej liczby.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2016, o 21:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

elektronikq napisał(a):
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Ja rozumiem to tak:
Utwórz zmienną statyczną lokalną i wpisz 1 czyli 0b00000001
Do PORTA wpisz zanegowaną wartość licznika czyli 0b11111110
jeśli licznik =1 to w PORTC wpisz 1 czyli 0b00000001
potem jeśli licznik=2 to w PORTC wpisz 4 czyli 0b00000010
itd.? Wpisanie 4 w PORTC nie uruchomi odpowiednich segmentów w wyświetlaczu LED.

Troszkę komplikujesz ale...
Nie wiem czy wspominałeś, ale na jakim wyświetlaczu pracujesz - wspólna anoda czy katoda?
Jeśli anoda to: ( pomijam static bo to tylko raz )
jeśli licznik =1 do PORTA wpisz zanegowaną wartość licznika czyli 0b11111110, a do PORTC wpisz zawartość komórki [1] z tablicy cyfry[]
jeśli licznik =2 PORTA = Ob11111101 a do PORTC zawartość kom[4] z tablicy
jeśli licznik =4 PORTA = Ob11111011 a do PORTC kom[9] z tablicy
jeśli licznik =8 PORTA = Ob11110111 a do PORTC kom[5] z tablicy
Pytałem o wyświetlacz, bo dla ANODY krąży zero a dla KATODY - jedynka i trzeba zmienić zapis w tablicy cyfry.
To 1-4-9-5 to te wyświetlane cyfry.
Dobrze by było abyś zdefiniował pojęcie "wyświetla głupoty" - bo to może być od pomieszania segmentów do pomieszania wyświetlaczy.

Pozdr.

edit.: dopiero teraz zauważyłem - jeśli to kod z BB to skąd takie dziwne wywoływanie poszcz. cyfr?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2016, o 21:42 
Offline
Użytkownik

Dołączył(a): 01 lis 2015
Posty: 129
Pomógł: 0

Anoda. Tak, że stan 0 pobudza PNP i zasila anodę.
Anody podpięte do PORTA.

Nie używałem, żadnych tablic. Kod z BB. Żadna z wyświetlonych cyfr nie przypomina tego co ma się na wyświetlaczu znajdować, np. niepełna 8, 9 w odbiciu lustrzanym etc. i wszystkie kropki.

Cytuj:
jeśli licznik =1 do PORTA wpisz zanegowaną wartość licznika czyli 0b11111110, a do PORTC wpisz zawartość komórki [1] z tablicy cyfry[]
jeśli licznik =2 PORTA = Ob11111101 a do PORTC zawartość kom[4] z tablicy
jeśli licznik =4 PORTA = Ob11111011 a do PORTC kom[9] z tablicy
jeśli licznik =8 PORTA = Ob11110111 a do PORTC kom[5] z tablicy

Ok to rozumiem. Licznik ma 1 czyli 0b00000001 potem neguje bo ANODY 0b11111110 i wrzuca to na PORTA. Potem sprawdza jeśli jeden to wykonuje LED_DATA=cy1 i leci dalej. Dochodzi do przesunięcia bitu w lewo i już mamy 0b0000010 potem wychodzi na to, że wartość 0b0000010 jest znowu negowana i mamy 0b11111101 i wrzucana na PORTA? Po przerwanie idzie od początku więc znowu wykonuje się operacja:
ANODY_PORT = ~licznik;
Ale z tym portc nie czaje np.

Dla mnie tam jest tak, że jeśli licznik == 2 to wrzuć na PORTC liczbę 4. A ta liczba nie zapali potrzebnych segmentów aby się wyświetliła 4 na wyświetlaczu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2016, o 21:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

elektronikq napisał(a):
A ta liczba nie zapali potrzebnych segmentów aby się wyświetliła 4 na wyświetlaczu.

...bo to się odwołuje do tablicy, w której podane są konkretne segmenty dla danej cyfry.
A wracając do kodu - z BB czy z płyty?
Teraz doczytałem w BB - za szybko skończyłeś czytać ten rozdział bo dalej masz podane te tablice ;)

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 mar 2016, o 01:11 
Offline
Użytkownik

Dołączył(a): 01 lis 2015
Posty: 129
Pomógł: 0

Tak przypuszczałem. Przeczytałem cały rozdział ale myślałem, że jest wersja z tablicami i wersja bez tablic. Ok postaram się to naprawić.
Nie używam kodów zamieszczonych na płycie DVD. Używam książki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 mar 2016, o 11:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
elektronikq napisał(a):
Nie używam kodów zamieszczonych na płycie DVD. Używam książki.

Jeśli tak, to nie zawsze uda Ci się "odpalić" dane ćwiczenie. W książce podany jest sposób w jaki podchodzi się do danego zagadnienia, ale zdarzają się niezamierzone drobne pomyłki czy raczej nie wszystko jest opisane; natomiast na płycie są już sprawdzone kody. Oczywiście na podstawie książki można samemu napisać daną obsługę, ale najpierw trzeba dobrze poznać to zagadnienie. Masz przykład z "Twoim" rozdziałem - kod cały czas się rozbudowuje, a Ty od połowy rozdziału chcesz go już ładować do uC - tak się nie da.

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 mar 2016, o 18:39 
Offline
Użytkownik

Dołączył(a): 01 lis 2015
Posty: 129
Pomógł: 0

Wiem ale pisząc kod własnoręcznie wychodzą właśnie takie babole i coraz więcej rozumiem i chce się iść dalej;)
Uzupełniłem kod:
d_led.h:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


d_led.c:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jeszcze tylko muszę zrobić z PROGMEM. Widziałem na płytce, że autor zastosował do opisu tablicy specyfikator const, czyli tabela będzie do odczytu. To zaoszczędzi pamięć?

Rozumiem, że jeśli nie używam innych znaków to mogę w tablicy wpisać: cyfry[10]? Jak zadeklaruje je jako cyfry[15] to nie zużyje mi 5 bajtów więcej?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 mar 2016, o 23:20 
Offline
Użytkownik

Dołączył(a): 01 lis 2015
Posty: 129
Pomógł: 0

Pytam o to bo w BB jest napisane, że ile zadeklarujemy w nawiasach kwadratowych tyle musi być elementów naszej tablicy.
U nas jest zadeklarowane 15 elementów a jest 10. W końcu jak to jest?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 mar 2016, o 08:56 
Offline
Użytkownik

Dołączył(a): 02 maja 2015
Posty: 100
Lokalizacja: Malbork
Pomógł: 12

Im większą tablice zadeklarujesz tym więcej pamięci będzie rezerwowane.
Możesz zadeklarować większą tablicę i nie używać jej wszystkich wartości ale to strata pamięci. Czasem asekuracyjnie można sobie stworzyć z zapasem ale warto to zoptymalizować. Tablic nie musisz zawsze do "pełna" napełniać.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 mar 2016, o 22:27 
Offline
Użytkownik

Dołączył(a): 01 lis 2015
Posty: 129
Pomógł: 0

BB strona 148 cytuję:

..."Uwaga!. Musi ich być dokładnie tyle, ile zadeklarowałeś elementów tablicy w nawiasach kwadratowych".

Ja źle rozumiem czy zapis jest nieścisły?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 mar 2016, o 23:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
elektronikq napisał(a):
Ja źle rozumiem...

Nie, tylko za szybko kończysz czytać ;) , bo dalej mamy:
BB napisał(a):
Co jednak oznacza drugi przypadek (opis tablicy z pustymi klamrami - dop.mój). Jest to duża wygoda....

Wystarczy bo stworzę plagiat.
Chodzi o to, że jak już napiszesz tam liczbę, to musi się ona zgadzać z zawartością tablicy- jeśli nie napiszesz to masz dowolność - zresztą doczytaj jak już tam jesteś.

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 25 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO