c++
Lukas:
Programowanie−Dziadek Mróz
jestes może ?
26 gru 20:42
Dziadek Mróz:
A no jestem, co trzeba?
26 gru 21:57
Lukas:
Chcę coś tych programów ruszyć.
26 gru 21:58
Dziadek Mróz:
To ruszaj i pokazuj rezultaty, sprawdzimy ich poprawność.
26 gru 21:59
Lukas:
Napisz program drukujący na ekranie 19 gwiazdek
*******************
#include <iostream>
using namespace std:
string *
if (i=19 i>=0 i++)
cout << i <<;
26 gru 22:11
Dziadek Mróz:
Po kolei wytłumacz co robią poszczególne linijki kodu.
np:
#include <iostream> // co to jest i co robi
26 gru 22:16
Lukas:
include to bibliotek która pozwala korzystać z korzystać z karty sieciowej, dźwiękowej czy też
graficznej.
string−napis
if pęta która ma wyświetlić na ekranie ciąc gwiazdek o ilości 19
cout −wyświetla to co robię pętla
26 gru 22:20
jakubs: include to nie jest biblioteka.
Derektywa #include dołącza plik o podanej nazwie do pliku źródłowego.
iostream to biblioteka .
Poczytaj więcej o preprocesorze
26 gru 22:29
Dziadek Mróz:
include to bibliotek która pozwala korzystać z korzystać z karty sieciowej, dźwiękowej czy też
graficznej.
string−napis
if pęta która ma wyświetlić na ekranie ciąc gwiazdek o ilości 19
cout −wyświetla to co robię pętla
Teraz moja wersja z kolorkami (zielone dobrze, czerwone źle i poprawka):
#include <iostream>
using namespace std : ;
string * napis; // ale to jest zbędne więc wycinamy
odtąd do końca jest źle bo brakuje funkcji głównej main()
if (i=19 i>=0 i++) for(int i = 0; i < 19; i++) lub for(int i = 19; i > 0; i−−)
cout << i "*" <<;
Końcowy program wygląda następująco:
#include <iostream>
using namespace std;
int main()
{
for(int i = 0; i < 19; i++)
{
cout << "*" << endl;
}
return 0;
}
Zaraz napiszę co musisz wiedzieć.
26 gru 22:31
Dziadek Mróz:
Podstawą programu jest głowa i ciało.
Głową są dyrektywy np: #include i ich wartości np:
dla dyrektywy #include wartością są biblioteki <wbudowane>, "zdefiniowane"
#include <iostream>
#include <string.h>
#include <stdlib.h>
Ciałem są inne operacje, np. funkcje, klasy, procedury. Należy pamiętać o głównej funkcji (main
(ang.) − główny). Funkcje to takie fragmenty kodu, które mają swój zdefiniowany typ, który
zwracają. Funkcja main ma często typ całkowity (int) zwracający dwa wyniki (0 gdy program się
wykonał prawidłowo i 1 gdy program zakończył się nieprawidłowo). Funkcje zwracają wyniki za
pomocą return.
int main()
{
...
return 0; // pamiętaj o średnikach, one kończą instrukcje w programie!
}
Pętle to takie fragmenty, które wykonują instrukcje tak długo aż nie osiągną warunku pętli. W
tym przypadku była potrzebna pętla for.
for(odkąd; dokąd; krok)
odkąd to zdefiniowany iterator (tutaj int i)
dokąd to warunek jaki kończy pętlę
krok to co ile mamy wykonać jedną pętlę
26 gru 22:41
Lukas:
Dziadek a ten program jest ok?
26 gru 22:42
Dziadek Mróz:
cout to strumień wyjściowy na ekran z biblioteki <iostream>, wypluwa wszystko co mu nadamy.
cin to strumień wejściowy z klawiatury, podajemy nim wartości do programu.
Dla cout używamy operatora << a dla cin >>. Łatwo zapamiętać skojarzeniem w którą stronę
wysyłamy dane.
cout << dane;
cin >> dane;
26 gru 22:44
Dziadek Mróz:
Lukas, zadam podstawowe pytanie, masz kompilator i kolorowy edytor tekstu?
26 gru 22:45
26 gru 22:45
Lukas: mam
26 gru 22:47
26 gru 22:47
Dziadek Mróz:
Lukas jak napisałeś ten program to skompilowałeś go?
26 gru 22:48
Lukas:
nie
26 gru 22:49
Dziadek Mróz:
To go skompiluj zanim pokażesz kod tutaj, ok? I tak długo poprawiaj aż nie zadziała lub nie
wiesz co nie działa
26 gru 22:52
Lukas: ok zaraz pokażę kod
26 gru 22:54
26 gru 22:55
Dziadek Mróz:
To teraz wytłumacz co jest czym w 6 linijce ze string
26 gru 22:56
Lukas:
string to jest napis. Nie wiem jak zadeklarować inaczej gwiazdkę ?
26 gru 23:00
Dziadek Mróz:
Gwiazdką deklaruje się wskaźniki i gwiazdka jako tako w C++ jest w tym celu zarezerwowana dla
zmiennych. Gdybyś chciał zadeklarować gwiazdkę to możesz zrobić tak:
char gwiazdka = '*';
lub
#include <string> // to trzeba dopisać w głowie programu
string gwiazdka = "*";
26 gru 23:05
Dziadek Mróz:
Skompiluj i popraw to co kompilator wypluł, nie szukaj bez kompilacji błędów.
26 gru 23:06
26 gru 23:08
26 gru 23:14
Dziadek Mróz:
I wtedy pisz resztę programu między nawiasami wąsiastymi w int main()
26 gru 23:14
Lukas:
poprawiłem na char gwiazdka='*' nie działa
26 gru 23:17
Dziadek Mróz:
Ok, nie działa bo reszty nie poprawiłeś.
26 gru 23:18
Lukas:
ale jeśli nie używam stringa to co muszę dopisać ?
26 gru 23:20
26 gru 23:33
Dziadek Mróz:
Bo my do porozumienia nie dotrzemy, skoro Ty nie wiesz co ja piszę i nie wiesz nawet jak się
deklaruje zmienne, używa biblioteki czy nie rozróżniasz warunków od pętli.
26 gru 23:35
jakubs: Dziadku masz chwilkę? Mam pewien problem.. z C i wskaźnikami .
26 gru 23:39
Lukas:
13 stycznia kolokwium, Dzięki czytam
26 gru 23:42
jakubs: Albo w sumie poradziłem już sobie
26 gru 23:44
Dziadek Mróz:
jakubs podziel się, jestem ciekawy co tam zrobiłeś
26 gru 23:47
jakubs: http://pastebin.com/EU14AMwq
Mam tam sobie tablicę tab i chciałem aby osobna funkcja zaalokowała mi pamięć dla niej i osobna
pamięć zdealokowała, czyli ogólnie zabawa na moich ukochanych wskaźnikach, bo trzeba było do
funkcji przekazać wskaźnik. Dla Ciebie to jest pewnie oczywiste, jednak dla mnie wskaźniki to
jeszcze ciężki orzech do zgryzienia.
26 gru 23:56
Dziadek Mróz:
Nic nowego nie wprowadziłeś, jedynie przedłużyłeś program o dwie funkcje
27 gru 00:02
asdf: jakubs, wskaźnik to wskaźnik...ile razy WSKAZYWALES na kogos (adres w pamięci) palcem (czyli
wskaźnikiem)? No właśnie − WSKAZYWALES , a
nie byłeś tym kimś. Tak właśnie działa
wskaźnik

