Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
en:programming:c:crashcourse [2012/05/31 11:45] eero.valjaotsen:programming:c:crashcourse [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
-====== Crash course ====== +====== Crash course ====== 
-<note important>Translation needed</note>+
 ===== Program structure ===== ===== Program structure =====
  
Line 39: Line 39:
  
 <code c> <code c>
-// Üherealine kommentaar+// Line comment is on one line
-// Kommentaariks loetakse kahe kaldkriipsu järel olevat teksti+// Text after two slash signs is considered as comment.
  
 /* /*
-  Mitmerealine kommentaar + Block comment can be used to include more than one line. 
-  Kommentaari algus ja lõpp määratakse kaldkriipsude ja tärnidega+ The beginning and the end of a comment is assigned with slash and asterisk signs.
 */ */
 </code> </code>
  
-~~PB~~ 
  
-===== Andmed =====+===== Data =====
  
-==== Andmetüübid ====+==== Data types ====
  
-C-keele baasandmetüübid:+C-language basic data types:
  
-Tüüp             ^ Miinimum    Maksimum   Bitte Baite ^+Type             ^ Minimum     Maximum    Bits Bytes ^
 | (signed) char    | -128        | 127        | 8     | 1     | | (signed) char    | -128        | 127        | 8     | 1     |
 | unsigned char    | 0           | 255        | 8     | 1     | | unsigned char    | 0           | 255        | 8     | 1     |
Line 66: Line 65:
 | double           | -1.7<sup>308</sup> | 1.7<sup>308</sup> | 64    | 8     | | double           | -1.7<sup>308</sup> | 1.7<sup>308</sup> | 64    | 8     |
  
-Sulgudes olevat sõna "signed" ei pea kasutama, kuna vaikimisi ongi andmetüübid bipolaarsed.+The word "signed" in brackets is not necessary to use because data types are bipolar by default.
  
-AVR mikrokontrolleril //int// = //short// \\ +AVR microcontroller has //int// = //short// \\ 
-PC arvutil //int// = //long// \\+PC has //int// = //long// \\
  
-C-keeles puudub spetsiaalne teksti-andmetüüpSelle asemel kasutatakse //char// tüüpi massiive (nendest edaspidija ASCII "tähestikku", kus igal tähel ja märgil on oma järjekorranumber.+There is no special string data type in C-languageInstead //char// type arrays (will be covered laterand ASCII alphabet is used where every char has its own queue number.
  
-==== Muutujad ====+==== Variables ====
  
-Programmis saab kasutada kindlat andmetüüpi mälupesasid muutujaidMuutujate nimed võivad sisaldada ladina tähestiku tähtinumbreid ja alakriipsuNimi ei tohi alata numbrigaMuutuja deklareerimisel kirjutatakse selle ette andmetüüpVäärtuse omistamiseks muutujale kasutatakse võrdusmärki (=). Näide muutujate kasutamisest:+Program can use defined type of memory slots variablesVariable names can include latin aplhabet charactersnumbers and underdashesBeginning with a number is not allowedWhen declarations to variables are being made, data type is written in front of itValue is given to variable by using equal sign (=). Example about using variables:
  
 <code c> <code c>
-// char tüüpi muutuja deklareerimine+// char type variable declaration
 char c; char c;
  
-// Muutujale väärtuse omistamine.+// Value is given to variable c.
 c = 65; c = 65;
-c = 'A'; // A on ASCII märgisüsteemis samuti väärtusega 65+c = 'A'; // A has in ASCII character map also value 65
  
-// int tüüpi muutuja i20 deklareerimine ja algväärtustamine+// int type variable i20 declaration and initialization
 int i20 = 55; int i20 = 55;
  
-// Mitme unsigned short tüüpi muutuja deklareerimine+// Declaration of several unsigned short type variables
 unsigned short x, y, test_variable; unsigned short x, y, test_variable;
 </code> </code>
  
-==== Konstandid ====+==== Constants ====
  
-Konstante deklareeritakse samamoodi nagu muutujaidkuid ette lisatakse //const// võtmesõnaKonstantide väärtust ei saa programmi käigus muutaNäide kasutamisest:+Constants are declarated in the same way as variablesexept //const// keyword is added in front of data typeConstants are not changeable during program workExample about using them:
  
 <code c> <code c>
-// int tüüpi konstandi määramine+// int type constant declaration
 const int x_factor = 100; const int x_factor = 100;
 </code> </code>
  
-==== Struktuurid ====+==== Structures ====
  
-Baasandmetüüpidest saab //struct// võtmesõnaga struktuure koostadaStruktuur on justkui kombineeritud andmetüüpTüüpi deklareeritakse //typedef// võtmesõnagaNäide struktuurist andmetüübi loomise ja kasutamise kohta:+Basic data types can be arranged into structures by using //struct// keywordStructure is a combined data typeType is declarated with //typedef// keywordExample about structures by creating and using data type:
  
 <code c> <code c>
-// Uue punkti andmetüübi deklareerimine+// Declaration of a new data type "point"
 typedef struct typedef struct
 { {
- // x ja koordinaat ning värvikood+ // x and coordinates and color code
  int x, y;  int x, y;
  char color;  char color;
Line 115: Line 114:
 point; point;
  
-// Punkti muutuja deklareerimine+// declaration of a variable as data type of point
 point p; point p;
  
-// Punkti koordinaatide määramine+// Assigning values for point variable
 p.x = 3; p.x = 3;
 p.y = 14; p.y = 14;
 </code> </code>
  
-==== Massiivid ====+==== Arrays ====
  
-Andmetüüpidest võib koostada massiive (jadasid)Massiiv võib olla ka mitmemõõtmeline (tabelkuup, jne). Näide üheja kahemõõtmelise massiivi kasutamisest:+Data types can be arranged into arraysArray can have more than one dimensions (tablecube etc). Example about using one- and two-dimensional arrays:
  
 <code c> <code c>
-// Üheja kahemõõtmelise massiivi deklareerimine+// Declaration of oneand two-dimensional arrays
 char text[3]; char text[3];
 int table[10][10]; int table[10][10];
  
-// Teksti moodustamine tähemassiivist +// Creating a string from char array 
-text[0] = 'H';  // Täht +text[0] = 'H';  // Char 
-text[1] = 'i';  // Täht +text[1] = 'i';  // Char 
-text[2] = 0;    // Teksti lõpetamise tunnus (null-bait)+text[2] = 0;    // Text terminator (0 B)
  
-// Tabeli ühe elemendi muutmine+// Assigning new value for one element.
 table[4][3] = 1; table[4][3] = 1;
 </code> </code>
  
-~~PB~~+<pagebreak>
  
-===== Avaldised =====+===== Operations =====
  
-Muutujatekonstantide ja väärtust tagastavate funktsioonidega saab koostada avaldisi (tehteid)Avaldise väärtusi saab omistada muutujateleneid saab kasutada funktsiooni parameetritena ja erinevates tingimuslausetes.+Variablesconstants and value returning functions can be used for composing operationsThe result of and operation can be assigned to a variableit can be used as a function parameter and in different control structures.
  
-==== Aritmeetilised ====+==== Arithmetic operators ====
  
-C-keeles toetatud aritmeetilised tehted on liitmine (+), lahutamine (-), korrutamine (*), jagamine (/) ja mooduli võtmine (%). Näited aritmeetiliste tehete kasutamisest:+C-language supported artithmetic operations are addition (+), subtraction (-), multiplication (*), division (/) and modulo (%). Some examples about using operators:
  
 <code c> <code c>
 int x, y; int x, y;
  
-// Mooduli võtminekorrutamine ja väärtuse omistamine +// Modulomultiplication and assigning value 
-// x saab väärtuse 9+// x gets value of 9
 x = (13 % 5) * 3; x = (13 % 5) * 3;
  
-// Liitev-omistav operaator +// Adding-assigning operator 
-// x väärtuseks saab 14+// x gets value of 14
 x += 5; x += 5;
  
-// Ühe lahutamise kiirmeetod +// Quick style method for subtracting 1 
-// x väärtuseks saab 13+// x gets value of 13
 x--; x--;
 </code> </code>
  
-==== Loogilised ====+==== Logical operators ====
  
-Loogilised tehted on eitus (!), loogiline korrutamine (&&ja loogiline liitmine (||). Näide tehete kasutamisest:+Logical operators are negation NOT (!), logic multiplication AND (&&and logic addition OR (||). Example about using them:
  
 <code c> <code c>
 bool a, b, c; bool a, b, c;
  
-// Algväärtustamine+// Initialization
 a = true; a = true;
 b = false; b = false;
  
-// Eitus +// Negation 
-// c väärtus tuleb väär sest tõest eitati+// c will get a value of false because a is true
 c = !a; c = !a;
  
-// Loogiline korrutamine +// Logic multiplication 
-// c väärtuseks tuleb väär, sest üks operandidest on väär+// c will get a value of false because one of the operators is false
 c = a && b; c = a && b;
  
-// Loogiline liitmine +// Logic addition 
-// c väärtus tuleb tõene, sest üks operandidest on tõene+// c will get a value of true because one of the operators is true
 c = a || b; c = a || b;
 </code> </code>
  
-**NB!** //bool// andmetüüp C-keeles tegelikult puudub, selle asemel on kasutusel täisarvud, kus tähistab väära ja iga muu arv tõest väärtustNäiteks Kodulabori teegis on defineeritud //bool// kui //unsigned char//Konstant //true// tähistab seal väärtust ja //false// väärtust 0.+**NB!** //bool// data type in C-language is actually missing and instead integers are used where marks false and every other value marks trueFor example, in HomeLab library //bool// is defined as //unsigned char//Constant //true// marks a value of and //false// a value of 0.
  
-==== Võrdlused ==== 
  
-Arvude väärtuste võrdlemisel saadakse loogilised väärtusedVõrdlustehted on samaväärsus (==), erinevus (!=), suurem (>), suurem-võrdne (>=), väiksem (<ja väiksem-võrdne (<=). Näide kasutamisest:+==== Relational and equality operators ==== 
 + 
 +Logical values are a result of comparison of variable valuesEquality operators are equal to (==), not equal to (!=), greater than (>), greater than or equal to (>=), less than (<and less than or equal to (<=). Exaple about using them:
  
 <code c> <code c>
 int x = 10, y = 1; int x = 10, y = 1;
  
-// Suurem-kui võrdlustehe, mis on tõene +// greater than operation which is true 
-// Tehte ümber on sulud vaid selguse pärast+// brackets around the operation are only for clarity
 bool b = (5 > 4); bool b = (5 > 4);
  
-// Erinevuse tehe +// Not equal to operation 
-// Tehte tulemus on väär+// The result is false
 b = (4 != 4); b = (4 != 4);
  
-// Aritmeetilinevõrdlus ja loogiline tehe üheskoos +// Arithmeticequality and logic operations alltogether 
-// b tuleb väär, sest esimene loogilise korrutise operand on väär+// b is false because the first operator of logic multiplication is false
 b = (x + 4 > 15) && (y < 4); b = (x + 4 > 15) && (y < 4);
 </code> </code>
  
-==== Bititehted ====+==== Bit operations ====
  
-Bititehted on andmetega binaarses arvusüsteemis tegelemiseksNeid saab rakendada kõigi täisarv-tüüpi andmetegaBititehted sarnanevad loogiliste tehetega, kuid erinevad selle poolest, et tehe teostatakse iga bitiga eraldi, mitte kogu arvuga. C keeles on bititeheteks inversioon (~), konjunktsioon (&), disjunktsioon (|), antivalentsus (^), nihe vasakule (<<ja nihe paremale (>>).+Bit operations are for data manipulation in binary numeral systemThese can be applied only to integer type dataBit operations are quite similar to logic operations but differ from them because operation is carried out with every single bit not the whole numberBit operations in C-language are inversion (~), conjunction (&), disjunction (|), antivalency (^), left shift (<<and right shift (>>).
  
 <code c> <code c>
-// Märgita 8-bitise char-tüüpi muutuja deklareerimine +// Declaration of unsigned bit char type variable 
-// Muutuja väärtus on kümnendsüsteemis 5, kahendsüsteemis 101+// Variable value is in decimal system, 101 in binary system
 unsigned char c = 5; unsigned char c = 5;
  
-// Muutuja disjunktsioon arvuga 2 (kahendsüsteemis 010) +// Disjunction of with a digit 2 (010 in binary
-// c väätuseks saab 7 (kahendsüsteemis 111)+// c value will become 7 (111 in binary)
 c = c | 2; c = c | 2;
  
-// Bitinihe vasakule võrra +// Bit left shift by 
-// c väärtuseks saab 28 (kahendsüsteemis 11100)+// c value will become 28 (11100 in binary)
 c = c << 2; c = c << 2;
 </code> </code>
  
-Bititehted on hädavajalikud mikrokontrollerite registrite kasutamiselTäpsemalt tutvustab neid AVR registrite peatükk.+Bit operations are essential when using the registers of microcontrollerThese are described in AVR register chapter.
  
-~~PB~~+<pagebreak>
  
-===== Funktsioonid =====+===== Functions =====
  
-Funktsioon on programmilõik, mida saab selle nime järgi täitmiseks välja kutsudaFunktsioonil võivad olla parameetrid ja funktsioon võib tagastada ühe väärtuseKui funktsioon ei tagasta väärtuston selle tüüp //void//Kui funktsioonil pole parameetreidtuleb vanemat C-keele kompilaatorit kasutades //void// kirjutada ka parameetrite deklaratsiooni asemeleNäide liitmisfunktsioonist ja tagastamisväärtuseta funktsioonist:+Functions are part of a program that can be called by its nameFunction can include parameters as input and can return one outputIf the function is not returning a parameterit has type //void//If the function has no parameters as its inputin older C-language compilers //void// must also be written besides parameter declarationExample about addition function and a function without return:
  
 <code c> <code c>
-// Kahe int tüüpi parameetriga funktsiooni deklareerimine +// Declaration of 2 int type parameter function 
-// Funktsioon tagastab int-tüüpi väärtuse+// The function returns int type value
 int sum(int a, int b) int sum(int a, int b)
 { {
- // Kahe arvu liitmine ja summa tagastamine+ // Addition of 2 variables and returning of their sum
  return a + b;  return a + b;
 } }
  
-// Ilma parameetrite ja tagastatava väärtuseta funktsioon+// Function without parameters and no return output
 void power_off(void) void power_off(void)
 { {
Line 254: Line 254:
 </code> </code>
  
-Funktsiooni kasutamiseks tuleb see välja kutsudaFunktsioon peab programmikoodis olema deklareeritud enne välja kutsumise kohta. Näide liitmisfunktsiooni väljakutsumisest.+To use a function, it must be calledIt is required that a function is declared before callExample about calling addition function:
  
 <code c> <code c>
Line 260: Line 260:
 int y = 3; int y = 3;
  
-// Liitmisfunktsiooni väljakutsumine+// Calling an addition function
 // Parameetriteks on muutuja ja konstandi väärtus // Parameetriteks on muutuja ja konstandi väärtus
 +// The parameters are variable and constant
 x = sum(y, 5); x = sum(y, 5);
  
-// Väljalülitamise funktsiooni väljakutsumine +// The call of a power off function 
-// Parameetrid puuduvad+// No parameters
 power_off(); power_off();
 </code> </code>
  
-C-keele programmi täitmist alustatakse //main// nimelisest funktsioonist, mis teeb selle kohustuslikuks funktsiooniks.+The execution of a C-language program is started from //main// function which makes it compulsory function.
  
-~~PB~~+<pagebreak>
  
-===== Laused =====+===== Statements =====
  
-==== Tingimuslause ====+==== If/Else statement ====
  
-Tingimuslause võimaldab vastavalt sulgudes oleva avaldise tõesusele täita või mitte täita tingimusele järgnevat lauset või programmilõiku. Tingimuslause võtmesõna on //if//Näide kasutamisest:+Conditional statements enable to execute or skip program code based on based on logic and relational operations. Conditional statement uses a keyword //if//Example about using it:
  
 <code c> <code c>
-// Avaldis on tõene ja lause x = 5 täidetakse, +// Statement is true and operation x = 5 will be executed 
-// sest 2 + 1 on suurem kui 2+// because 2 + 1 is higher than 2
 if ((2 + 1) > 2) x = 5; if ((2 + 1) > 2) x = 5;
  
-// Kui on ja on 3, siis täidetakse järgnev programmilõik+// If equals and equals then the following code will be executed
 if ((x == 5) && (y == 3)) if ((x == 5) && (y == 3))
 { {
- // Suvaline tegevus+ // Random action
  y = 4;  y = 4;
  my_function();  my_function();
Line 293: Line 294:
 </code> </code>
  
-Tingimuslause võib olla pikem ja sisaldada ka lauset või programmilõiku, mis täidetakse avaldise mittetõesuse korralSelleks tuleb //if// tingimuslause järel kasutada //else// võtmesõna.+//If// statement can be longer and include code which will be executed in case the statement is falseFor this, after //if// statement, //else// statement can be usedExample:
  
 <code c> <code c>
-// Kas on 5 ?+// Is equal with 5 ?
 if (x == 5) if (x == 5)
 { {
- // Suvaline tegevus+ // Random action
  z = 3;  z = 3;
 } }
-// Kui ei olnud 5, kas siis x on ?+// If this is false then might be equal with 6
 else if (x == 6) else if (x == 6)
 { {
- // Suvaline tegevus+ // Random action
  q = 3;  q = 3;
 } }
-// Kui ei olnud ega 6...+// If was not nor 6 ...
 else else
 { {
- // Suvaline tegevus+ // Random action
  y = 0;  y = 0;
 } }
 </code> </code>
  
-~~PB~~+<pagebreak>
  
-==== Valikulause ====+==== Switch statement ====
  
-Kui on vaja võrrelda avaldist mitme erineva väärtusegaon mõistlik kasutada valikulauset //switch// võtmesõnagaNäide kasutamisest:+When required to compare operations and variables with many different valuesit is reasonable to use comparison statement with //switch// keywordExample about using this:
  
 <code c> <code c>
 int y; int y;
  
-// Tingimuslause võrdlemiseks+// Switch statement for comparing y
 switch (y) switch (y)
 { {
- // y on 1 ?+ // is equal to 1 ?
  case 1:  case 1:
- // Suvaline tegevus+ // Random action
  function1();  function1();
  break;  break;
  
- // y on 2 ?+ // is equal to 2 ?
  case 2:  case 2:
- // Suvaline tegevus+ // Random action
  function2();  function2();
  break;  break;
  
- // Kõik muud juhtumid+ // All other cases
  default:  default:
- // Suvaline tegevus+ // Random action
  functionX();  functionX();
- // break lauset pole vaja+ // break operation not needed
- // kuna võrdlemine lõppeb nagunii+ // because the comparison ends anyway
 } }
 </code> </code>
  
-===== Tsüklid =====+===== Loops =====
  
-Tsüklitega saab programmilõiku täita mitmeid kordi.+Loops can be used for executing code several times.
  
-==== while ====+==== while loop ====
  
-//while// võtmesõnaga tähistatud programmilõiku täidetakse seni, kuni sulgudes olev avaldis on tõene.+Code marked with //while// keyword is executed until condition in brackets is trueExample:
  
 <code c> <code c>
 int x = 0; int x = 0;
  
-// Tsükkel kestab seni, kuni on väiksem kui 5+// Loop will execute until is smaller than 5
 while (x < 5) while (x < 5)
 { {
- // x suurendamine ühe võrra+ // x incrementation
  x++;  x++;
 } }
 </code> </code>
  
-~~PB~~+<pagebreak>
  
-==== for ====+==== for loop ====
  
-//for// võtmesõnaga tsükkel sarnaneb //while// tsüklile, kuid lisaks on sulgudes ära määratud enne tsüklit täidetav lause ja iga tsükli ajal täidetav lause.+//for// keyword loop is similar to //while// loop exept there are described operation executed before the loop and operation executed in the end of every loop cycleExample:
  
-Näide: 
 <code c> <code c>
 int i, x = 0; int i, x = 0;
  
-// Algul määratakse nulliksTsüklit täidetaks seni, kuni +// i is equal to 1 at the beginning of the loop
-// i on vähem kui 5. Iga tsükli lõpus suurendatakse ühe võrra+// Loop will be executed until is smaller than 5. 
 +// will be incremented in the end of every loop cycle.
 for (i = 0; i < 5; i++) for (i = 0; i < 5; i++)
 { {
- // x suurendamine võrra+ // x addition by 2
  x += 2;  x += 2;
 } }
  
-// Siinkohal tuleb väärtuseks 10+// here value is 10
 </code> </code>
  
-==== Tsüklis liikumine ====+==== Halting loops ====
  
-//while// ja //for// tsüklitest saab erandkorras väljuda //break// võtmesõnaga. //continue// võtmesõnaga saab alustada järgmist tsüklit ilma järgnevat koodi täitmata.+As and exception exit from //while// and //for// loops can be made with keyword //break//To start the next loop cycle without executing the remaining code in loop, //continue// keyword can be usedFor example:
  
 <code c> <code c>
 int x = 0, y = 0; int x = 0, y = 0;
    
-// Lõputu tsükkel, kuna on loogiline tõesus+// Infinite loop because is logic true
 while (1) while (1)
 {     {    
- // Tsüklist väljutakse, kui on saavutanud väärtuse 100+ // Exit the the loop cycle if becomes 100
  if (x >= 100) break;  if (x >= 100) break;
   
- // x suurendamine, et tsükkel kunagi lõppeks ka+ // x incrementation to end loop at some time
  x++;  x++;
    
- // Kui on 10 või vähem, siis alustatakse järgmist tsüklit+ // If is 10 or less then the next cycle is started
  if (x <= 10) continue;  if (x <= 10) continue;
    
- // y suurendamine+ // y incrementation
  y++;  y++;
 } }
  
-// Siinkohal on väärtus 90+// Here value is 90
 </code> </code>
  
-==== Tekstitöötlus ====+==== Text operations ====
  
-Tekstitöötlusfunktsioone on mikrokontrolleri puhul vaja eelkõige teksti kuvamiseks LCD ekraanile.+Text operations are needed for microcontrollers foremost for displaying characters and text on LCD.
  
 ==== sprintf ==== ==== sprintf ====
  
-sprintf funktsioon toimib sarnaselt C-keeles üldlevinud printf funktsioonigaErinevuseks on funktsiooni tulemuse väljastamine puhvrisse (muutujasse), mitte standard väljundisse.+//sprintf// function is similar to ordinary //printf// function commonly used in C-languageThe difference is that the result of this function is loaded into variable not standard output.
  
-tagastus = sprintf(muutujaparameetritega_tekstparameetrid);+return = sprintf(variableparameter_textparameters);
  
-  +Example:
-Näide:+
 <code c> <code c>
 int r = sprintf(buffer, "%d pluss %d on %d", a, b, a+b); int r = sprintf(buffer, "%d pluss %d on %d", a, b, a+b);
 </code> </code>
-Väärtustab muutuja vormindatud tekstiga, mis on antud funktsiooni 
-teisest kuni n parameetrini. Sprintf funktsioon lihtsustab keerulisemate 
-fraaside või lausete koostamist. Mugavam on kasutada tekstis muutujaid, mis 
-asendatakse väärtustega. Funktsioon tagastab muutujasse salvestatud teksti pikkuse. Vea korral tagastatakse negatiivne arv. 
  
-Näide:+It will load formated text into variable which is given from the function second to n parameter. //sprintf// will simplify composing more sophisticated statements. Easier is to use variables in text that will be replaced by values. Function returns the length of text loaded into variable. In case of error occurrence, negative value is returned. 
 + 
 +Example:
 <code c> <code c>
-  sprintf(x, "%d. on esimene", 1); +  sprintf(x, "%d. is first", 1); 
-  // sama tulemuse saaksime ka nii+  // the same result can be achieved also
-  x = "1. on esimene";+  x = "1. is first";
  
-  sprintf(x, "%s on %d aastat vana", "Juku", 10); +  sprintf(x, "%s is %d years old", "Juku", 10); 
-  // sama tulemuse saaksime ka nii+  // the same result can be achieved also
-  x = "Juku on 10 aastat vana";+  x = "Juku is 10 years old";
 </code> </code>
  
-%s ja %d on antud juhul parameetrid, mis asendatakse vastavalt muutjate +%s and %d are in this case parameters that will be repalaced accordingly by variable values which are the last parameters to function. The number of parameters must be the same as variables
-väärtustega, mis on funktsiooni viimasteks parameetriteksNiipalju, kui on +In the first examplethe parameter was %d which was replaced by variable value 1. In the second example parameters were %s and %d which were replaced by variable values "Juku" and 10. It was strictly in this order because %s was waiting value in form of a text and %d value of a numberThere are special variable descriptions for different data types:
-parameetreidpeab olema ka muutujaid. +
-Esimese näite puhul oli meil parameetriks %d, mis asendati muutuja +
-väärtusega 1. Teise näite puhul olid parameetriteks %s ja %d, mis asendati +
-vastavalt muutuja väärtustega "Juku" ja 10. +
-Just nimelt sellises järjekorras, sest %s ootab väärtust teksti kujul ja +
-%d numbrilist väärtustErinevate andmetüüpide jaoks on olemas vastavad +
-muutujate kirjeldused:+
  
-Parameeter      ^ Kirjeldus       ^ Näide     ^ +Parameter       ^ Description     ^ Example    
-| %c | Tähemärk     | a | +| %c | Char     | a | 
-| %i või %d    | Täisarv| 123 | +| %i or %d    | Integer| 123 | 
-| %f | Murdarv | 3,14 | +| %f | Real number | 3,14 | 
-| %s | Tekst   | näide+| %s | Text   | example
-| %X | Heksadetsimaalarv| 3F |+| %X | Hexadecimal number| 3F |
  
 <code c> <code c>
Line 470: Line 461:
   char buffer [50];   char buffer [50];
   int n, a=5, b=3;   int n, a=5, b=3;
-  n=sprintf (buffer, "%d pluss %d on %d", a, b, a+b); +  n=sprintf (buffer, "%d plus %d is %d", a, b, a+b); 
-  printf ("\"%s\" on %d markki pikk\n",buffer,n);+  printf ("\"%s\" is %d digits long\n",buffer,n);
   return 0;   return 0;
 } }
 </code> </code>
  
-==== Üldised utiliidid ====+==== General utilities ====
  
-Teegi standard library (stdlib.h) funktsioonide erinevate operatsioonide ja konverteerimiste lihtsustamiseks+Standard functions library (stdlib.h) includes functions to simplify different common operations and conversions.
  
-==== random ====+==== Random function ====
  
-Juhuarvude genereerimine ei olegi AVR kontrolleril väga lihtne.+Generating a random number is not so simple for AVR microcontroller.
  
-Esmalt tuleb juhunumbrigeneraator seemendada arvuga, mille järgi genereeritakse suvaliste numbrite jada. +At first the random number generator must be inputed with a number to be the basis of random number array generationThe array based on one number is always the sameTo make the result more random, the function can be inputed with a values taken from free floating ADC.
-Sama numbri järgi genereeritakse alati sama jadaSuvalisema tulemuse saamiseks võib seemendamiseks kasutada näiteks tühjast ADC-st loetud ujuvaid väärtusi.+
  
-Näide:+Example:
 <code c> <code c>
 srand(100); srand(100);
Line 493: Line 483:
 </code> </code>
  
-Näide, juhuarvu genereerimiseks vahemikus 16+Example about generating a random number in range of 16:
 <code c> <code c>
 #include <stdlib.h> #include <stdlib.h>
Line 502: Line 492:
  
  
-Põhjalikuma inglisekeelse kirjelduse keele funktsioonide kohta leiad aadressilt:+The more in-depth english description about C-language functions is in:
  
 [[http://www.cplusplus.com/reference/clibrary/|http://www.cplusplus.com/reference/clibrary/]] [[http://www.cplusplus.com/reference/clibrary/|http://www.cplusplus.com/reference/clibrary/]]
  
-~~DISCUSSION~~ 
en/programming/c/crashcourse.1338464713.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0