Názory ke článku C++ - 10. lekce – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Názory ke článku C++ - 10. lekce – Programujte.comNázory ke článku C++ - 10. lekce – Programujte.com

 

Názory ke článku C++ - 10. lekce

Pickwiczk   NOVÝ
24. 7. 2005

Doufam ze budou dalsi dily.

CuroBOT   NOVÝ
24. 7. 2005

budou, neboj :)
uz je skoro dokoncena, ted to pujde na cas rychleji (psani lekci)

Ef   NOVÝ
13. 3. 2006

Konečně mi někdo polopaticky vysvětlil ukazatele, díky moc!

janvan   NOVÝ
23. 4. 2006

Nevím jestli jsem to správně pochopil, ale když vytvořím program a v něm bude alokována nějaká proměnná a program se ukončí aniž by se ta proměnná vymazala, mohu potom pustit (vytvořit) další program, který ji využije ??? A jestli ano, tak kdy se ta hodnota vymaže, když to vymazání nezadám já ???

Curo, autor článku   NOVÝ
23. 4. 2006

Po vyprázdnění paměti, resp resetu. (konec napájení). ANO je to nebezpečné a proto je potřeba DELETE aplikovat.

Ano, teoreticky můžeš používat proměnnou i nadále, pokud znáš její adresu.

janvan   NOVÝ
25. 4. 2006

Dále jsem se chtěl zeptat, šel by nějaký příkaz, aby šli dva či více příkazů dát dohromady. Např. když bych chtěl vytvořit program, ve kterém by se objevilo zadejte heslo do 10 sekund.

Ještě bych se chtěl zeptat, zda-li by se dal text či ta černota v programu obarvit (myslím samozřejmě nějakým příkazem).

AtheIste   NOVÝ
12. 5. 2006

Doporučoval bych se o "obarvování" zatím nezajímat. Aplikace, které jsou zde jako přiklady běží v příkazové řádce. Pro grafické aplikace (v klasickém Windows okně) musíte použít (a nejdříve řádně nastudovat) knihovnu windows.h resp. WinAPI.
http://www.builder.cz/serial91.html

K běhu dvou funkcí zároveň. To je již celkem složité a používají se tzv. Vlákna (Threads). Většinou problém ale jde vyřešit i bez vláken.

Tento seriála vlastně všechny publikace o jazycích slouží pouze k pochopení syntaxe jazyka. NEVYSVĚTLUJÍ se tam jakékoli knihovny pro složitější programy (TCP/IP, GTK+, WinAPI ....)

Petr_Cz   NOVÝ
7. 8. 2006

Dosud vsechno v C++ vicemene chapu ale nejde me do hlavy jedna vec. Kdyz je teda pojmenovana pamet alokovana v dobe kompilace, jak muze program bezet na jinem pocitaci, kdyz ta pamet je uz znama pri sestavovani programu? Me to proste zni jako kdyby se to misto alokovalo v pameti pocitace na kterem je to kompilovano....na jinem pocitaci se program nekompiluje..tak jak to je? Smysl by davalo, kdyby se ta pamet alokovala v dobe SPUSTENI programu

NAItReIN   NOVÝ
9. 11. 2006

Trocha sa mylite. Vas problem je v tom, ze neviete, ako pracuje RAMka a Processor.

Najskor si povieme nieco o RAMke (Random Acces Memory) - jedna sa o komponentu, do ktorej sa nacitavaju udaje. Ked kompilator kompiluje zdrojovy kod, nastavuje hodnoty pamate, kam sa bude hodnota ukladat. Pri spustani nejakeho programu sa teda do RAMky nahraju tie pamatove adresy, ktore nastavil kompilator. Odtialto ich potom spracuva processor, a teda mikroprocessor.

Pokial Vam toto tvrdenie nie je moc jasne, pokojne sa opytajte, comu este nerozumiete, a ja sa Vam to pokusim vysvetlit.

Petr   NOVÝ
14. 12. 2006

Dobrý den, jak lze v C++ zabezpečit, aby když vytvoříme proměnnou typu např. float a zadáme "a" nebo jakýkoliv jiný znak, aby nás program požádal o opětovné zadání hodnoty?
např:
.....
do {printf("Zadejte číslo: "); scanf("%f",&a);}
while (????????????); //dokud a neni platna hodnota typu float
.....

Díky..

isimluk   NOVÝ
27. 12. 2006

Zalezi na OS...
ZE!... :)))

Petr_Cz   NOVÝ
30. 1. 2007

Jasne ale kdyz teda adresy urci kompilator a pri spusteni se nactou do pameti, co kdyz je tato pamet uz pouzita jinou aplikaci?

Jirka   NOVÝ
2. 3. 2007

Nemůžu se nikde dočíst, jestli je možné vytvořit ukazatel na vícerozměrné pole. Četl jsem o poli ukazatelů na proměnné v paměti i o okazateli na pole, ale všude se pracovalo jenom s jednozměrnými poli. Lze ukazatele aplikovat i na vícerozměrná pole (a jak se to dělá? :-) ) případně to budu muset vymyslet jinak. :-)
Díky za odpověď

NAItReIN   NOVÝ
2. 5. 2007

Pri spustení programu nastaví OS požadovanú pamat podla kompilátoru, teda sa nemoze stat ten prípad, ktorým tu argumentujes..

DRoman   NOVÝ
24. 5. 2007

Taky mě to potkalo, za pomoci chybového hlášení jsem se dostal k: (char *(*)[X]) kde X je poslední rozměr dvourozměrného pole char.

DRoman   NOVÝ
24. 5. 2007

char buf[100];// snad to číslo nebude delší...
float f;
do{
scanf("%s",buf);// čteme jako řeťezec
}while(sscanf(buf,"%f",&f) != 1);// sscanf vrací počet úspěšně načtených

snad by to mělo šlapat...

Roman   NOVÝ
24. 5. 2007

Podle mě je to tak že tato paměť už je přímo v binárce(*.exe), která se při spuštění nakopíruje do paměti, a odkazy na tu paměť jsou přímo do nakopírované binárky v paměti... (proto je vhodné všechny velké pole alokovat dynamicky, aby nezvětšovaly velikovt programu)
ale nevim to jistě ;-), ještě sem to nikde přímo nečet...

Friker   NOVÝ
9. 12. 2007

co je int (*a)[10][10] resp. char (*ch)[10][256] - som novacik a do poitrov sa nevyznam a ked vyssie uvedene je pole 10 pointerov tak potom nieco ako typedef int aai [10][10]; aa* a; abo typedef aach [10][256]; aach* ch;

Timeshifter   NOVÝ
11. 8. 2009

Podla mňa ten princíp pointerov funguje takto (napríklad):
Pri kompilácii sa iba interpretuje zápis v jazyku C++ do strojového kódu (v ktorom sa dá tiež programovať, ale to je moc hardcore), ktorému už procesor rozumie. Počas kompilácie sa NEVYKONÁVAJÚ príkazy v programe! Program sa iba prekladá z programovacieho jazyka do strojového kódu.
Ak potom spustím skompilovaný program (exe súbor), ten sa načíta do RAMky. A postupne sa v ňom vykonávajú príkazy, ktoré sú v tom exe súbore zapísané už strojovým kódom. Aksi vytvorím v progame premennú prem typu double - teda, číselná hodnota. Tá zabere v operačnej pamäti počítača (RAM) 8 bytov - vyhradí sa pre ňu určitý priestor v pamäti, a to tak, že počítač zistí, kde je volná bunka/y v RAMke (na akej adrese), a tam alokuje ttú adresu. Počítač si zapamätá túto adresu, aby vedel kam má zapisovať zmeny premennej prem a od kiaľ ju má čítať.

int prem;

Pri práci s touto premennou sa jednoducho iba mení hodnota na danej adrese.
prem = 6;


Potom niekde ďalej v programe sa vytvorí napríklad ukazatel s názvom ukaz - počítač s týmto ukazatelom (čo je vlastne druh premmennej) spraví to isté čo aj s predchádzajúcou premennou - alokuje pre ňu miesto v RAMke tiež na nejakej volnej adrese.
double * ukaz; // Vytvorí premennú typu pointer ktorá by mala odkazovať na adresu s hodnotou double

No na tejto adrese, narozdiel od double alebo int nebude pripravené miesto pre číselnú hodnotu, ale pre adresu (zatial tam žiadna nie je). Kedže tam zatial žiadna adresa uložená nie je, treba ju od niekial zohnať - a to tak, že si zistí adresu premennej prem pomocou funkcie & a túto adrsu pripíše do ukazatela ukaz:
ukaz = &prem


Ak stále nechápete, predstavte si to takto:

Spustí sa program

RAMka je mesto plné rovnakých domčekov - do mesta príde nejaký nový obyvateľ, ktorého prácou je mať na tričku napísané nejaké číslo (napríklad integer) - zistí si, kde je volní dom a nasťahuje sa do neho. Potom mu program príde a napíše/prepíše to číslo na tričku.
Potom príde do mesta iný obyvateľ, ktorého prácou je mať na tričku napísanú adresu. Nasťahuje sa do nejakého domu a čaká, čo s ním bude program robiť. Potom príde program znovu za tým chlapíkom s číslom na tričku a vypýta si od neho adresu (pomocou &) a tú napíše na tričko chlapíkovi, ktorý má mať na ňom adresu.
Samozrejme, alokácia miesta pre premenné (nasťahovanie chlapíkov do mesta) sa vykonáva vždy pri spustení programu, nie počas neho.
Ak tomu stále nechápete, tak ja už neviem...

LPG1995   NOVÝ
19. 3. 2011

Dobrý den, prosim Vás chtěl bych poprosit o radu. Zatím C++ docela zvládám a i ukazatele jsem docela pobral, ale mám problém s ukazatelem this. Vůbec nevím jak vlastně funguje..samoty jeho princip. Vim třeba že funguje:



class trida
{
private:int hodnota;
public: const trida operator++ (int a);
};
const trida trida::operator++ (int a)
{
trida pomoc(*this);
++hodnota;
return pomoc;

ale nemožu přijit na to jak tento ukazatel funguje. Nechapal jsem to už i u jiných věcí. Jinak ukazatele v pohodě..ale tento ale vubec nechapu :( Mohl by mi to prosim někdo po lopatě vysvětlit? (jak třeba tady nademnou Timeshifter)? Nebo mohl by mi to prosim nekdo tento ukazatel prepsat do delsiho a lepe pochopitelnejsiho kodu? Protoze me uplne uniká jeho význam/princip/funkce/atd...proste vubec nvm jak funguje a jsem z toho docela smutny:( Seděl jsem nad tím asi 2 hodiny, hledal jsem na internetu ale prostě nedovedu to stále pochopit. Prosim kdyby mi to nekdo vysvetlil byl bych mu velmi zavázán. Popřípadě mě můžete kontaktovat na mailu pata.va[zavináč]seznam.cz
Mnohokrát děkuji

Gameloft   NOVÝ
20. 4. 2011

C++ Programmer


Gameloft is a leading international publisher and developer of video games for mobile phones and consoles. Established in 1999, it has emerged as one of the top innovators in its field. The company creates games for mobile handsets equipped with Java, Brew or Symbian technology. The total number of games-enabled handsets is anticipated to exceed four billion units by 2012. Gameloft games are also available to players on WiiWare and DS, Microsoft’s Xbox LIVE Arcade, Apple’s iPod, iTouch and iPhones, and PCs
Gameloft is looking for talented C++ Programmers to be involved in designing and implementing 3D engines and technologies on various gaming devices (Sony Playstation 3,Apple iPhone, Nintendo DS, Nintendo Wii etc.), developing tools for 3D videogames creation and participating in the creation process along with the game design and art teams.
Job location: Prague

Responsabilities:
- Program the game according to the game design document and the programming rules already in place
- Integrate all elements of the product, including engine, user interface, graphics/animations and sound (if applicable)
- Work with the team to improve the production process and help in establishing best-practices
- Document the code and design and share with the team.
Requirements:
- Excellent skills in C++ and at least 2 years of experience in C++ programming
- Good knowledge in 3D mathematics (Linear algebra, arrays, vectors, etc.)
- Experience with graphic libraries (OpenGL, Direct 3D, DirectX)
- Previous experience in video game programming or other 3D applications (homemade applications accepted)
- Knowledge of the major 3D modeling and animation software. Knowledge of scripting and plugins programming for 3DSMax is a plus.
- Knowledge of online communication and networking technologies is a plus
- Creative problem solver, able to quickly learn and utilize unfamiliar concepts
- Motivated, hard-working, thorough and able to work on a team.
Benefits:
The opportunity to work and learn in a professional environment, with people who have a passion for making great games. We offer a supportive working climate, a young and dynamic team with a free communication style and also the possibility to make outstanding performances fair rewarded.
Motivating salary and a merit pay system.

Apply by sending your CV to  jobs.cz@gameloft.com


Cruppy   NOVÝ
23. 5. 2013
#include <iostream>
using namespace std;

int *ui1 = new int;
int *ui2 = new int;
double *ud1 = new double;
float *uf1 = new float;
char odpoved[4]={"ano"};

int main()
{
	do
	{
		cout<<"Zadejte 1. hodnotu typu int : ";
		cin>>*ui1;
		cout<<endl;
		cout<<"Zadejte 2. hodnotu typu int : ";
		cin>>*ui2;
		cout<<endl;
		cout<<"Zadejte hodnotu typu double : ";
		cin>>*ud1;
		cout<<endl;
		cout<<"Zadejte hodnotu typu float : ";
		cin>>*uf1;
		cout<<endl<<"Chcete zachovat tyto hodnoty? (ano/ne) : ";
		cin>>odpoved;
		cout<<endl;
	}
	while(odpoved[0]=='n');
	int i1 = *ui1;
	int i2 = *ui2;
	double d1 = *ud1;
	float f1 = *uf1;
	cout<<endl;
	cout<<"Hodnota c.1 : " << i1 <<endl;
	cout<<"Hodnota c.1 : " << i2 <<endl;
	cout<<"Hodnota c.1 : " << d1 <<endl;
	cout<<"Hodnota c.1 : " << f1 <<endl;
	cout<<endl<<endl;
	delete ui1;
	cout<<"Pamet pro ui1 [uvolnena]"<<endl;
	delete ui2;
	cout<<"Pamet pro ui2 [uvolnena]"<<endl;
	delete ud1;
	cout<<"Pamet pro ud1 [uvolnena]"<<endl;
	delete uf1;
	cout<<"Pamet pro uf1 [uvolnena]"<<endl;
	cout<<endl<<endl;
	cout<<"Pro ukonceni stisknete \"ENTER\"";
	cin.get();
	cin.get();
	return EXIT_SUCCESS;
}
Nela   NOVÝ
20. 7. 2018

 Vytvořila jsem takto:

#include <iostream>
using namespace std;

    int *prvni=new int;
    int *druha=new int;
    double *treti=new double;
    float *ctvrta=new float;

int main()
{
    char ODDELOVAC[]="__________________________________________________________________________\n";
    cout<<"Vitej!\n\nZadej nekolik cisel. Hodnoty se neukladaji, ale postupne prepisuji.\n";
    cout<<ODDELOVAC;
    int ano_ne;
    do{
        cout<<"\nZadej prvni cele cislo: ";
        cin>>*prvni;
        cout<<"Zadej druhe cele cislo: ";
        cin>>*druha;
        cout<<"Zadej treti desetinne cislo: ";
        cin>>*treti;
        cout<<"Zadej ctvrte desetinne cislo: ";
        cin>>*ctvrta;
        cout<<"\nChcete pokracovat v zadavani dalsich cisel? (Zadejte 1 pro ANO a 0 pro NE)\n";
        cin>>ano_ne;
        cout<<ODDELOVAC;
    }
    while (ano_ne != 0);{
        cout<<"\nKonec programu, nechcete jiz zadat dalsi cisla.\n";
        cout<<"\nPrvni zadane cislo: "<<*prvni;
        delete prvni;
        cout<<"\nDruhe zadane cislo: "<<*druha;
        delete druha;
        cout<<"\nTreti zadane cislo: "<<*treti;
        delete treti;
        cout<<"\nCtvrte zadane cislo: "<<*ctvrta;
        delete ctvrta;}
  return 0;
}
Z_code   NOVÝ
30. 11. 2020
#include <iostream>
using namespace std;

/*
alokujte 2× int, 1× double a 1× float(ne jako proměnné, ale pomocí operátoru new), nechte do nich uživatele
zadat hodnoty a poté se ho zeptejte, zda bude potřebovat danou paměť, pokud ne, paměť se uvolní, pokud ano,
nabídnete mu přepsání stávajících hodnot. A tak dokola, dokud uživatel neuzná data za zbytečná a dá uvolnit.
Jakmile dá uvolnit, vypíšou se napsaná čísla. Budete tedy muset čísla nakopírovat do klasických proměnných.
*/
int main()
{
	int* uInt1 = new int;
	int* uInt2 = new int;
	double* uDouble = new double;
	float* uFloat = new float;

	char yn;
	bool run = true;
	int i = 0;

	do
	{
		if (i == 0)
			cout << "Zadejte hodnoty:" << endl;
		else
			cout << "Prepiste hodnoty:" << endl;

		//zadáni hodnot uživatelem (neošetřen proti blbosti)
		cout << "1) hodnota typu int: ";
		cin >> *uInt1;
		uInt2 = uInt1;
		//cout << "2) Zadej hodnotu typu int: ";
		//cin >> *uInt2;
		cout << "3) hodnota typu double: ";
		cin >> *uDouble;
		cout << "4) hodnota typu float: ";
		cin >> *uFloat;

		cout << "Budete nadale potrebovat alokovanou pamet? -stiskni- y-pro ANO, n-pro NE: ";
		while (true)
		{
			cin >> yn;
			switch (yn)
			{
			case 'y':
				i=1;
				break;
			case 'n':
				run = false;
				cout << "Hodnota *uInt1 = " << *uInt1 << endl;
				cout << "Hodnota *uInt2 = " << *uInt2 << endl;
				cout << "Hodnota *uDouble = " << *uDouble << endl;
				cout << "Hodnota *uFloat = " << *uFloat << endl;
				delete uInt2;
				delete uDouble;
				delete uFloat;
				break;
			default: cout << "ERROR - chybny vstup - zkus to znovu" << endl; break;
			}
			break;
		}
	} while (run);
	return 0;
}

Přidej svůj názor

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo e-mailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Reaguješ na příspěvek:
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové názory e-mailem (pouze pro přihlášené)
Sleduj názory ke článku a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.



Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý