Tapahtumat

Kun kirjaudut sisään näet tässä ilmoitukset sinua kiinnostavista asioista.

Kirjaudu sisään
Tervetuloa lukemaan keskusteluja! Kommentointi on avoinna klo 7 - 23.
Tervetuloa lukemaan keskusteluja! Kommentointi on avoinna klo 7 - 23.

Menetkö hämillesi, jos funktion kutsussa on * muuttujan edessä?

Vierailija
30.06.2024 |

Etkö ymmärrä, mitä se meinaa?

Kommentit (14)

Vierailija
1/14 |
30.06.2024 |
Näytä aiemmat lainaukset

Mikä eroa on pointterilla ja referenssillä?

Vierailija
2/14 |
30.06.2024 |
Näytä aiemmat lainaukset

Meinaa? Svetisismi!

Sisältö jatkuu mainoksen alla
Sisältö jatkuu mainoksen alla
Vierailija
3/14 |
30.06.2024 |
Näytä aiemmat lainaukset

Muistinhallinta on syytä jättää ammattilaisille. Siksi käytän javaa. 

Vierailija
4/14 |
30.06.2024 |
Näytä aiemmat lainaukset

Miksi menisin hämilleni? 

Luuletko että vain viisaat osaa koodata ja eri kielien tapa käyttää muuttujia suoraan tai pointterien ja referenssien olisi jotenkin liian vaikeaa?

Vierailija
5/14 |
30.06.2024 |
Näytä aiemmat lainaukset

Tähti (*) funktion kutsun edessä liittyy yleensä Python-ohjelmointikieleen ja se tarkoittaa argumenttien pakkaamista (packing) ja purkamista (unpacking). Tässä on tärkeimmät käyttötavat:

1. **Pakkaaminen (Packing):**

   Kun tähti (*) sijoitetaan argumenttilistan eteen funktiota kutsuttaessa, se pakkaa ylimääräiset argumentit tupleen. Esimerkiksi:

   ```python

   def tulosta_tiedot(*args):

       for arg in args:

           print(arg)

   tulosta_tiedot(1, 2, 3)

   ```

   Tässä `args` on tuple, joka sisältää kaikki annetut arvot `(1, 2, 3)`.

2. **Purkaminen (Unpacking):**

   Kun tähti (*) sijoitetaan argumenttilistan eteen funktiota määriteltäessä tai esimerkiksi toisessa funktiokutsussa, se purkaa tuplesta tai listasta arvot erillisiksi argumenteiksi. Esimerkiksi:

   ```python

   def tulosta_kolme_lukua(a, b, c):

       print(a, b, c)

   tuple_arvot = (1, 2, 3)

   tulosta_kolme_lukua(*tuple_arvot)

   ```

   Tässä `*tuple_arvot` purkaa tuplesta arvot `(1, 2, 3)` erillisiksi argumenteiksi `tulosta_kolme_lukua`-funktiolle.

Tähti (*) on siis hyödyllinen työkalu, kun halutaan käsitellä muuttuva määrä argumentteja tai kun halutaan purkaa arvot tuplesta tai listasta erillisiksi argumenteiksi.

Vierailija
6/14 |
30.06.2024 |
Näytä aiemmat lainaukset

F(x)=2x^2 -3x +2

Versus

F(x)=2*x^2 -3*x +2

Katsos, ei muuttunut mitenkään tuo funktio.😆

Sisältö jatkuu mainoksen alla
Vierailija
7/14 |
30.06.2024 |
Näytä aiemmat lainaukset

Vierailija kirjoitti:

Muistinhallinta on syytä jättää ammattilaisille. Siksi käytän javaa. 

Itse kirjoitan Assemblylla koodin koska sulautetuissa sovelluksissa ei ole varaa turhia prosesseja pyöritellä.

Vierailija
8/14 |
30.06.2024 |
Näytä aiemmat lainaukset

Vierailija kirjoitti:

Mikä eroa on pointterilla ja referenssillä?

Pointterit (pointers) ja referenssit (references) ovat molemmat ohjelmointikäsitteitä, jotka liittyvät muistin osoittamiseen ja käsittelyyn, mutta niillä on joitain merkittäviä eroja. Tässä on keskeiset erot:

### Pointterit

1. **Määritelmä:** Pointteri on muuttuja, joka sisältää toisen muuttujan muistiosoitteen.

2. **Muokattavuus:** Pointterit voidaan asettaa osoittamaan mihin tahansa muistipaikkaan. Niitä voidaan muuttaa osoittamaan eri paikkoihin ohjelman aikana.

