Katse 3

Ülesanne nuppudega

skeem:

kirjeldus:

Meil on kaks nuppu, millest üks vastutab lambi sisselülitamise eest ja teine on vastutav selle väljalülitamise eest. Peamine adea on see, et siis kasutaja tahab valgust või mitte

kood:

const int button1Pin = 2;  //viik kunu on ühebdatud nupp1

const int button2Pin = 3; //viik kuhu on ühendatud nupp2

const int ledPin =  13;   

void setup()

{

  pinMode(button1Pin, INPUT); //algväärtuse nupu viigu sisendiks

  pinMode(button2Pin, INPUT); //algväärtuse nupu viigu sisendiks

  pinMode(ledPin, OUTPUT);   //algväärtuse LED viigu väljundiks
 

}

void loop()

{

  int button1State, button2State;  //nupu oleku muutujad

  button1State = digitalRead(button1Pin);// salvestame muutujasse nupu hetke väärtuse(HIGH või LOW)

  button2State = digitalRead(button2Pin);

  if (((button1State == LOW) || (button2State == LOW))   // kui nupu on alla vajutatud

      && !

      ((button1State == LOW) && (button2State == LOW))) // kui nupude on alla vajutatud

  {

    digitalWrite(ledPin, HIGH);  // lülitame LED sisse

  }

  else                          

  {

    digitalWrite(ledPin, LOW);  // lülitame LED välja

  }    	

  }

Ülesanne Photoresistoriga

skeem:

kirjeldus

siin on fotoresistor. Fotoresistori kasutatakse ddedektorit valguse ja teha midagi, siis on see tume või valgus. Siin töötab fotoresistor nii: kui on pime, siis süttib lamp, kui on pime, siis lülitab lamp välja.

kood:

const int sensorPin = 0;

const int ledPin = 9;

int lightLevel, high = 0, low = 1023; 

void setup()

{

  pinMode(ledPin, OUTPUT);

  Serial.begin(9600); // //Serial monitori seadistamine

}

void loop()

{

  // AnalogRead() kasutab väärtused vahemikus 0 (0 вольт) и 1023 (5 вольт).

  // AnalogWrite(),  kasutatakse, et LEDi sujuvalt sisselülitada 0(ei põle) kuni 255(põleb maksimalselt).
  lightLevel = analogRead(sensorPin); //loeme mõõdetud analoogväärtuse

  // Map() teisendab sisendi väärtused ühest vahemikust teisse. Näiteks, "from" 0-1023 "to" 0-255.

  // Constrain() saed muutujale kindlad piirväärtused.

  // Näiteks:  kui constrain() kohtub arvudega 1024, 1025, 1026.., siis ta teisendab need 1023, 1023, 1023..). Kui arvud vähem kui 0, siis teisendab need 0:. 

  // lightLevel = constrain(lightLevel, 0, 255);

  manualTune();  //

  //autoTune();  //

  analogWrite(ledPin, lightLevel);

  // Выражение выше, будет изменять яркость светодиода вместе с уровнем освещенности. Чтобы сделать наоборот, заменить в analogWrite(ledPin, lightLevel) "lightLevel" на "255-lightLevel". Теперь у нас получился ночник!

  Serial.print(lightLevel);     // prindime tulemused Serial Monitori (вывод данных с фоторезистора (0-1023))

  Serial.println("");          

  delay(1000);                

}

void manualTune()

{

  lightLevel = map(lightLevel, 300, 800, 0, 255); // kaardistame selle analoogväljundi vahemikku (будет от 300 темно, до 800 (светло)). 

  lightLevel = constrain(lightLevel, 0, 255);

} 

void autoTune()

{

   if (lightLevel < low)  

  {                      

    low = lightLevel;   

  }

  if (lightLevel > high)

  {

    high = lightLevel;

  }

  lightLevel = map(lightLevel, low+10, high-30, 0, 255);

  lightLevel = constrain(lightLevel, 0, 255);

katse 3

skeem:

Töö kirjeldus:

öövalgustus kahe režiimiga: päevarežiim ja öörežiim

Kasutatud komponendid:

  • Arduino Uno
  • 3x ledid
  • Fotoristor
  • Arendusplaat
  • 3x 220kΩ takistit
  • 1x 10kΩ takisti
  • 8x Juhtme

Töö protsess:

see öine valgus töötab koosneb 3 ledist, mõnest resistrsist ja fotorestorist. Põhiidee on see, et lambid põlevad siis, kui on pime, ja lülituvad välja siis, kui on pime.

kood:

const int ldrPin = A1;      // Photoresistor (LDR) connected to A1
const int ledPin1 = 10;     // LED 1 (Digital)
const int ledPin2 = 11;     // LED 2 (Digital)
const int ledPin3 = 12;     // LED 3 (PWM for brightness)

void setup() {
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
  Serial.begin(9600);  // Start serial communication
}

void loop() {
  // Read light level from LDR (0 = bright, 1023 = dark)
  int lightLevel = analogRead(ldrPin);

  // --- Control LED 1 (ON in complete darkness) ---
  if (lightLevel > 800) {
    digitalWrite(ledPin1, HIGH);  // Turn ON LED 1
  } else {
    digitalWrite(ledPin1, LOW);   // Turn OFF LED 1
  }

  // --- Control LED 2 (ON in moderate darkness) ---
  if (lightLevel > 500) {
    digitalWrite(ledPin2, HIGH);  // Turn ON LED 2
  } else {
    digitalWrite(ledPin2, LOW);   // Turn OFF LED 2
  }

  // --- Control LED 3 (PWM brightness, dim when dark) ---
  // Map LDR reading (200-800) to PWM brightness (0-255)
  int brightness = map(lightLevel, 200, 800, 0, 255);
  brightness = constrain(brightness, 0, 255);  // Limit to 0-255
  analogWrite(ledPin3, brightness);  // Set LED 3 brightness

  // Print light level to Serial Monitor
  Serial.print("Light Level: ");
  Serial.println(lightLevel);

  delay(100);  // Small delay for stability
}

Uued funktsioonid:

if (lightLevel > lightThreshold) – Kui valgustase on suurem kui läviväärtus, siis täidetakse esimene koodiblokk.

Video:

Uued funktsioonid:

if (lightLevel > lightThreshold) – Kui valgustase on suurem kui läviväärtus, siis täidetakse esimene koodiblokk.

Katse 2

Peamine ülesanne:

Mulle ja minu partnerile Maksimile tehti ülesandeks luua valguskett

Asjad, mida me vajasime ja kasutasime:

Arendusplaat (Arendusplaat pakub kõike vajalikku mikrokontrolleriga mugavaks töötamiseks),

4x RGB-LED (LED-moodul, mis suudab toota peaaegu kõiki värve, kasutades neid kolme peamist lisavärvi: Punane, roheline ja sinine),

12x 220 (OM) resistorit (Takisti on passiivne kahetermiline elektrooniline komponent, mis rakendab elektritakistust vooluahela elemendina),

1x 10k(OM) potenrsiomeeter (Potentsiomeeter on käsitsi reguleeritav muutuvtakisti, millel on 3 klemmi),

Juhtmed ühenduste loomiseks (juht lihtsalt liigutab elektrit),

Makettplaat komponentide paigutamiseks (Makettplaat koosneb elektrit mitte juhtivast plaadist)

Ühendamise skeem:

Meie lampidel on erinevad režiimid ja need on määratud potentsoimeetri pöörlemisega.

Sisekood:

// RGB-LED-ide ühendused
const int RGB_PINS[4][3] = {
  {13, 5, 9},   // LED 1: R, G, B
  {12, 4, 8},   // LED 2
  {11, 3, 7},   // LED 3
  {10, 2, 6}    // LED 4
};

see osa kirjandus ütleb meile, et traat on ühendatud nendes kohtades. See on näha pildil.

const int POT_PIN = A0;  // Potentsiomeeter

void setup() {
  // kõik LED-ide pinnid
  for (int i = 0; i < 4; i++) {
    for (int j = 0; j < 3; j++) {
      pinMode(RGB_PINS[i][j], OUTPUT);
    }
  }
  Serial.begin(9600);
}

void loop() {
  int potValue = analogRead(POT_PIN);
  int mode = map(potValue, 0, 1023, 1, 5);
  mode = constrain(mode, 1, 5);

  Serial.print("Reziim: ");
  Serial.println(mode);

  switch (mode) {
    case 1: allOn(); break;
    case 2: waveEffect(); break;
    case 3: colorCycle(); break;
    case 4: redYellowAlternate(); break;
    case 5: discoEffect(); break;
  }
}

paneb potentsiomeetri seaded ja režiimid

// REŽIIMID

// 1. Kõik LED-id valged
void allOn() {
  // Valged LED-id
  setColor(0, 255, 255, 153);
  setColor(1, 255, 255, 255);
  // Sinised LED-id
  setColor(2, 255, 255, 255);
  setColor(3, 255, 255, 153);
  delay(500);
}

// 2. Laineefekt
void waveEffect() {
  for (int i = 0; i < 4; i++) {
    setColor(i, 0, 255, 0); // Roheline
    delay(100);
    setColor(i, 0, 0, 0);
  }
  for (int i = 3; i >= 0; i--) {
    setColor(i, 0, 0, 255); // Sinine
    delay(100);
    setColor(i, 0, 0, 0);
  }
}

// 3. Värvide tsükkel
void colorCycle() {
  // Punane
  for (int i = 0; i < 4; i++) setColor(i, 255, 0, 0);
  delay(500);
  // Roheline
  for (int i = 0; i < 4; i++) setColor(i, 0, 255, 0);
  delay(500);
  // Sinine
  for (int i = 0; i < 4; i++) setColor(i, 0, 0, 255);
  delay(500);
  // Kollane
  for (int i = 0; i < 4; i++) setColor(i, 255, 255, 0);
  delay(500);
}

// 4. Küünlaefekt (kollased toonid)
void redYellowAlternate() {
  // Esimene kombinatsioon: LED 1-2 punased, LED 3-4 kollased
  setColor(0, 255, 0, 0);
  setColor(1, 255, 255, 0);
  setColor(2, 255, 0, 0);
  setColor(3, 255, 255, 0);
  delay(500);
  
  // Teine kombinatsioon: LED 1-2 kollased, LED 3-4 punased
  setColor(0, 255, 255, 0);
  setColor(1, 255, 0, 0);
  setColor(2, 255, 255, 0);
  setColor(3, 255, 0, 0);
  delay(500);
}

// 5. Diskoefekt
void discoEffect() {
  for (int i = 0; i < 4; i++) {
    setColor(i, random(0, 255), random(0, 255), random(0, 255));
  }
  delay(100);
}

režiimid ja mida nad teevad

// Abifunktsioon LED-i värviseadistuseks
void setColor(int led, int r, int g, int b) {
  analogWrite(RGB_PINS[led][0], r);
  analogWrite(RGB_PINS[led][1], g);
  analogWrite(RGB_PINS[led][2], b);
}

lülitage kõik välja

Video:

Katse 1

Näidis 1:

Selles näites näete, et LED valgustus (antud olukorras punane) süttib sertan korda. Seda saab kasutada erinevate mustrite loomiseks, täpselt nagu koodis morse!

void setup()

{

  // pinMode() määrab töörežim

  pinMode(13, OUTPUT);   // 13-pini number, INPUT/OUTPUT(Sisend/Väljund).

}

void loop()

{

  digitalWrite(13, HIGH);   // Lülita sisse

  delay(1000);              // Ootab 1 sek  

  digitalWrite(13, LOW);    // Lülita välja

  delay(3000);              // Ootab 3 sek

  
  
  digitalWrite(13, HIGH);   // -... .- .-.. .-.. ...

  delay(3000);               

  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);
  
  delay(1000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);
  
  delay(1000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);
  
  delay(1000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);
  
  delay(1000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);

  delay(3000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);

  delay(1000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);

  delay(3000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);

  delay(1000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);

  delay(1000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);

  delay(1000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);

  delay(3000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);

  delay(1000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);

  delay(3000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);

  delay(3000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);

  delay(3000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);

  delay(3000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  
  
  
  
  
  
  digitalWrite(13, HIGH);   // -... .- .-.. .-.. ...

  delay(1000);              // Ootab 1 sek  

  digitalWrite(13, LOW);    // Lülita välja

  delay(3000);
}

Näidis 2:

Sellel pildil on emaplaat, mis on saanud koodi, mis annab edasi leivaplaadi ja RGB-lambi.

Seal on transistorid mille vältida liiga palju võimu läheb lamp, sest me ei taha, et kogu asi põlema minna.

Kasutan Arduino, laendusplaat, juhtmed, 3 transistoridit (220 om) ja 1 RGB lamp

kood:

const int RED_PIN = 11;

const int GREEN_PIN = 9;

const int BLUE_PIN = 10;

int DISPLAY_TIME = 100;  // värvimuutuse kiirus

void setup()

{

  pinMode(RED_PIN, OUTPUT);

  pinMode(GREEN_PIN, OUTPUT);

  pinMode(BLUE_PIN, OUTPUT);

}

void loop()

{

mainColors();

showSpectrum();

}

void mainColors()

{

// Kõik LEDid on välja lülitatud

  digitalWrite(RED_PIN, LOW);

  digitalWrite(GREEN_PIN, LOW);

  digitalWrite(BLUE_PIN, LOW);

 delay(1000);

//Põleb punane

  digitalWrite(RED_PIN, HIGH);

  digitalWrite(GREEN_PIN, LOW);

  digitalWrite(BLUE_PIN, LOW);

  delay(1000);

// Põleb roheline

  digitalWrite(RED_PIN, LOW);

  digitalWrite(GREEN_PIN, HIGH);

  digitalWrite(BLUE_PIN, LOW);

  delay(1000);

// Sinine on sisse lülitatud

  digitalWrite(RED_PIN, LOW);

  digitalWrite(GREEN_PIN, LOW);

  digitalWrite(BLUE_PIN, HIGH);

  delay(1000);

// Kollane.

  digitalWrite(RED_PIN, HIGH);

  digitalWrite(GREEN_PIN, HIGH);

  digitalWrite(BLUE_PIN, LOW);

  delay(1000);

// Lilla

  digitalWrite(RED_PIN, LOW);

  digitalWrite(GREEN_PIN, HIGH);

  digitalWrite(BLUE_PIN, HIGH);

  delay(1000);

//Roosa

  digitalWrite(RED_PIN, HIGH);

  digitalWrite(GREEN_PIN, LOW);

  digitalWrite(BLUE_PIN, HIGH);

  delay(1000);

//Valge ehk kõik on sisse lülitatud

  digitalWrite(RED_PIN, HIGH);

  digitalWrite(GREEN_PIN, HIGH);

  digitalWrite(BLUE_PIN, HIGH);

  delay(1000);

}

// Vikerkaar. 

void showSpectrum()

{

  int x;

  for (x = 0; x < 768; x++)

  {

    showRGB(x);  // 

    delay(10);   // paus 0,001 sek

  }

}

// ShowRGB()  põhivärvid: 

// 0 = punane 

// 255 = roheline

// 511 = sinine

// 767 = jälle punane 

void showRGB(int color)

{

  int redIntensity;

  int greenIntensity;

  int blueIntensity;

  if (color <= 255)                

  {

    redIntensity = 255 - color;    // lülitakse välja punane

    greenIntensity = color;        // lülitakse sisse roheline

    blueIntensity = 0;             // sinine on välja lülitatud

  }

  else if (color <= 511)          

  {

    redIntensity = 0;                     // punane on välja lülitatud

    greenIntensity = 255 - (color - 256); 

    blueIntensity = (color - 256);        

  }

  else if (color >= 512)             

  {

    redIntensity = (color - 512);        

    greenIntensity = 0;                  

    blueIntensity = 255 - (color - 512);  

  }

  analogWrite(RED_PIN, redIntensity); // punase LED´i sujuv ümberlülitamine

  analogWrite(BLUE_PIN, blueIntensity);

  analogWrite(GREEN_PIN, greenIntensity);

}

Põhimõtteliselt toimib see nii, et see silub üleminekuid värvide vahel.

Katse 1 / Sissetöö

Mida ja miks?

Põhimõtteliselt see, mida ma tegin, on valgusfoor, et saada kogemusi robotite ehitamise alustega.

Selle töö jaoks kasutasin saiti nimega “Tinkercard“.

Mida ma kasutasin?

8 juhet,

5 resisotorit,

2 LED RBG lapmit

(allpool on pilt)

Mida nad on?

RGB LED on LED-moodul, mis suudab toota peaaegu kõiki värve, kasutades neid kolme peamist lisavärvi: Punane, roheline ja sinine.

Resistor on passiivne kahetermiline elektrooniline komponent, mis rakendab elektritakistust vooluahela elemendina.

Juhe on painduv juht, mida kasutatakse elektrienergia ja informatsiooni edastamiseks.

Kuidas see töötab?

Mis kõik komponendid võimu läheb läbi juhtmed ja tuled üles tuled. Takistid kontrollivad, kui palju energiat läheb lampidesse (ja nii ei põle).

(allpool on video nagu see toimib tegelikus elus)

Kood:

// esimene RGB-LED
const int RED_PIN = 11;
const int GREEN_PIN = 9;
const int BLUE_PIN = 10;

// teine RGB-LED
const int RED_PIN_2 = 7;
const int GREEN_PIN_2 = 5;
const int BLUE_PIN_2 = 6; 

siin ma panen mitu värvid ja läbi, mida pinadesse minna

// Traffic light timings (in milliseconds)
const int RED_TIME = 5000;       // 5 seconds red
const int RED_YELLOW_TIME = 2000; // 2 seconds red+yellow
const int GREEN_TIME = 5000;     // 5 seconds green
const int YELLOW_TIME = 2000;    // 2 seconds yellow

Ma olin laisk panema mingeid numbreid sinna, nii et ma olen pannud need omadused

void setup() {
  pinMode(RED_PIN, OUTPUT);
  pinMode(GREEN_PIN, OUTPUT);
  pinMode(BLUE_PIN, OUTPUT);
  
  pinMode(RED_PIN_2, OUTPUT);
  pinMode(GREEN_PIN_2, OUTPUT);
  
  // Start with all lights off
  digitalWrite(RED_PIN, LOW);
  digitalWrite(GREEN_PIN, LOW);
  digitalWrite(BLUE_PIN, LOW);
}

pin-režiimide panemine ja kõigi tulede väljalülitamine

void loop() {
  // Red light
  digitalWrite(GREEN_PIN_2, HIGH);
  digitalWrite(RED_PIN, HIGH);
  digitalWrite(GREEN_PIN, LOW);
  digitalWrite(BLUE_PIN, LOW);
  delay(RED_TIME);
 
  
  // Green light
  digitalWrite(GREEN_PIN_2, LOW);
  digitalWrite(RED_PIN, LOW);
  digitalWrite(GREEN_PIN, HIGH);
  digitalWrite(RED_PIN_2, HIGH);
  digitalWrite(BLUE_PIN, LOW);
  delay(GREEN_TIME);
  
  // Yellow light
  digitalWrite(RED_PIN_2, LOW);
  digitalWrite(RED_PIN_2, HIGH);
  digitalWrite(RED_PIN, HIGH);
  digitalWrite(GREEN_PIN, HIGH);
  digitalWrite(BLUE_PIN, LOW);
  delay(YELLOW_TIME);
  digitalWrite(RED_PIN_2, LOW);
}

Esimene lamp on suur, see suunab mulle pärast ühte või teist konkreetset tegevust näitab, mida teine lamp peaks tegema.
kui Sa tahad edasi vaadata vaata kommentaare

Video: 。◕‿‿◕。

Uued funktsioonid:
void loop()

(See on sisseehitatud Arduino funktsioon, mis
käivitub korduvalt pärast setup() funktsiooni. Siia kirjutatakse
programmi põhiloogika.)

digitalWrite(pin, value)

(See funktsioon seab digitaalse pin’i väärtuseks kas HIGH (sees) või LOW (väljas). Seda kasutatakse näiteks LED-ide sisse või välja
lülitamiseks.)

delay(ms)

(Peatab programmi kindlaks ajaks millisekundites. Näiteks delay(1000) peatab programmi üheks sekundiks)

Kasutaja loomine XAMPP’is

Tee lahti config,php fail Apache konsoolis

Seda on vaja —-> et tuleb sisse logimise aken

(See asub kus “phpMyAdmin” on)

Uue kasutaja loomine

CREATE USER 'Hussein'@'localhost' IDENTIFIED VIA mysql_native_password USING '***';GRANT USAGE ON *.* TO 'Hussein'@'localhost' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0; 

Lisa akasutaja nimega sekretaar /parool -kala, kes saab retseptiraamatud vaadata ja uuendata andmeid(SELECT/UPTADE)

Lisa kasutaja nimega sekretaar / parool -kala, kes saab retseptiraamat vaadata ja uuendata andmeid(SELECT/UPTADE)

Foorum: TABEL/PROTSEDUURID

SQL ADMINISTRATOR (vaata alla XMAPP)

CREATE DATABASE arvaLoodust;

Create table puu(
puuId int Primary Key identity(1,1),
puudeHulk int,
puuNimi varchar(30),
puuKõrgus int);

-- seeing it
Select * from puu;
-- deleting it if I am confused 
DROP TABLE puu;
-- I wasn't told how to add so :P
Insert into puu(puudeHulk, puuNimi, puuKõrgus)
values (1, 'MegaTree', 200)

Insert into puu(puudeHulk, puuNimi, puuKõrgus)
values (2, 'Honourtree', 30)

Insert into puu(puudeHulk, puuNimi, puuKõrgus)
values (3, 'ObagTree', 20)

-- Created a procedure to count and calculate (what I have been told)
CREATE PROCEDURE kokkuPuu

AS
BEGIN
SELECT count(*) AS 'puu arv', AVG(puuKõrgus) AS 'keskimine puu kõrgus', MAX(puuKõrgus) AS 'maximum puuKõrgus', Min(puuKõrgus) AS 'minimum puuKõrgus'
FROM puu;
END;

EXEC kokkuPuu;

-- adding more tress
CREATE PROCEDURE AddMoreTrees
@pHulk int,
@pnimi varchar(30),
@pKõrgus int
AS
BEGIN
Insert into puu(puudeHulk, puuNimi, puuKõrgus)
values (@pHulk, @pnimi, @pKõrgus);
SELECT * from puu

END;

-- adding more
EXEC AddMoreTrees @pHulk = 4, @pnimi='obamium', @pKõrgus=56


DELETE FROM puu WHERE puuID=4;

--Now... DESTROYING THEM   >:3
CREATE PROCEDURE BurningDownTheTress
@deleteID int
AS
BEGIN
SELECT * from puu;
DELETE FROM puu WHERE puuID=@deleteID;
SELECT * from puu;

END;

drop procedure BurningDownTheTress;

--DESTROY
EXEC BurningDownTheTress 5;

SQL/XMAPP

BEGIN
SELECT count(*) AS 'puu arv', AVG(puuKõrgus) AS 'keskimine puu kõrgus', MAX(puuKõrgus) AS 'maximum puuKõrgus', Min(puuKõrgus) AS 'minimum puuKõrgus'
FROM puu;
END
BEGIN
Insert into puu(puudeHulk, puuNimi, puuKõrgus)
values (pHulk, pnimi, pKõrgus);

END
BEGIN
SELECT * from puu;
DELETE FROM puu WHERE puuID=deleteID;
SELECT * from puu;

END

C# põhialused

See on C# alus, seal on koodinäiteid, teemasid ja palju muud. (See keel ei ole algajatele sõbralik >:[ )

1. Põhi ja projekti loomine

C# programm koosneb nimiruumist (namespace), klassist ja meetoditest. Peamine käivituskoht on Main() meetod.
Muutujad saavad erinevaid andmetüüpe: täisarvud (int), ujukomaarvud (float, double), tekst (string), tõeväärtus (bool), märk (char).
Arvutamine toimub põhioperaatoritega (+, -, *, /, %).
Lisaks toetab C# stringide ühendamist (+ ja interpoleerimine).

Näide kood:

int a = 1000;
Console.WriteLine("Tere tulemast!");
string tekst = Console.ReadLine();
Console.WriteLine($"Teie sisestatud tekst on: {tekst}");

Console.Write($"Esimene arv on {a}, siseta b: ");
int b = int.Parse(Console.ReadLine());
Console.WriteLine($"Summa on: {a + b}");

Uued funktsioonid:

  • Console.WriteLine() ja Console.ReadLine() – sisend/väljund.
  • int.Parse() / double.Parse() – teisendamine tekstist arvuks.
  • String interpolation $”{…}”.
  • Random rnd = new Random(); rnd.Next(1, 11); – juhuarvu genereerimine.

2. Valikukonstruktsioonid

Valikukonstruktsioonid juhivad programmi kulgu tingimuste alusel.

Switch-case: kasulik, kui on palju diskreetseid valikuid (nt kuunimed, menüü valikud).
Loogikaoperaatorid (&&, ||, !) kombineerivad tingimusi.
If-else: kontrollib, kas tingimus on tõene või väär.
Else-if: võimaldab mitmeid astmelisi valikuid.

Näide kood:

if (vanus > 0 && vanus < 6)
    hinnatyyp = "Tasuta";
else if (vanus >= 6 && vanus <= 14)
    hinnatyyp = "Lastepilet";
else if (vanus >= 15 && vanus <= 65)
    hinnatyyp = "Täispilet";
else
    hinnatyyp = "Vale vanus";
switch (kuunr)
{
    case 1: kuu = "jaanuar"; break;
    case 2: kuu = "veebruar"; break;
    ...
    default: kuu = "Vale kuu number"; break;
}

Uued funktsioonid:

  • if, else if, else.
  • switch (value) { … }.
  • Loogikaoperaatorid (&&, ||, !).

3. Kordused, massiivid ja klassid

Kordused võimaldavad sama koodi plokki korduvalt täita:

  • for tsükkel, kui korduste arv on teada.
  • while, kui korduste arv sõltub tingimusest.
  • do-while, kui tuleb tingimust kontrollida alles pärast esimest käivitust.
  • foreach, kui soovitakse läbida kogumit, nt massiiv või List.

Massiiv on kindla suuruse ja ühtlase andmetüübiga elementide kogum.
Klassid kirjeldavad objekte, neil võivad olla omadused (fields, properties) ja meetodid. See on OOP (objektorienteeritud programmeerimise) põhi.

Näide kood:

for (int i = 0; i < 10; i++)
{
    Console.WriteLine(i + 1);
}

int[] arvud = new int[10];
for (int i = 0; i < 10; i++)
{
    arvud[i] = Random.Shared.Next(1, 101);
}
foreach (int arv in arvud)
{
    Console.WriteLine(arv);
}

Klassi näide:

public class Inimene
{
    public string Nimi;
    public int Vanus;
    public void PrindiAndmed()
    {
        Console.WriteLine($"Nimi: {Nimi}, Vanus: {Vanus}");
    }
}

Uued funktsioonid:

  • for, while, do … while, foreach.
  • Massiiv (int[]).
  • OOP põhi – class, konstruktor, omadused (public string Nimi).

4. Failitöötlus

Failid võimaldavad andmete püsivat salvestamist ja lugemist.

Faili teega töötamiseks kasutatakse Path.Combine().
Failitöötlus tuleb alati panna try-catch plokki vigade vältimiseks.

Tekstifailid: lugemine (StreamReader, File.ReadAllText(), File.ReadAllLines()), kirjutamine (StreamWriter, File.WriteAllText()).

Näide kood:

// Faili kirjutamine
StreamWriter text = new StreamWriter(path, true);
text.WriteLine("Uus rida");
text.Close();

// Faili lugemine
string laused = File.ReadAllText(path);
Console.WriteLine(laused);

// Faili reahaaval lugemine
foreach (string rida in File.ReadAllLines(path))
{
    Console.WriteLine(rida);
}

Uued funktsioonid:

  • File.ReadAllText(), File.ReadAllLines().
  • StreamReader, StreamWriter.
  • Sõne töötlemine rea kaupa (foreach rida failist).
  • Faili tee ühendamine: Path.Combine().

5. Kollektsioonid, Listid ja sõnastikud

Kollektsioonid on paindlikumad kui tavalised massiivid.

LINQ laiendmeetodid (nt Sum(), Average(), First()), mis lubavad kogumeid analüüsida.
List<T>: sarnane massiivile, kuid elementide arvu saab muuta. Toetab meetodeid nagu Add(), Remove(), Sort().
Dictionary<TKey,TValue>: andmestruktuur võtme-väärtuse paaridega. Võimaldab kiiresti andmeid otsida võtme järgi.

Näide kood:

List&lt;string> nimed = new List&lt;string>();
nimed.Add("Mari");
nimed.Add("Kati");
nimed.Sort();

Dictionary&lt;string, string> maakonnad = new Dictionary&lt;string, string>();
maakonnad["Harjumaa"] = "Tallinn";
maakonnad["Tartumaa"] = "Tartu";

if (maakonnad.ContainsKey("Harjumaa"))
    Console.WriteLine(maakonnad["Harjumaa"]);

Uued funktsioonid:

  • Kollektsioonid: List<T>, Dictionary<TKey, TValue>.
  • Meetodid: Add(), Remove(), Sort(), ContainsKey().
  • LINQ meetodid (nt Sum(), Average()).