Byla vydána nová verze 2.4.68 svobodného multiplatformního webového serveru Apache (httpd). Řešeno je mimo jiné 13 zranitelností.
Apple na své vývojářské konferenci WWDC26 (Worldwide Developers Conference, keynote) představil řadu novinek. Vypíchnout lze novou generaci Apple Intelligence a zbrusu novou Siri, která dostala název Siri AI. Kvůli Aktu o digitálních trzích (DMA) však funkce Siri AI nebudou v systémech iOS 27 a iPadOS 27 k dispozici uživatelům v Evropské unii.
Byla vydána nová verze 1.18.0 distribučního frameworku Flatpak (Wikipedie), tj. technologie umožňující distribuovat aplikace v podobě jednoho instalačního souboru na různé linuxové distribuce a jejich různá vydání. Přehled novinek na GitHubu. Vypíchnout lze podporu rozhraní /dev/kfd pro výpočty na kartách AMD (AMDKFD).
aMule (Wikipedie), tj. multiplatformní klient pro peer-to-peer sdílení souborů pro sítě eD2k and Kademlia, byl po více než pěti letech od vydání poslední verze 2.3.3, vydán v nové major verzi 3.0.0 (GitHub). S novou webovou stránkou a dokumentací.
Byly vyhlášeni vítězové a zveřejněny vítězné zdrojové kódy (YouTube, GitHub) již 29. ročníku soutěže International Obfuscated C Code Contest (IOCCC), tj. soutěže o nejnepřehlednější (nejobfuskovanější) zdrojový kód v jazyce C.
Evropská komise předložila evropský balíček pro technologickou suverenitu, tedy soubor opatření, která mají posílit kapacity EU v oblasti polovodičů, umělé inteligence, cloudu a open source. To Evropě pomůže stát se lídrem v oblasti umělé inteligence, posílit její digitální autonomii a vytvářet podmínky pro udržitelnější digitální budoucnost.
OpenCV (Open Source Computer Vision, Wikipedie), tj. open source multiplatformní knihovna pro zpracování obrazu a počítačové vidění, byla vydána v nové major verzi 5.
Byla vydána nová verze 9.7 multiplatformní digitální pracovní stanice pro práci s audiem (DAW) Ardour. Přehled novinek, vylepšení a oprav v poznámkách k vydání.
Vývojáři webového prohlížeče Ladybird dnes oznámili, že mění způsob vývoje. S blížícím se vydáním alfa verze přestávají přijímat veřejné pull requesty. Všechny otevřené veřejné pull requesty budou uzavřeny. Tým nedokáže garantovat bezpečnost AI generovaných pull requestů.
OpenLogi (GitHub) je open source náhrada aplikace Logi Options+ pro přizpůsobení myší od společnosti Logitech. Zatím běží pouze na macOS.
Řešení dotazu:
[/hint]
#include <stdio.h>
#define do(x) for(x) {
#define while }
void main(void) {
unsigned short i;
do (i=0; i<10; i++)
printf("%i\n", i);
while;
}
int main()
{
int i = 1;
int n = 7;
label_start:
i = i + 1;
if( i > n ) goto label_end;
/* do work */
goto label_start;
label_end:
return 0;
}
Na vysvetlenou. Nekonecny cyklus (simulujici do-while) je mezi label_start a goto label_start. Podminka na ukonceni pak je if se skokem mimo smycku.
Ano. Presne takhle se ve starych jazycich kodovaly tyhle veci. Dneska uz maji oba zminene konstrukce analogicke obou tymum cyklu a je skoda, ze si jich nevazite.
S ohledem na odpovědi mám trochu obavu, co vlastně víte. Takže pro pořádek:
for (INIT; COND; ITER) {
BODY;
}
lze (za předpokladu, že v těle nepoužijete continue) ekvivalentně přepsat jako
INIT;
while (COND) {
BODY;
ITER;
}
Pomocí do-while je to horší, protože ten vždy proběhne aspoň jednou. Takže by bylo potřeba použít nějaký špinavý trik typu
INIT;
do {
if (!(COND))
break;
BODY;
ITER;
while (true);
a samozřejmě ani tady to nebude fungovat správně, pokud v těle použijete continue.
Podstatná otázka samozřejmě je, k čemu je to dobré.
for(int i=1;…){
}
ale fungoval jako:
int i;
for(i=1;…){
}
což měnilo platný scope pro 'i'.
{
INIT;
while (COND) {
BODY;
ITER;
}
}
C EKVIVALENT V FORTRAN 77 DO
INTEGER I
INTEGER N
N=7
DO 10 I=1,N
C DO WORK
10 CONTINUE
STOP
END
totéž pomocí IF
C EKVIVALENT V FORTRAN 77 IF
INTEGER I
INTEGER N
10 IF (N=I) 40,30,20
20 I=I+1
C DO WORK
30 GOTO 50
40 PRINT 'CHYBA I JE VETSI NEZ N'
50 STOP
END
C EKVIVALENT V FORTRAN 77 IF
INTEGER I
INTEGER N
10 IF (N-I) 40,30,20
20 I=I+1
C DO WORK
30 GOTO 50
40 PRINT 'CHYBA I JE VETSI NEZ N'
50 STOP
END
jak už 20 let píšu do if podmínku, tak ty prsty to napsaly automaticky, přitom tohle FORTRANí IF je na číslo.
#define LIMIT 100
int i;
//--- FOR LOOP -----------
for(i = 0; i < LIMIT; i++)
f(i);
//--- WHILE LOOP -----------
i = 0;
while(i < LIMIT)
{
f(i);
i++;
}
//--- DO-WHILE LOOP -----------
i = 0;
if(i < LIMIT)
{
do
{
f(i);
} while(++i < LIMIT);
}
Tiskni
Sdílej: