Programování v Delphi
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Programování v Delphi
no uživatelův vstup..
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Re: Programování v Delphi
Má se načítat sekvence čísel, takže pravděpodobně půjde o konzolovou aplikaci, přes okýnka by to asi šlo také, ale pro začátečníka by to bylo zbytečně složité, nejjednodušeji to provedeš klasickým způsobem jako ve starém dobrém Pascalu. Takže se podívej do sešitu, jestli se ti tam vyskytují příkazy read, readln, write, writeln, a jakým způsobem se používají.
A na procvičení a vyzkoušení toho co jste se měli naučit ve škole si napiš prográmek, který se tě zeptá na dvě čísla, uloží je do proměnných, a pak je vypíše v opačném pořadí. Na závěr programu je dobré počkat na stisk Enteru, aby se ti okno s výsledkem nezavřelo ihned.
A na procvičení a vyzkoušení toho co jste se měli naučit ve škole si napiš prográmek, který se tě zeptá na dvě čísla, uloží je do proměnných, a pak je vypíše v opačném pořadí. Na závěr programu je dobré počkat na stisk Enteru, aby se ti okno s výsledkem nezavřelo ihned.
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: Programování v Delphi
Ano, ty příkazy znám, ale co v mojem příkazu mám dát jako WriteLn a ReadLn :)
My PC
CPU: Intel Core i5-4570, GELID Solution Tranquillo
RAM: CRUCIAL Ballistix Tactical 8GB (2x4GB) DDR3 1600 LP
GPU: MSI N770 TF 2GD5/OC
SSD: Samsung SSD 840 EVO - 120GB
HDD: Seagate Barracuda 7200.14 - 1TB
MB: GIGABYTE GA-H87-HD3 - Intel H87
CASE: CoolerMaster K350
CPU: Intel Core i5-4570, GELID Solution Tranquillo
RAM: CRUCIAL Ballistix Tactical 8GB (2x4GB) DDR3 1600 LP
GPU: MSI N770 TF 2GD5/OC
SSD: Samsung SSD 840 EVO - 120GB
HDD: Seagate Barracuda 7200.14 - 1TB
MB: GIGABYTE GA-H87-HD3 - Intel H87
CASE: CoolerMaster K350
Re: Programování v Delphi
Teď mi není úplně jasné na co se ptáš
Read znamená číst, write psát, a načítat musíš do těch proměnných, jak jsem ti to popsal v tom pseudokódu. Ono by v podstatě stačilo nahradit v něm česká slova anglickými (a doplnit begin):
načti(číslo) = readln(cislo)
Ukaž co jsi už napsal a podíváme se jak dál...

Read znamená číst, write psát, a načítat musíš do těch proměnných, jak jsem ti to popsal v tom pseudokódu. Ono by v podstatě stačilo nahradit v něm česká slova anglickými (a doplnit begin):
načti(číslo) = readln(cislo)
Ukaž co jsi už napsal a podíváme se jak dál...
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: Programování v Delphi
program Project4;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
cislo,minule:Integer;
begin
klesajici:=true;
Read(cislo);
minule:=cislo;
while (cislo<>0)
Read(cislo);
if cislo<minule do
minule:=cislo
or
klesající:=false
{ TODO -oUser -cConsole Main : Insert code here }
end.
Co tam mám špatně? To s těma minulé a číslo DELPHI nečte :)
{$APPTYPE CONSOLE}
uses
SysUtils;
var
cislo,minule:Integer;
begin
klesajici:=true;
Read(cislo);
minule:=cislo;
while (cislo<>0)
Read(cislo);
if cislo<minule do
minule:=cislo
or
klesající:=false
{ TODO -oUser -cConsole Main : Insert code here }
end.
Co tam mám špatně? To s těma minulé a číslo DELPHI nečte :)
My PC
CPU: Intel Core i5-4570, GELID Solution Tranquillo
RAM: CRUCIAL Ballistix Tactical 8GB (2x4GB) DDR3 1600 LP
GPU: MSI N770 TF 2GD5/OC
SSD: Samsung SSD 840 EVO - 120GB
HDD: Seagate Barracuda 7200.14 - 1TB
MB: GIGABYTE GA-H87-HD3 - Intel H87
CASE: CoolerMaster K350
CPU: Intel Core i5-4570, GELID Solution Tranquillo
RAM: CRUCIAL Ballistix Tactical 8GB (2x4GB) DDR3 1600 LP
GPU: MSI N770 TF 2GD5/OC
SSD: Samsung SSD 840 EVO - 120GB
HDD: Seagate Barracuda 7200.14 - 1TB
MB: GIGABYTE GA-H87-HD3 - Intel H87
CASE: CoolerMaster K350
Re: Programování v Delphi
Nedostal jsi při pokusu o překlad žádná chybová hlášení? Je dobré je důkladně číst, zjistit co přesně chybu způsobuje, a jednu po druhé postupně odstranit. Dělají to tak i profesionálové.
Tak to vezmeme popořádku:
1. Chybí ti ve var deklarace klesajici:boolean;, takže překladač pochopitelně žádnou proměnnou toho jména nezná.
2. Pascal je trochu ukecaný, takže musíš napsat while podmínka do.
3. Cyklus může opakovat jen jeden příkaz, takže z následujících dvou za while musíš udělat jeden složený pomocí begin a end, jinak se opakuje jenom to read.
4. Větvení se provádí if ... then ... else ..., tedy žádné do, to je součást while, ani or, to je logické nebo a rozšiřuje ti výraz testovaný v tom if.
5. A nakonec jsi tam nechal klesající:=false, většina překladačů (i jazyků) nebere názvy proměnných s diakritikou, na to si dej bacha.
Možná je tam ještě něco, ale v TurboPascalu se už nic dalšího neprojevilo, Delphi nemám a nikdy jsem v něm nedělal.
Připrav si sadu testovacích dat, pár řad složených z několika čísel, ať můžeš prověřit všechny možnosti na které má program zareagovat, abys zjistil jestli pracuje správně, a kde jsou jeho případné slabiny. Já o jedné vím, je daná samotnou podstatou toho algoritmu, schválně jestli jí najdeš, nebo vytvoříš taková vstupní data která na ní způsobí chybu, i když program bude jinak pracovat úplně správně

Tak to vezmeme popořádku:
1. Chybí ti ve var deklarace klesajici:boolean;, takže překladač pochopitelně žádnou proměnnou toho jména nezná.
2. Pascal je trochu ukecaný, takže musíš napsat while podmínka do.
3. Cyklus může opakovat jen jeden příkaz, takže z následujících dvou za while musíš udělat jeden složený pomocí begin a end, jinak se opakuje jenom to read.
4. Větvení se provádí if ... then ... else ..., tedy žádné do, to je součást while, ani or, to je logické nebo a rozšiřuje ti výraz testovaný v tom if.
5. A nakonec jsi tam nechal klesající:=false, většina překladačů (i jazyků) nebere názvy proměnných s diakritikou, na to si dej bacha.
Možná je tam ještě něco, ale v TurboPascalu se už nic dalšího neprojevilo, Delphi nemám a nikdy jsem v něm nedělal.
Připrav si sadu testovacích dat, pár řad složených z několika čísel, ať můžeš prověřit všechny možnosti na které má program zareagovat, abys zjistil jestli pracuje správně, a kde jsou jeho případné slabiny. Já o jedné vím, je daná samotnou podstatou toho algoritmu, schválně jestli jí najdeš, nebo vytvoříš taková vstupní data která na ní způsobí chybu, i když program bude jinak pracovat úplně správně

"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: Programování v Delphi
Mám to takhle:
program Project4;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
cislo,minule:Integer;
klesajici:boolean;
begin
klesajici:=true;
Read(cislo);
minule:=cislo;
while (cislo<>0) do
begin
Read(cislo);
if cislo<minule then
minule:=cislo
else
klesajici:=false
end
{ TODO -oUser -cConsole Main : Insert code here }
end.
Okno mi vyskočí, píšu tam čísla a nic to nedělá
(
program Project4;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
cislo,minule:Integer;
klesajici:boolean;
begin
klesajici:=true;
Read(cislo);
minule:=cislo;
while (cislo<>0) do
begin
Read(cislo);
if cislo<minule then
minule:=cislo
else
klesajici:=false
end
{ TODO -oUser -cConsole Main : Insert code here }
end.
Okno mi vyskočí, píšu tam čísla a nic to nedělá

My PC
CPU: Intel Core i5-4570, GELID Solution Tranquillo
RAM: CRUCIAL Ballistix Tactical 8GB (2x4GB) DDR3 1600 LP
GPU: MSI N770 TF 2GD5/OC
SSD: Samsung SSD 840 EVO - 120GB
HDD: Seagate Barracuda 7200.14 - 1TB
MB: GIGABYTE GA-H87-HD3 - Intel H87
CASE: CoolerMaster K350
CPU: Intel Core i5-4570, GELID Solution Tranquillo
RAM: CRUCIAL Ballistix Tactical 8GB (2x4GB) DDR3 1600 LP
GPU: MSI N770 TF 2GD5/OC
SSD: Samsung SSD 840 EVO - 120GB
HDD: Seagate Barracuda 7200.14 - 1TB
MB: GIGABYTE GA-H87-HD3 - Intel H87
CASE: CoolerMaster K350
Re: Programování v Delphi
Ale dělá, jenže ty se o tom nedozvíš. Ani nemůžeš, protože program se chová jako černá díra, jen žere data a nemá žádný výstup!
Teď je na čase věnovat se tomu TODO co tam máš jako komentář, a místo něj napsat nějaké vyhodnocení, které podle stavu proměnné klesajici napíše pozitivní nebo negativní zprávu. Takže tam bude if klesajici then ... else ..., a co na obrazovku pomocí write vypíšeš, to už nechám na tobě
Nezapomeň na konec programu dát readln, aby se ti nezavřelo okno ihned po výpisu té zprávy, a protože jsi načítal pomocí read, tak ti v bufferu zůstal Enter od vkládání dat, takže tam ty readln budeš muset napsat dva za sebe. První ti vyčistí buffer klávesnice, druhý bude čekat na další stisk Enteru. Bylo by dobré o tom uživatele informovat nějakým pokynem, aby věděl co má dělat a necivěl na čekající kurzor...
Teď je na čase věnovat se tomu TODO co tam máš jako komentář, a místo něj napsat nějaké vyhodnocení, které podle stavu proměnné klesajici napíše pozitivní nebo negativní zprávu. Takže tam bude if klesajici then ... else ..., a co na obrazovku pomocí write vypíšeš, to už nechám na tobě

Nezapomeň na konec programu dát readln, aby se ti nezavřelo okno ihned po výpisu té zprávy, a protože jsi načítal pomocí read, tak ti v bufferu zůstal Enter od vkládání dat, takže tam ty readln budeš muset napsat dva za sebe. První ti vyčistí buffer klávesnice, druhý bude čekat na další stisk Enteru. Bylo by dobré o tom uživatele informovat nějakým pokynem, aby věděl co má dělat a necivěl na čekající kurzor...
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: Programování v Delphi
Nějak takhle? Ale pořád mě to nechce pustit přes to else
program Project6;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
cislo,minule:Integer;
klesajici:boolean;
begin
klesajici:=true;
Read(cislo);
minule:=cislo;
while (cislo<>0) do
begin
Read(cislo);
if cislo<minule then
minule:=cislo;
begin
writeln('Pole je sestupne')
end
else;
klesajici:=false
begin
writeln(' neni sestupne');
end
{ TODO -oUser -cConsole Main : Insert code here }
end;
readln(temp);
program Project6;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
cislo,minule:Integer;
klesajici:boolean;
begin
klesajici:=true;
Read(cislo);
minule:=cislo;
while (cislo<>0) do
begin
Read(cislo);
if cislo<minule then
minule:=cislo;
begin
writeln('Pole je sestupne')
end
else;
klesajici:=false
begin
writeln(' neni sestupne');
end
{ TODO -oUser -cConsole Main : Insert code here }
end;
readln(temp);
My PC
CPU: Intel Core i5-4570, GELID Solution Tranquillo
RAM: CRUCIAL Ballistix Tactical 8GB (2x4GB) DDR3 1600 LP
GPU: MSI N770 TF 2GD5/OC
SSD: Samsung SSD 840 EVO - 120GB
HDD: Seagate Barracuda 7200.14 - 1TB
MB: GIGABYTE GA-H87-HD3 - Intel H87
CASE: CoolerMaster K350
CPU: Intel Core i5-4570, GELID Solution Tranquillo
RAM: CRUCIAL Ballistix Tactical 8GB (2x4GB) DDR3 1600 LP
GPU: MSI N770 TF 2GD5/OC
SSD: Samsung SSD 840 EVO - 120GB
HDD: Seagate Barracuda 7200.14 - 1TB
MB: GIGABYTE GA-H87-HD3 - Intel H87
CASE: CoolerMaster K350
- domitea
- Tvůrce článků
-
Level 4.5
- Příspěvky: 1971
- Registrován: červen 09
- Bydliště: Královehradecký kraj
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Programování v Delphi
klesajici:=false
begin
writeln(' neni sestupne');
end
tohle a podobné bych předělal na tohle:
begin
klesajici:=false
writeln(' neni sestupne');
end
Sice nevím, jestli by to předtím compiler pobral, ale i tak je to chyba a pokud já vidím blbě, tak sorry
K tomuhle je jedna dobrá rada, k Ifům a podobným piš vždy to begin a end, klidně i na jeden příkaz, prostě se to tak naučíš psát. Až tvůj programovací skill pokročí, tak už budeš vědět kam to dát a kam ne, ale zatím to piš všude.
P.S. Pascal neumím, takže jen syntakticky kibicuju
begin
writeln(' neni sestupne');
end
tohle a podobné bych předělal na tohle:
begin
klesajici:=false
writeln(' neni sestupne');
end
Sice nevím, jestli by to předtím compiler pobral, ale i tak je to chyba a pokud já vidím blbě, tak sorry

K tomuhle je jedna dobrá rada, k Ifům a podobným piš vždy to begin a end, klidně i na jeden příkaz, prostě se to tak naučíš psát. Až tvůj programovací skill pokročí, tak už budeš vědět kam to dát a kam ne, ale zatím to piš všude.
P.S. Pascal neumím, takže jen syntakticky kibicuju

Re: Programování v Delphi
Ale takhle ne, to jsi úplně rozbil
Nestřílej naslepo, přemýšlej o tom co děláš. Počítač také vždycky udělá přesně to co mu řekneš, což nemusí být ani vzdáleně to co chceš, a je to vždy tvoje chyba, ne jeho!
Vrať se pěkně k tomu předchozímu, protože to už vypadalo že je v pořádku (není, je tam jeden chyták a jedna drobná chyba) a normálně se to zkompilovalo. A MÍSTO toho TODO přidej za už hotovou první část programu druhou, kde bude další if s výpisem dvou různých zpráv, podle toho jestli je sestupna true nebo false.

Vrať se pěkně k tomu předchozímu, protože to už vypadalo že je v pořádku (není, je tam jeden chyták a jedna drobná chyba) a normálně se to zkompilovalo. A MÍSTO toho TODO přidej za už hotovou první část programu druhou, kde bude další if s výpisem dvou různých zpráv, podle toho jestli je sestupna true nebo false.
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: Programování v Delphi
Nechápu co tím myslíš
nějak si nerozumíme, něco takového tam mám napsat?
begin
klesajici:=false
writeln(' neni sestupne');
end

begin
klesajici:=false
writeln(' neni sestupne');
end
My PC
CPU: Intel Core i5-4570, GELID Solution Tranquillo
RAM: CRUCIAL Ballistix Tactical 8GB (2x4GB) DDR3 1600 LP
GPU: MSI N770 TF 2GD5/OC
SSD: Samsung SSD 840 EVO - 120GB
HDD: Seagate Barracuda 7200.14 - 1TB
MB: GIGABYTE GA-H87-HD3 - Intel H87
CASE: CoolerMaster K350
CPU: Intel Core i5-4570, GELID Solution Tranquillo
RAM: CRUCIAL Ballistix Tactical 8GB (2x4GB) DDR3 1600 LP
GPU: MSI N770 TF 2GD5/OC
SSD: Samsung SSD 840 EVO - 120GB
HDD: Seagate Barracuda 7200.14 - 1TB
MB: GIGABYTE GA-H87-HD3 - Intel H87
CASE: CoolerMaster K350
Zpět na “Programování a tvorba webu”
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 4 hosti