3. **Arvo-operaatiot:** Pointterin arvoa (osoitettua muistiosoitetta) voidaan muuttaa. Pointteria voidaan käyttää muistipaikan suorana käsittelemiseen esimerkiksi osoitearitmetiikassa.

4. **Null-arvot:** Pointterit voivat olla null (tyhjä osoitin), mikä tarkoittaa, että ne eivät osoita mihinkään.

5. **Syntax:** Pointtereiden kanssa käytetään dereferointioperaattoria (*) ja osoitteenotto-operaattoria (&). Esimerkiksi:

   ```cpp

   int x = 5;

   int* p = &x;  // p on osoitin, joka osoittaa x:ään

   *p = 10;  // x muuttuu arvoon 10

   ```

### Referenssit

1. **Määritelmä:** Referenssi on alias toiselle muuttujalle, eli se on toinen nimi olemassa olevalle muuttujalle.

2. **Muokattavuus:** Kun referenssi on alustettu osoittamaan tiettyyn muuttujaan, sitä ei voi muuttaa osoittamaan toiseen muuttujaan.

3. **Arvo-operaatiot:** Referenssi itsessään ei ole muuttuja, vaan se toimii suoraan alkuperäisen muuttujan kanssa. Ei ole erillisiä osoite- tai dereferointioperaatioita.

4. **Null-arvot:** Referenssit eivät voi olla null. Niiden on aina osoitettava johonkin olemassa olevaan muuttujaan.

5. **Syntax:** Referenssit ovat helpommin käytettäviä kuin pointterit, koska ne eivät vaadi osoite- tai dereferointioperaattoreita. Esimerkiksi:

   ```cpp

   int x = 5;

   int& r = x;  // r on referenssi x:ään

   r = 10;  // x muuttuu arvoon 10

   ```

### Yhteenveto

- **Muokattavuus:** Pointterit voidaan muuttaa osoittamaan eri paikkoihin, referenssejä ei voi.

- **Null-arvot:** Pointterit voivat olla null, referenssit eivät.

- **Käytettävyys:** Pointterit vaativat osoite- ja dereferointioperaatioita, referenssit eivät.

- **Osoitteenotto:** Pointterit käyttävät osoitteenotto-operaattoria (&) ja dereferointioperaattoria (*), kun taas referenssit eivät tarvitse tällaisia operaatioita.

Pointterit tarjoavat enemmän joustavuutta, mutta myös monimutkaisuutta, kun taas referenssit tarjoavat turvallisemman ja helpomman tavan viitata toisiin muuttujiin.

Sisältö jatkuu mainoksen alla
Vierailija
9/14 |
30.06.2024 |
Näytä aiemmat lainaukset

Entä jos kutsuttavan funktion pitäisi apin mukaan palauttaa return String RSVP, voiko silloin tulla paikalle ilman ennakkoilmoitusta ja vedota siihen että kyseessä oli muuttujan lazy evaluation?

Vierailija
10/14 |
30.06.2024 |
Näytä aiemmat lainaukset

Koodariroskasakki leviää jo.pätemää  olemattomia vauvafoorumille :D

Terveydenhuollon apotteineen ne jo pilasivatkin, niin kuin lukuisat muut Suomessa toimineet asiat.

Sisältö jatkuu mainoksen alla
Vierailija
11/14 |
30.06.2024 |
Näytä aiemmat lainaukset

Vierailija kirjoitti:

F(x)=2x^2 -3x +2

Versus

F(x)=2*x^2 -3*x +2

Katsos, ei muuttunut mitenkään tuo funktio.😆

 

Kun tarkastellaan kahta esitystapaa funktiolle \( F(x) \) eli \( F(x) = 2x^2 - 3x + 2 \) ja \( F(x) = 2 * x^2 - 3 * x + 2 \), ero on lähinnä syntaktinen ja riippuu käytetystä ohjelmointikielestä. Tässä esimerkissä selitän eron Pythonin ja C++:n näkökulmasta, koska molemmat ovat yleisesti käytettyjä ohjelmointikieliä.

### Matematiikassa

Matemaattisessa notaatiossa käytetään yleensä lyhyempää merkintätapaa:

\[ F(x) = 2x^2 - 3x + 2 \]

### Ohjelmoinnissa

#### Python

Pythonissa kertolaskun (*multiplication*) symbolia \(*\) on käytettävä eksplisiittisesti. Siten molemmat esitystavat eivät ole synonyymejä, ja Python-koodi, joka käyttää ensimmäistä kaavaa ilman tähtimerkkiä, aiheuttaa syntaksivirheen.

```python

def F(x):

    return 2 * x**2 - 3 * x + 2

```

#### C++

C++-kielessä kertolaskuoperaattoria \(*\) on myös käytettävä eksplisiittisesti. Ilman tähtiä, lausekkeella ei ole kelvollista merkitystä, ja se aiheuttaa virheen.

```cpp

double F(double x) {

    return 2 * x * x - 3 * x + 2;

}

```

### Yhteenveto

- **Matemaattinen notaati**: `2x^2 - 3x + 2` on hyväksytty merkintätapa, ja kertolasku ymmärretään kontekstista.

- **Ohjelmointikielet**: Kuten Python ja C++, vaativat eksplisiittisen kertolaskuoperaattorin käytön, joten `2 * x^2 - 3 * x + 2` on oikein ja suositeltava tapa esittää funktion laskutoimitus.

Ohjelmointikielissä tähti (*) tarvitaan aina kertolaskun ilmaisemiseksi, joten toinen esitystapa on ainoa oikein toimiva koodissa.

Vierailija
12/14 |
30.06.2024 |
Näytä aiemmat lainaukset

Vierailija kirjoitti:

Vierailija kirjoitti:

Muistinhallinta on syytä jättää ammattilaisille. Siksi käytän javaa. 

Itse kirjoitan Assemblylla koodin koska sulautetuissa sovelluksissa ei ole varaa turhia prosesseja pyöritellä.

Niinkö teet? :D Miltä elo kortistossa maistuu?

Sisältö jatkuu mainoksen alla
Vierailija
13/14 |
30.06.2024 |
Näytä aiemmat lainaukset

Vierailija kirjoitti:

Entä jos kutsuttavan funktion pitäisi apin mukaan palauttaa return String RSVP, voiko silloin tulla paikalle ilman ennakkoilmoitusta ja vedota siihen että kyseessä oli muuttujan lazy evaluation?

 

Ei, tässä kontekstissa "lazy evaluation" ei ole relevantti eikä hyväksyttävä perustelu olla ilmoittautumatta etukäteen.

### Lazy Evaluation

Lazy evaluation tarkoittaa, että ilmaisuja ei arvioida heti niiden määrittelyn yhteydessä, vaan vasta, kun niiden arvoa tarvitaan ensimmäisen kerran. Tämä konsepti liittyy ohjelmointiin ja erityisesti tiettyihin ohjelmointikieliin, kuten Haskell, jotka tukevat laiskaa arviointia natiivisti.

### RSVP

RSVP (Répondez s'il vous plaît) tarkoittaa "Vastatkaa, olkaa hyvä" ja sitä käytetään tapahtumien yhteydessä pyytämään vierailta ennakkoilmoitusta osallistumisestaan. Tällä ei ole mitään tekemistä ohjelmointikäsitteiden, kuten lazy evaluationin, kanssa. RSVP on kohtelias pyyntö järjestäjille tapahtuman suunnittelun helpottamiseksi.

### Konteksti: Palauttaa String RSVP

Jos kutsuttavan funktion pitäisi palauttaa `String RSVP`, se tarkoittaa ohjelmointikielessä, että funktion tulee palauttaa merkkijono, jossa on teksti "RSVP". Tämä ei kuitenkaan liity tapahtuman RSVP-konseptiin, jossa odotetaan etukäteisilmoitusta osallistumisesta.

### Yhteenveto

- **Lazy Evaluation**: Ohjelmointikäsitteellä, joka viivästyttää arvon laskemista siihen asti, kun sitä tarvitaan, ei ole merkitystä RSVP-tilanteessa.

- **RSVP**: Tapahtumaan osallistumiseen liittyvä ennakkoilmoituspyyntö, johon tulee vastata järjestäjän ohjeiden mukaisesti.

Et voi vedota "lazy evaluationiin" välttääksesi etukäteisilmoitusta tapahtumaan, koska nämä kaksi käsitettä ovat täysin erillisiä ja liittyvät eri konteksteihin. Tapahtumaan osallistumisessa on tärkeää kunnioittaa järjestäjän pyyntöjä ja ilmoittautua etukäteen, jos niin pyydetään.

Vierailija
14/14 |
30.06.2024 |
Näytä aiemmat lainaukset

Tosi ärsyttävää kun asiattomaan kommenttiin vastataan kuivan asiallisesti.