int pesel = 10;
int * palec = &pesel; //masz juz gotowy wskaznik na kogos
printf("ten koles ma taki numer pesel: %d", *palec);
printf("adres wskaznika to: %d\n", &palec);
printf("adres numeru pesel to %d, ale nie jestem pewien, sprawdz czy to te same adresy: %d\n",
palec, pesel);
pamiętaj tylko, że nie można zrobić coś takiego:
int * wsk = 10; // sama liczba 10 nie ma (powiedzmy) adresu
ale juz cos tkaiego:
int dziesiec
abedzie
dwanascie = 10;
int piec
abedzie
cztery = 5;
int * wsk = &dziesiec
abedzie
dwanascie;
*wsk = 12;
printf("%d\n", dziesiec
abedzie
dwanascie);
wsk = &piec
abedzie
cztery;
*wsk = 4;
itd...
tak to chyba działało

dawno nie pisalem w C (i chyba nie wroce do tego, ale od tego jezyka
zaczynalem i uwazam, ze jest najodpowiedniejszy...zadne tam C#, js...mimo tego, że teraz w tym
siedzę − zdecydowanie "przyjemności na później"

)
27 gru 02:50
asdf: printf("adres numeru pesel to %d, ale nie jestem pewien, sprawdz czy to te same adresy: %d\n",
palec,
&pesel);
tak powinno być
27 gru 02:51
Dziadek Mróz:
Bardzo ładny przykład ze wskaźnikiem
27 gru 12:10