LibrePCB, tj. svobodný multiplatformní softwarový nástroj pro návrh desek plošných spojů (PCB), dospěl po pěti letech vývoje do verze 1.0.0. Přehled novinek v příspěvku na blogu a v aktualizované dokumentaci. Zdrojové kódy jsou k dispozici na GitHubu pod licencí GPLv3.
Facebook má nové logo. Poznáte rozdíl?
Byla vydána nová verze 7.2 v Javě napsané aplikace pro komplexní návrh rozmístění nábytku a dalšího vybavení v interiérech Sweet Home 3D. Vyzkoušet lze online verzi. Před dvěma týdny vyšla placená verze pro chytré telefony a tablety (App Store, Google Play).
Zítra 23. září proběhne Maker Faire Mladá Boleslav, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.
Byla vydána beta verze Ubuntu 23.10 s kódovým názvem Mantic Minotaur. Přehled novinek v poznámkách k vydání. Dle plánu by Ubuntu 23.10 mělo vyjít 12. října 2023.
Josef Průša informuje o nových verzích firmwarů pro tiskárny Original Prusa, 5.0.0 pro MK4 a MK3.9 a 5.1.0-alpha1 pro MINI, díky kterým jsou tiskárny mnohem rychlejší.
Mastodon (Wikipedie), svobodná federalizovaná sociální síť, byl vydán ve verzi 4.2. Z novinek je vypíchnuto vylepšené vyhledávání.
Ben Hawkes publikoval pod názvem The WebP 0day analýzu bezpečnostní chyby CVE-2023-4863 v knihovně WebP / libwebp s řadou zajímavých odkazů. Pravděpodobně se jedná o stejnou chybu jako BLASTPASS (CVE-2023-41064 a CVE-2023-41061) v macOS, iOS, iPadOS a watchOS. Zpracování (zobrazení) speciálně připraveného obrázku nebo přílohy vedlo ke spuštění útočníkem připraveného kódu.
Myš je pro kočku: Prohlížeče je dalším dílem ze série článků Myš je pro kočku, kde Edvard Rejthar ukazuje, jak lze počítač ovládat bez myši. Používáte ve webových prohlížečích zkratky Ctrl+(Shift)+Tab, Ctrl+(Shift)+PgDn/PgUp, F6, (Shift)+Alt+Enter nebo F7?
Vývojáři mobilní Datovky prosí o pomoc s testováním beta verze mobilní Datovky s novým grafickým rozhraním, podporou pro tmavý režim a podporou pro VoDZ. Aplikace je zatím dostupná pouze pro zařízení Android a je umístěna v samostatném instalačním kanále Datovka Beta. Tento kanál slouží pro testovaní nové funkcionality a grafického uživatelského rozhraní. Datovka Beta se instaluje jako samostatná aplikace s vlastními daty, která
… více »Řešení dotazu:
#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 ENDtotéž 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 ENDjak 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: