Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++, QB: c-kielen perusteita tarvitaan

Sivun loppuun

hunajavohveli [13.11.2003 16:51:20]

#

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.

tomaattigeeni [13.11.2003 17:30:26]

#

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

Heikki [13.11.2003 17:37:19]

#

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.

Antti Laaksonen [13.11.2003 17:50:18]

#

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);

vade [14.11.2003 13:50:20]

#

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.

hunajavohveli [14.11.2003 16:24:57]

#

Kiitos avusta. Juuri tätä kaipasin!

sooda [14.11.2003 16:29:50]

#

VAU noi tiedosto jutskat(c++) oli hienoja kiitti antti!

tomaattigeeni [14.11.2003 17:31:08]

#

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

vade [14.11.2003 17:55:46]

#

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?

vade [14.11.2003 19:20:12]

#

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.

tomaattigeeni [15.11.2003 02:25:21]

#

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


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta