Olisi käännettävä Basicilla tekemäni ohjelma C:lle, mutta kun en osaa käyttää C:tä. Minun ei tarvitse tietää kuin miten tehdään sellaiset silmukat kuin Basicissa FOR NEXT tai DO LOOP ja muuttujien/matriisien peruskäsittely. Lisäksi vielä joku yksinkertainen tiedostosta lukeminen ja tiedostoon tallentaminen.
for luuppi:
for(alustus; ehto; kasvatus) { } // esimerkki: for(a=0; a < 10; a++) { } // for luuppaa kymmenen kertaa // a -muuttuja pitää olla määritelty aikaisemmin ( int a; )
do looppi:
do { // tee jotain } while(ehto);
http://nic.funet.fi/c opas/ tuola lisää faktaa, tiedoston lukemisesta katso "C" -topikki tästä samasta foorumista/alueesta
Muuttujista:
Sinun pitää määritellä KAIKKI muuttujat mitä käytät!
Esim:
//alustetaan kokonaislukumuuttuja int kokonaisluku; //alustetaan likulukumuuttuja double liukuluku; //ja merkkijonomuuttuja char merkkijono[20];
Huomaa että C/C++ kielessä ei ole merkkijonomuuttujaa, vaan siihen tarkoitukseen käytetään merkkitaulukkoa.
Tässä kaksikielinen sanakirja QBasic - C, toivottavasti on hyötyä ja toimivat!
PRINT "Moikka!"
/* tämä kirjasto täytyy ottaa mukaan, jos ohjelma esim. tulostaa tekstiä näytölle, lukee käyttäjän syötettä tai käsittelee tiedostoja */ #include <stdio.h> /* pääohjelma */ int main(void) { printf("Moikka!"); }
DIM i AS INTEGER DIM j(10) AS LONG '11 alkiota! i = 23 j(0) = 1234567
/* kaikki muuttujat on määriteltävä ennen niiden käyttöä */ int i; long j[10] /* 10 alkiota! */ i = 23; j[0] = 1234567;
FOR i = 1 to 10 ... NEXT
for (i = 1; i <= 10; i++) { ... }
DO WHILE i > 0 ... LOOP
while (i > 0) { ... }
OPEN "testi.dat" FOR OUTPUT AS #1 PRINT #1, i, j(0) CLOSE #1
FILE *tiedosto; tiedosto = fopen("testi.dat", "w"); fprintf("%i %ld", i, j[0]); fclose(tiedosto);
OPEN "testi.dat" FOR INPUT AS #1 INPUT #1, i, j(0) CLOSE #1
FILE *tiedosto tiedosto = fopen("testi.dat", "r"); fscanf(tiedosto, "%i %ld", &i, &j[0]); fclose(tiedosto);
lainaus:
Huomaa että C/C++ kielessä ei ole merkkijonomuuttujaa, vaan siihen tarkoitukseen käytetään merkkitaulukkoa.
Harhaanjohtavaa. C:ssä ei ole, mutta C++:ssa on standardikirjaston string-luokka, jonka käyttäminen merkkitaulukon sijaan on lähes poikkeuksetta perusteltua.
Kiitos avusta. Juuri tätä kaipasin!
VAU noi tiedosto jutskat(c++) oli hienoja kiitti antti!
lainaus:
Harhaanjohtavaa. C:ssä ei ole, mutta C++:ssa on standardikirjaston string-luokka, jonka käyttäminen merkkitaulukon sijaan on lähes poikkeuksetta perusteltua.
Sitä itseään, string -olioissa merkit ovat myös taulukossa, joskin string -olioista voi luoda myös taulukoita ;)
string jou="blingblinggii"; cout << jou[0]; // tulostaa 'b' for(a=0;a<lenght(jou);a++) { cout << jou[a]; } // luuppi tulostaa koko yo. merkkijonon
lainaus:
Sitä itseään, string -olioissa merkit ovat myös taulukossa, joskin string -olioista voi luoda myös taulukoita ;)
Minkä tahansa ohjelmointikielen standardin merkkijonotyypin sisältö majailee jonkinlaisessa merkkitaulukossa tai -taulukoissa. Mikä on pointtisi?
Korjaan: sisältö -> merkkijono
Täytyy vielä tiedustella []-operaattorin käyttöä esittelevän esimerkkikoodisi tarkoitusperiä. Se pyrkii luomaan stringistä kuvan char-taulukon synonyyminä, mikä on väärin. Vaikka string osittain jäljittelee char-taulukon käyttölogiikkaa jotta se ei tuottaisi omaksumisvaikeuksia c-ohjelmoijille, se ei ole char-taulukko, vaan luokka, jossa on merkkivaraston lisäksi sen käsittelemiseen tarkoitettu toiminnallisuus.
STL:ssä ei muuten ole length-funktiota (saatika lenght!). Missään tapauksessa en näe syytä olla käyttämättä stringin omaa length()-metodia.
hokshoks, esimerkki oli lähinnä pseudoa, kun otit puheeksi lenght():n, jokainen ymmärtää mitä sillä tarkoitin, eikä se liittynyt itse asiaan olennaisesti ;)
Pointti oli lähinnä siinä, että huomautin että myös string -olioita pystyy käsitellä merkkitaulukon tapaan, joka olisi voinut (erityisesti aloittelijalla) jäädä hämärän peittoon kommentissasi:
lainaus:
Harhaanjohtavaa... C++:ssa string-luokka, jonka käyttäminen merkkitaulukon sijaan on lähes poikkeuksetta perusteltua
Aihe on jo aika vanha, joten et voi enää vastata siihen.