Új hozzászólás Aktív témák
-
don_peter
senior tag
-
don_peter
senior tag
válasz
buherton #4533 üzenetére
Köszi, egyelőre még nem értem teljesen mi hogy működik, de rajta vagyok az ügyön.
Most ezt dobtam össze ami részben működik, de egy idő után valamiért megkeveredik és összeakad a futása.
[link]
A lényege, hogy fut a főprogram, majd bekövetkezik egy magas jelre történő megszakítás (kapcsolóval) és eldúl az interrupt-ban megadott feladat. (visszaszámláló)
Majd a feladat végeztével a program visszatér a főszálba és folytatja a futást.
Ez szépen fut is egy darabig aztán káosz lép fel....(utóbbi változó idő után van amikor egyből) -
axioma
veterán
válasz
buherton #4492 üzenetére
A shift baromira nem elrettento, nem vagyok en ennyire a lo tuloldalan! [Bar egy konstans /2-t, sot 2-hatvanyt a "raeros" forditasi idoben illene a forditoprogramnak shiftre modositania, es akkor maradhatna az embernek szolo kod az osztas, de ez megint mas kerdes.]
Kozlekedes az stimmel, csak nalunk vasut a domain. De hat ezek szerint mas mutatokat hasznalnak egyszeruen a cegek a karbantarthatosagra, es ennek megfeleloen mas az eljaras is.
A tomoren programozo kollega valoban a dokumentum irasaban se jeleskedett. Egy adott celra kihegyezett radio jel->uzenet feldolgozasarol volt szo, a feladat viszonylag roviden korulhatarolhato, a ket oldalrol volt doksi, a sajat reszenek viszont nemigen irta le a belsejet, a megkozelitesi modot.
A masik, bosszuallo kollega igen, egy verziokezeles nelkuli helyen dolgozott... (tobb mint 10 eve meselte azert azt is tegyuk hozza), es hanyni tudnek az ilyentol, csak peldanak mondtam hogy mi meg nem tortenhet. -
dabadab
titán
válasz
buherton #4492 üzenetére
"Következő példád az emberi gyarlóságra vezethető vissza."
Meg arra, hogy nem volt rendes verziokezeles meg kodreview meg unit test. Eddigi palyafutasom alatt nagyobbreszt ugy dolgoztam, hogy csak ugy lehetett valamit becheckelni, hogy azt valaki review-zta, ott meg kibukott volna az ilyen idetlenkedes. Vagy ha ott nem, akkor unit testen.
-
axioma
veterán
válasz
buherton #4488 üzenetére
Bar a butasag jelzot nem tartom erre szerencsesnek, de maradjunk abban, hogy ezek szerint vannak munkahelyek, ahol ezt a trukkozos stilust az en eddigi tapasztalataim ellenere szeretik.
Azt megkerdezhetem, hogy milyen celu program az, amin a "szepseg" helyett kevesebb programkod = jobb karbantarthatosag elv menten csinaltatok atirast? Meg esetleg hogy hany fo fejleszto meretu az a kod, az is erdekes lehetne. -
axioma
veterán
válasz
buherton #4479 üzenetére
Barmilyen szep es trukkos, en szinte kizartnak tartom, hogy ha ezt irod, azzal az eselyeidet noveled. Pont nem latszik, mit csinal a programreszlet (nem magadnak meg a fioknak irsz, hanem a cegnek, o meg karban akarja tarttatni a kodot, nelkuled is).
Mindenkepp olyan kodot varnek en (ha ilyen szerepem lenne) a jelentkezotol, amibol latszik, hogy mit csinal (ad absurdum ez is jo lehet, ha halalra van kommentezve, de akkor meg pont az nem marad meg, hogy attol szep, hogy rovid -- mert a shift es also bit szamolasanal se nem gyorsabb, se nem mellekhatas-mentesebb).
Illetve pont attol hogy letisztultan szep, az latszik belole, hogy nem ott otolte ki az illeto, hanem valahol latta es megtanulta... ami megint nem az interjun vart kreativitast tukrozi.
Szigoruan szvsz! -
alapz@j
tag
válasz
buherton #4441 üzenetére
> Hogy a fenébe van ideje futás közben újra fordítani?
Nem tudom, de azt csinálja és láthatóan jó eredménnyel. Egyébként abban is sok igazság van, amit te írtál. Hiába dolgoz fel egy százmilliós tömböt gyorsabban a Java-ban írt program, mint a C-ben írt, a felhasználók jelentős részének - teljesen természetes módon - az marad majd meg a Java programból, hogy lassan indul el, nem reszponzív a gui, idegenek a swing komponensek, stb.
> Honnan tudja futás közben, hogy hogyan lehet optimalizáltabb?
Erre van utalás a linkelt cikkben, igaz, nem a Java, hanem a CPU-k kapcsán. El tudom képzelni, hogy a VM a byte kód elemzésekor csinál valamilyen branch prediction-t vagy mondjuk előre lefordít mindkét lehetőségre egy natív kódrészeletet, amivel kiküszöböli a lokális ugrásokat.
-
dabadab
titán
válasz
buherton #4441 üzenetére
"C a beágyazott rendszerek egyeduralkodó nyelve."
Mondjuk en foleg nagyobbfajta rendszereket bizergaltam (nem kis dobozba, hanem nagyobbfajta szekrenyekbe voltak beagyazva
), de ott a regebbi cuccokon CHILL, ujabbakon meg C++, sot, Java volt.
"Honnan tudja futás közben, hogy hogyan lehet optimalizáltabb?"
Az ilyen dinamikus cuccok futas kozben is profilozzak a kodok es folyamatosan a bejovo adatokhoz tudjak optimalizalni, a Transmeta CPU-ja is ezt csinalta (mondjuk hogy most a konkret esetben tenyleg ujraforditja-e es ha igen, akkor mire, azt passzolom).
-
alapz@j
tag
válasz
buherton #4416 üzenetére
A Minecraft teljesen alap Java-OpenGL bridge-t használ, azaz a megjelenítést a hardver végzi, ha simán portolnák C/C++-ra, nem gyorsulna érdemben - az értékelhető gyorsuláshoz az egész engine-t újra kellene írni. Hozzáteszem, igen régi gép kell már ahhoz, hogy a Minecraft gondban legyen, utoljára talán a csajom core2duo+intel hd kombós gépén láttam szaggatni...
-
-
Karma
félisten
válasz
buherton #4416 üzenetére
A legtöbb nyelv platformfüggetlen. A tényleges munkavégzéshez bevonzott frameworkök meg nem (merthát lehet több féléven át helloworldözni STL-el, de a valóságban azért hálózat, adatbázis, IPC, meg ki tudja mi jön szembe). És máris nem olyan fontos szempont.
Meg ugye a Linux desktop kit érdekel
</troll>
A Vuze mindig Java-alapú volt szerintem, még Azureus korában is. Az OpenOffice meg főleg natív, Java kiegészítésekkel.
-
alapz@j
tag
válasz
buherton #4409 üzenetére
Ööö, ööö. A Java nem feltétlenül lassú és nem is foglal feltétlenül sok memóriát. 2000-ben ez így volt, ma már nincs - és az Oracle-höz sem vagy kötve mert van még egy tucatnyi másik implementáció. Az oracle-ös HotSpot csak a reference. A C++ platformfüggetlensége pedig megint csak kérdőjeles, mert a cout << "Hello World" tuti működik minden rendszeren, de ha elkezded benne meghívni az OS API függvényeit (mert egy natív GUI-t építesz), akkor máris ugrott a függetlenség.
-
TheProb
veterán
válasz
buherton #4407 üzenetére
értem, ez kis könnyedséget adott most, remélem a java akkor jobban fog tetszeni.
Egyébként ti milyen nyelveket ajánlanátok? Mit érdemes tanulni? Tudom, hogy ez megint csak 1 nagyon szubjektív dolog, de pl. mi a véleményetek a c++ (bár úgy tudom ez nagyon expert programozóknak ajánlott csak), vagy a .net-ről?
Azt tudom, hogy a java-t azért mondják relatív könnyűnek, mert OOP nyelv, de pl a .Net-ről nemtok semmit, meg a c++-ról is csak annyit, mint amit előbb leírtam (ergó semmit) -
TheProb
veterán
válasz
buherton #4402 üzenetére
Valami rémlik ezzel a lépkedős debuggal kapcsolatban, órán is csináltuk már párszor. fel lehet venni debug közben egyes változókat is külön, hogy ellenőrizzük mi van benne, stb.
Az a gond a másik fejlesztő környezettel, hogy vizsgán is VS-t kell használni, valamint ezzel is javítanak. VS nem GCC-t használ hanem valami jóval "kötekedősebb" compilert... Én eddig CodeBlocks-ban tanultam/programoztam, ami nekem sokkal jobban tetszett, de hát muszáj VS-t használni...
Egyébként, majd androiddal szeretnék foglalkozni, bár egyik ismerősöm aki várja a C-t, java-t, stb. azt mondta, hogy nem egy túlzottan átlátható nyelv... és ha nekem már/még a C-vel is gondjaim vannak akkor nemtom, hogy fog menni... Persze remélem megfogom majd rendesen érteni az egész program írási "létformát", sajnos 1 félév után még szinte teljesen tudtatlan vagyok (mint ahogy az látszik is
)
(#4403) Karma: Megfogom majd nézni akkor azt a ..._s verziót
-
superfinest
tag
válasz
buherton #4289 üzenetére
Igazából nekem 1-2 dologhoz kellene a programozás. pl.: San Andreas Multiplayer scripteléshez és/vagy Java alapú dolgok programozásához, úgyhogy tényleg hasznosabb lenne a Java, Pawno. Nemtudom, hogy ezt a 2 nyelvet lehet-e párhuzamosan tanulni.
Azért gondoltam először a C nyelvet tanulom, mert ez sok nyelv alapja "elvileg", javíts ha rosszul tudom. -
-
tototos
addikt
válasz
buherton #4248 üzenetére
Köszi
Nem tudtam hogy ennyire tiltott. Azt tudtam hogy beágyazott környezetben kb halál, de most szükségem lenne rá sajnos.
Van az oprendszerben saját heap kezelő. Sajnos ez is kiakad egy ponton. Amikor fel akarom szabadítani a char** változót.
Megnéznétek a kódot, hogy biztosan jól használom a dolgokat? Sajnos valami programozási hibára gyanakszom. -
skylaner
senior tag
válasz
buherton #4227 üzenetére
Dehát ez nem az strlen hibája.
Most azért ne használjak egy már megírt fgv-t mert lehet, hogy hibás paraméterrel hívom meg?
A fejlesztő feladata és felelőssége, hogy helyesen használja a fgv-ket.
Most akkor a memcpy se használjuk mert lehet, hogy a source adatszerkezet kevesebb byte-ból áll mint amit a 3. paraméterben megadtunk?Szerintem nem jó amit mondasz.
Tessék gondoskodni arról, hogy helyes paramétert adunk át a fgv-nek.
Az strlen() teljesen jól van megírva. -
Karma
félisten
válasz
buherton #4217 üzenetére
"Szerintem azért, mert sokan elfelejtik, hogy a realloc-nak a visszatérési értékét kell odaadni a pointernek."
Pont ezt nem szabad csinálni azelőtt, hogy megnézné az ember hogy NULL-t adott-e vissza a realloc – mert ha igen, akkor elveszted az eredeti memóriaterületet.
Ettől függetlenül se a realloctól, se a calloctól való félelmet nem értem az oktatásban, bár lehet hogy anno megmagyarázták; én meg elfelejtettem.
-
Karma
félisten
válasz
buherton #4197 üzenetére
Már hogyne volna C stílusú ez a fajta zárójelezés.
Amellett, hogy Ritchie eléggé a nyelv alkotója, nagy open source projektekben is előfordul, hogy ez a forma mellett döntenek.
De persze az is gyakori, hogy új sorba rakják. C-ben én is úgy szoktam, de ettől nem lesz univerzális igazság.
-
Karma
félisten
válasz
buherton #4094 üzenetére
Hát de az nem fasza, hogy lefordítja az ex_init4-et egyszer, aztán az ex_task4-et is (amiben benne van az include miatt az ex_init4 tartalma, és ezért van benne __heap_start...), és egymás mellé rakja őket. Elég egyértelműen rossz felépítés.
Rá kell venned az Eclipse-et, hogy csak az ex_task4-et fordítsa le, vagy vedd ki az include-ot és hagyd hogy a linker tegye a dolgát.
-
Jester01
veterán
válasz
buherton #4091 üzenetére
A grep kimenet alapján az ex_init4.c-ben van benne tehát a "jogos tulajdonos" ő. Ha a linker szerint az ex_task4.o-ban is benne van, az azt jelenti, hogy huncutság van, például az ex_task4.c-ben lehet egy #include "ex_init4.c". Mindenesetre valahogy belekerül abba a modulba is, azt kell kinyomozni, hogyan.
-
PumpkinSeed
addikt
-
Jester01
veterán
válasz
buherton #3970 üzenetére
A "type" az a teljes prototípus, visszatérési értékkel együtt.
Továbbá:
The effect of program termination in a freestanding environment is implementation-defined.Tulajdonképpen a main ezzel elvesztette a speciális mivoltát. Lehet, hogy nem is ott indul a program, és nem is tudni mit kap és mit ad vissza. Csak egy mezei függvény lett.
-
Jester01
veterán
válasz
buherton #3968 üzenetére
Igen, a C szabvány ezt meg is említi:
"In a freestanding environment (in which C program execution may take place without any benefit of an operating system), the name and type of the function called at program startup are implementation-defined."Például gcc fordítónak van is rá kapcsolója, -ffreestanding. Ha ezt megadod akkor nem is reklamál a void main miatt.
-
skylaner
senior tag
válasz
buherton #3938 üzenetére
Szerintem először is az algoritmikus gondolkodást kellene elsajátítani.
Ha ez meg van akkor az már teljesen másodlagos dolog, hogy hogyan, milyen nyelven, milyen szintaktikával írod le a megtervezett, elképzelt kódot.Ezekhez a feladatokhoz nem kell semmi más mint egy kis algoritmikus gondolkodás, ráadásul favágó módszerrel könnyen megoldhatók.
Mondjuk vizsga előtt illő lenne (nem csak akkor) tisztában lenni az alapvető adat struktúrákkal
-
Geresics
addikt
válasz
buherton #3938 üzenetére
Teljesen vakon nem vagyok, holnap vizsga, az előzőből is 40%-ot kaptam, de kell az 50%.
Egyszerűen a struktúrák valahogy kimaradtak ebben a formában.
Ilyen megoldást viszont már láttam:#include <stdio.h>
#include <string.h>
#include <limits.h>struct konyvadatok
{
char cim[50];
char szerzo[50];
struct datum
{
int ev;
int honap;
int nap;
}datum;
};void main()
{
int i,darabszam,azonosito,legkisebb_ev=INT_MAX,legkisebb_honap=12,legkisebb_nap=31;
size_t hossz;
struct konyvadatok konyvek[10];do
{
printf("\nKerem adja meg hany konyv adatat szeretne rogziteni? ");
scanf("%d",&darabszam);
}
while (darabszam>10);for(i=0;i<darabszam;i++)
{
printf("\nKerem adja meg a %d konyv cimet: ",i+1);
gets(konyvek.cim);
printf("\nKerem adja meg a %d konyv szerzojet: ",i+1);
gets(konyvek(i).szerzo);
printf("\nKerem adja meg a %d konyv kiadasanak evet: ",i+1);
scanf("%d",&konyvek(i).datum.ev);
printf("\nKerem adja meg a %d konyv kiadasanak honapjat (szammal): ",i+1);
scanf("%d",&konyvek(i).datum.honap);
printf("\nKerem adja meg a %d konyv kiadasanak napjat: ",i+1);
scanf("%d",&konyvek(i).datum.nap);
}
for (i=0;i<darabszam;i++)
{
if ((konyvek(i).datum.ev)<(legkisebb_ev))
{
legkisebb_ev=konyvek(i).datum.ev;
azonosito=i;}
if (((konyvek(i).datum.ev)==(legkisebb_ev)) && ((konyvek(i).datum.honap)<(legkisebb_honap)))
{
legkisebb_honap=konyvek(i).datum.honap;
azonosito=i;
}
if ((konyvek(i).datum.ev)==(legkisebb_ev) && (konyvek(i).datum.honap)==(legkisebb_honap) && (konyvek(i).datum.nap)<(legkisebb_nap))
{
legkisebb_nap=konyvek(i).datum.nap;
azonosito=i;
}
}
i=azonosito;
printf("\nA legregebbi kiadasu konyv: %s",konyvek(i).cim);
printf("\nA szerzoje: %s",konyvek(i).szerzo);
printf("\nA kiadas datuma: %d.%d.%d\n",konyvek(i).datum.ev,konyvek(i).datum.honap,konyvek(i).datum.nap);
system("pause");
} -
buherton
őstag
válasz
buherton #3927 üzenetére
Itt van egy kicsit szebb. Bár a warning okát nem értem
.
#include <stdio.h>
#include <string.h>
int main(void)
{
int i;
char string[10];
char* sp = &string;
printf("Adjon meg egy max 10 karakteres szoveget\n");
gets(string);
while(*(sp++))
{
if(*sp > '0' && *sp <= '9')
{
int rep;
for(rep = 0; rep < *sp - '0'; rep++)
{
printf("%c", *(sp + 1));
}
sp++;
}
else
{
printf("%c", *sp);
}
}
printf("\n");
return 0;
} -
tototos
addikt
válasz
buherton #3824 üzenetére
És olyat nem lehet hogy ne a fv visszatérési értéke legyen a változó?
ilyenre gondolok:
valami.c:
fooTypeDef localfoo;
void set(const fooTypeDef * const foo)
{
foo.ifoo=0; //ez csak egyszer hívódik meg
}
void get(const fooTypeDef ** const foo)
{
localfoo.cfoo = a+b; //ez az értékadás minden hívásnál megtörténik
*foo= &localfoo;
}
main.c //ezt hívják majd a fejlesztők
footypedef* myfoo;
get(&myfoo);
myfoo->ifoo = 5; //erre vagy hiba vagy ne hajtódjon végre
myfoo->cfoo = 4; // ez annyira nem nagy hiba mert a legközelebbi hívásnál úgyis felülíródik -
buherton
őstag
válasz
buherton #3824 üzenetére
Ami kimaradt: így a get függvények belül egyik adattagot sem lehet írni, csak és kizárólag olavsni. Az set-get-es függvényeknek azaz előnyük, hogy szabadon lehet változtatni az összes adattagját, viszont get a függvénnyel egyesével tudsz értékeket olvasni. Kivéve ha nem kókányolsz íly módon:
#include <stdlib.h>
#include <stdio.h>typedef struct
{
int ifoo;
char cfoo;
} fooTypeDef;int get(const fooTypeDef * const foo, int * const ibar, char * const cbar)
{
*ibar = sfoo->ifoo;
*cbar = sfoo->cfoo;
}int main(void)
{
fooTypeDef sfoo;sfoo.ifoo = 10;
sfoo.cfoo = 'a';int ibar;
char cbar;get(&sfoo, &ibar, &cbar);
printf("%i %c", ibar, cbar);return 0;
}Vagy valami ilyesmi lesz.
-
tototos
addikt
válasz
buherton #3819 üzenetére
Köszi szépen. Délután kipróbálom a dolgot.
MCU-ra írom, egy kommunikációs modul kiegészítése lesz. Azért használok pointert hogy csak egyszer legyen tárolva a struktúra, és azt lehessen átadni. Sajnos ahogy néztem, az egész struktúrát nem tudom átadni, csak egyenként az elemeket. Az lett volna jó ha tudok egy get függvényt írni ami visszaadja a struktúrát és ha valaki a struktúra elemét akarja átírni akkor beszól a fordító, vagy csak egyszerűen nem történik meg a művelet futás közben. -
tototos
addikt
válasz
buherton #3813 üzenetére
Kicsit vázolom a helyzetet, hogy most mi van készen.
.h fájl:
typedef struct{
Signal_Types name;
uint16_t id;
uint8_t pos;
uint8_t length;
uint8_t order;
float factor;
float offset;
uint16_t binValue;
float realValue;
}Signal_TypeDef;
Ezek közül a binValue és realValue-n kívül mindegyik csak egyszer kap értéket..c fájl:
static Signal_TypeDef SIGNALS[9];
uint8_t CAN_Signal_Init()
{ /*Itt kap értéket a struktúra tömb */}
uint8_t get_Signal(Signal_struct** signal)
{ /*Ezt a függvényt hívják meg a fejlesztők hogy megkapják a signal struktúrát */} -
Karma
félisten
válasz
buherton #3751 üzenetére
Még csak most üzemelem be a C környezetemet az ellenőrzéshez, de szerintem nem a write, hanem a readFile függvényed hibás.
Történetesen én akárhogy nézem, azt látom a kódban, hogy a db tömbödet a firstPart és a secondPart (stacken) egyszer létrehozott címével töltöd fel - azaz a printffel azonnal a ciklusban kiírva jól mutat, de valójában csak két stringed van a program élete végéig, és ezeket vágod felül folyton.
Új hozzászólás Aktív témák
Hirdetés
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Autós topik
- NVIDIA GeForce RTX 3080 / 3090 / Ti (GA102)
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Beszántaná a marketingért felelős részlegét az Intel
- Sokat fejlődött a Tecno belépő ajánlata
- Apple asztali gépek
- Milyen légkondit a lakásba?
- Milyen billentyűzetet vegyek?
- Folyószámla, bankszámla, bankváltás, külföldi kártyahasználat
- Poco X6 Pro - ötös alá
- További aktív témák...
- (50db) 250GB SATA Bazár (Samsung, Kingston, Crucial, Sandisk stb.)
- Lenovo LOQ 15APH8 15.6" FHD IPS Ryzen 7 7840HS RTX 4060 16GB 512GB NVMe magyar vbill gar
- Okostelefonok és eszközök felújítása, akkucsere, törött kijelző csere, ODA-VISSZA FUTÁRRAL IS!
- ASUS Dual RTX 4060 OC 8GB GDDR6/Garancia 26-07-27/
- Eladó Intel i7-6700 Processzor Hibátlan Működés!
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7800X3D 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
- Wilbur Smith könyvek (15 db) egyben
- Csere-Beszámítás! Gamer PC Számítógép! R9 3900X / RX 6700XT / 32GB DDR4 / 1TB SSD
- Lenovo ThinkPad L16 Gen 1 - 16" WUXGA IPS - Ultra 5 135U - 16GB - 512GB - Win11 - 2,5 év gari
- Samsung Galaxy A12 64GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest