NÄYTÖN TYHJENNYS

Toisinaan on tarve tyhjentää ohjelmallisesti näytöltä siinä olevat tekstit, Dev C++ näyttö tyhjennetään system("cls") -funktiolla. Borland-kääntäjässä vastaava funktio oli clrscr().

#include <stdio.h> int main() { printf("Tekstit poistetaan seuraavalla cls-funktiolla."); printf("Kursori palautuu alkuun ja seuraava printf tulostaa normaalisti."); system("cls"); printf("Toinen testiteksti"); getch(); return 0; }




AIKA JA SEN KÄSITTELY

C-kieli sisältää ns standardikirjaston time.h jossa on aikaan liittyviä funktioita.

/* kuinka monta tuntia on kulunut 1.1.1970 lähtien alla olevan ohjelman käynnistys hetkeen */ #include <stdio.h> #include <time.h> int main () { time_t seconds; seconds = time(NULL); printf("Sekuntteja 1.1.1970 alkaen = %ld\n", seconds); printf("Minuutteja 1.1.1970 alkaen = %ld\n", seconds/60); printf("Tunteja 1.1.1970 alkaen = %ld\n", seconds/3600); getch(); return(0); }




Seuraava esimerkki näyttää kellonajan ja päivämäärän ohjelman käynnistyshetkellä, mukavaahan olisi toki jos kellonaika päivittyisi.

#include <stdio.h> #include <time.h> int main () { time_t curtime; time(&curtime); printf("Current time = %s", ctime(&curtime)); getch(); return(0); }




Seuraavassa esimerkissä käytetään "viivettä" ohjelman lopetuksessa. Viivettä voi käyttää esimerkiksi pitämään pieniä testiohjelmia hetken avoinna.
Dev C++ -kääntäjä ei tunnista delay()-funktiota eli viivettä, vastaavan tyyppinen on sleep()-funktio. Funktion sulkeisiin kirjoitetaan aika millisekuntteina.

#include <stdio.h> int main () { printf("Vaihtoehto getch-funktiolle on sleep-funktio.\n"); printf("Sulkeissa aika on millisekuntteina (n 3 s).\n"); sleep(3000); return(0); }




BITTIOPERAATTORIT

Bittioperaattorit toimivat bitti kerrallaan, eivätkä ne siten käsittele muuttujan arvoa kokonaisuudessaan. Bittioperaattorit liittyvät läheisesti laiteajureiden sekä käyttöjärjestelmän sisäiseen ohjelmointiin. Oikein käytettynä, bittioperaattoreilla voidaan parantaa ohjelmien tehokkuutta, ohjelman suoritusnopeutta. Tutustu bittioperaattoreihin oppaan Jatko-osassa.

SATUNNAISLUVUT

Satunnaisluku ohjelmoinnissa tarkoittaa jotain tietokoneen "arpomaa" numeroa. Satunnaisluvun tuottamiseen C-kielessä käytetään kahta funktiota, srand jolla alustetaan satunnaislukugeneraattori ja rand jonka avulla satunnaisluku palautetaan (luku välillä 0 - 32767).

Seuraava esimerkki löytyi Ohjelmointiputka.net-sivustolta .

#include <stdio.h> #include <time.h> #include <stdlib.h> /* satunnaislukua varten */ int main(void) { int i; time_t siemen; time(&siemen); /* alla, alustetaan satunnaislukugeneraattori */ srand(siemen); /* tulostetaan kymmenen satunnaislukua väliltä 0 - 9 */ for (i = 0; i < 10; i++) { printf("%i\n", rand() % 10); } getch(); }




NÄPPÄIMISTÖN ascii- ja scan-koodit

Alla on pieni ohjelma jolla voi selvittää näppäimistön painikkeiden tai painike-yhdistelmien ascii- sekä scan-koodeja. Näppäimistö tuottaa binäärimuodossa numeron tietokoneelle, ohjelma näyttää ko numeron sekä onko numero-arvo ascii- vai scan-osassa.



Seuraavassa esimerkki-ohjelmassa hyödynnetään yllä olevaa ohjelmaa.

#include <stdio.h> #include <conio.h> int main() { signed char ascii; signed char scan; float Rkok, R1, R2, R3; do{ printf("\n"); printf("Valitse jokin seuraavista:\n"); printf(" Ohjelman lopetus - Esc-painike\n "); printf("Kolme vastusta sarjassa - F1-painike\n "); printf("Kolme vastusta rinnan - F2-painike\n "); printf("Valintasi: "); ascii=getch(); scan = 0; if (ascii==0) { scan=getch(); } else{ scan=0; } fflush(stdin); if(scan==59) /* Jos valittu F1-painike */ { printf("\n\nVastuksia sarjassa\n"); printf(" Anna R1: "); scanf("%f",&R1); printf(" Anna R2: "); scanf("%f",&R2); printf(" Anna R3: "); scanf("%f",&R3); Rkok=R1+R2+R3; printf(" Rkok sarjassa: %f\n\n",Rkok); } if(scan==60) /* Jos valittu F1-painike */ { printf("\n\nVastuksia rinnan\n"); printf(" Anna R1: "); scanf("%f",&R1); printf(" Anna R2: "); scanf("%f",&R2); printf(" Anna R3: "); scanf("%f",&R3); Rkok=1/((1/R1)+(1/R2)+(1/R3)); printf(" Rkok rinnan: %f\n\n",Rkok); } fflush(stdin); } while(ascii!=27); /* Jos valittu Esc-painike */ return 0; }