BLOG.CYBERCRATE.PL
Kreatywnie o technologii
Sztuczki w C++ #1
Przydatne tricki i ułatwienia - tablice
C++ jest jednym z bardziej popularnych języków programowania. Jest również dość popularnym wyborem na egzaminach i w szkołach. Młodzi adepci programowania bardzo często jednak nie znają jego wszystkich tajemnic. Czy warto? Po lekturze tego tekstu, myślę że sprawa będzie jasna 😉 A poza tym, kto z nas nie lubi ułatwiać sobie życia.
Tą serię artykułów, dedykuję w szczególności osobom, przygotowującym się do egzaminów zawodowych, lub matury, ponieważ te sztuczki pomogą Wam zdobyć kilka cennych sekund, które to mogą odjąć Wam stresu podczas tych egzaminów.
Zerowanie tablic
Mankamentem wielu młodych programistów jest to, że bardzo łatwo zapomnieć jest o wyzerowaniu tablicy przed obliczeniami. Błąd ten jest bardzo frustrujący ponieważ pomimo prawidłowego algorytmu, wyniki się nie zgadzają. Co gorsza w pewnych warunkach czasem mogą się zgadzać, a błąd przez chwilę pozostanie niewykryty prowadząc do słynnego “dziwne, u mnie działało”. Dlaczego tak się dzieje? Otóż c++ chce oszczędzać każdą porcję czasu, bo po co ma zerować kawałek pamięci, skoro być może my chcemy mieć tam inną wartość. Dlatego właśnie w większości przypadków w świeżo zadeklarowanych zmiennych znajdziemy śmieci, a konkretnie jakieś wartości które akurat były sobie w tym kawałku pamięci. Ale czy dzieje się tak zawsze? Otóż nie. Dokumentacja bardzo fajnie pokazuje te sytuacje w przykładach. Ale my skupimy się na tym jak zadbać o wyzerowanie własnoręcznie. Skupimy się teraz na najczęstszych przypadkach – mamy zmienną globalną i lokalną
int tab_1[100];
int main(){
// ...
int tab_2[100];
// ...
}
W przypadku powyżej, pierwsza tablica zostanie zainicjalizowana z zerami, natomiast druga zbierze cokolwiek pozostało w pamięci. Powiedzmy, że jednak chcielibyśmy mieć tą tablicę wypełnioną zerami. W takiej sytuacji można by zastosować zwyczajną pętlę, jak poniżej
int main(){
int tab_2[100];
for(int i = 0; i<100; i++)
tab_2[i]=0;
//...
}
Ta metoda jest jak najbardziej poprawna, ale istnieje pewne dużo szybsze rozwiązanie
int main(){
int tab_2[100] = {}
//...
}
Szybsze? Zdecydowanie! A teraz powiedzmy, że zamiast zer potrzebne są jedynki, albo jakaś dowolna inna wartość liczbowa. Żaden problem
int main(){
int tab_2[100] = {1}
//...
}
Jakieś wady? Niestety tak. Taką procedurę wykonamy jak na razie tylko przy deklaracji zmiennej – tylko jeden raz.
Tablica bez podawania rozmiaru
Skoro męczymy temat tablic, to wypada jeszcze wspomnieć o innej sztuczce – tworzę tablicę ale nie podaję jej rozmiaru. Brzmi ciekawie? Zobacz:
int main(){
int tab[] = {1,2,3,4,0}
}
Dzięki tej opcji możemy podać po prostu elementy tablicy, a kompilator samemu dobierze rozmiar. Po co to – ktoś zapyta. A no po to, że załóżmy że potrzebujemy aby w tablicy znajdowały się jakieś współczynniki. Po jakimś czasie okazuje się, że musimy dodać współczynnik – mając dwa miejsca do zmiany, jest niezerowa, a wręcz duża szansa, że o którymś z nich zapomnimy.
- Programowanie
- 2023-07-14
- Tagi: c++, ciekawostki, do egzaminu, do matury, programowanie, sztuczki
Autor: Jakub Skrzyński
Korekta językowa: Wojciech Łyk