Užduotys su skaičiais nuo 1 iki n

Iš wiki.angis.net.
Jump to navigation Jump to search

Užduotis: Skaičių suma nuo 1 iki n

Prieš pradėdamas spręsti užduotį prisimink!

Vienas iš būdų suprasti kaip veikia programavimo kalba - eksperimentuoti! Pasinaudojant ciklu “kartok” galima gauti įvairiausias skaičių sekas. Nukopijuok ir įvykdyk tokį kodą:

kartų = 0
kartok 10:
    kartų = kartų + 1
    rašyk(kartų)
 
rašyk("Galutinis kartų sk.: ", kartų)

Ką išspausdina programa? Kaip keičiasi kintamojo kartų reikšmė? O kas būtų jei pakeistume 3-ią eilutę į:

   kartų = kartų + 2

Kokia tuomet būtų galutinė kintamojo “kartų” reikšmė? Kai suprasi kaip tai veikia, gali pereiti prie užduočių.

Skaičių suma nuo 1 iki 7
Skaičių suma nuo 1 iki 7

Užduotis

Parašyk programą, kuri naudotojo paklausia skaičiaus n ir tuomet išspausdina skaičių nuo 1 iki n sumą. Pavyzdžiui, jeigu sugalvotas skaičius n = 7, tai programa turėtų sudėti visus skaičius nuo 1 iki 7. T.y. 1+2+3+4+5+6+7 ir parašyti atsakymą: Suma nuo 1 iki 7 yra: 28

Patarimas

Naudingos informacijos padėsiančios išspręsti šį lygį gali rasti puslapiuose apie modulį angis, duomenų tipus ir ketvirtoje Angies pamokoje.

1 Užuomina  
O jei susikurtum kintamąjį sumai išsaugoti?
2 Užuomina  
Jei jau turi skaičių seką (kintamąjį, kurio reikšmė cikle vis kita), pvz.: 1, 2, 3, …, kaip galėtum pakeisti kintamąjį suma, kad jis skaičiuotų bendrą šios skaičių sekos sumą?
Atsakymas  
reikalinga angis
 
skaičius = angis.paklauskSkaičiaus("Sakyk skaičių")
 
suma = 0
kitas_skaičius = 1
kartok(skaičius):
    suma = suma + kitas_skaičius
    kitas_skaičius = kitas_skaičius + 1
 
rašyk("Suma nuo 1 iki ", skaičius, " yra: ", suma)

Užduotis: Tam tikrų skaičių suma nuo 1 iki n

Prieš pradėdamas prisimink

Su kintamaisiais (jų reikšmėmis) galima atlikti veiksmus. Pavyzdžiui, juos sudėti:

a = 12
b = 7
c = a + b
rašyk(c)

Arba atimti:

a = 12
b = 7
c = a - b
rašyk(c)

Arba sudauginti:

a = 12
b = 7
c = a * b
rašyk(c)

Arba padalinti:

a = 12
b = 7
c = a / b
rašyk(c)

Arba gauti dalybos liekaną:

a = 12
b = 7
c = a % b
rašyk(c)

Kaip galėtumėm pasinaudoti dalybos liekanos operatoriumi “%”, kad nustatytumėm ar skaičius lyginis? Pamėgink įvykdyti tokį kodą:

skaičius = 5
liekana = 5 % 2
rašyk("Dalybos iš dviejų liekana:", liekana)

Pamėgink pakaitalioti skaičių ir pažiūrėk ką tuomet spausdina programa. Pamėgink tokį kodą ir pagalvok kaip jis veikia:

skaičius = 5
liekana = 5 % 2
 
jei(liekana == 0):
    rašyk(skaičius, " yra lyginis skaičius.")
kituatveju:
    rašyk(skaičius, " yra nelyginis skaičius.")

Skaičiaus galima ir paklausti programos naudotojo:

reikalinga angis
 
skaičius = angis.paklauskSkaičiaus("Sakyk skaičių: ")
liekana = skaičius % 2
 
jei(liekana == 0):
    rašyk(skaičius, " yra lyginis skaičius.")
kituatveju:
    rašyk(skaičius, " yra nelyginis skaičius.")

Kaip programa patikrina, kad skaičius yra lyginis? Nelyginis?

Užduotis

Tam tikrų skaičių nuo 1 iki n suma
Tam tikrų skaičių nuo 1 iki n suma

Pakoreguok praeitą programą taip, kad tik skaičiai, kurie dalinasi iš 3 arba iš 5 būtų priskaičiuojami į sumą, pavyzdžiui:Jeigu sugalvotas skaičius n = 17, tai programa atrenka tik tuos skaičius, kurie dalinasi iš 3 arba 5. Šiuo atveju nuo 1 iki 17 tinkantys skaičia yra 3, 5, 6, 9, 10, 12, 15, o atsakymas turėtų būti: Suma nuo 1 iki 17 (tik skaičių, kurie dalinasi iš 3 arba 5) yra: 60

Patarimas

Naudingos informacijos padėsiančios išspręsti šį lygį gali rasti puslapiuose apie modulį angis, duomenų tipus ir ketvirtoje Angies pamokoje.

Atsakymas  
reikalinga angis
 
skaičius = angis.paklauskSkaičiaus("Sakyk skaičių")
 
suma = 0
kitas_skaičius = 1
kartok(skaičius):
    jei((kitas_skaičius % 3 == 0) arba (kitas_skaičius % 5 == 0)):
        suma = suma + kitas_skaičius
    kitas_skaičius = kitas_skaičius + 1
 
rašyk(
    "Suma nuo 1 iki ", 
    skaičius,
    " (tik skaičių, kurie dalinasi iš 3 arba 5) yra: ", 
    suma
)

Užduotis: Patobulink programą, kad leistų rinktis tarp sumos ir sandaugos

Prieš pradėdamas prisimink

Sąlygos sakinį “jei”,”ojeigu”, “kituatveju” galima panaudoti, kad programa darytų skirtingus dalykus pagal naudotojo pasirinkimą.

Pamėgink įvykdyti tokį kodą:

reikalinga angis
 
skaičius = angis.paklauskSkaičiaus(
    "1. Duok labas.\n", #\n perkelia tekstą į kitą eilutę
    "2. Lok.\n",
    "3. Verskis."
)
 
jei(skaičius == 1): #jei - if
    rašyk("Labas!")
ojeigu(skaičius == 2): #ojeigu - elif
    rašyk("Au!")
ojeigu(skaičius == 3):
    rašyk("Verčiuosi.")
kituatveju: #kituatveju - else
    rašyk("Tokio dar nemoku.")

Kaip programa žino kokį tekstą parašyti? Kaip būtų galima pridėti naują pasirinkimą “4. Triskart sulok”?

Užduotis

Suma arba sandauga
Suma arba sandauga

Parašyk programą, kuri naudotojo paklausia skaičiaus n ir leidžia naudotojui pasirinkti ar apskaičiuoti sumą arba sandaugą skaičių nuo 1 iki n. Paavyzdžiui, tik atsidarius programą ji klausia mūsų skaičiaus, tarkime pasirenkame 7 ir tada programa klausia, ką norime paskaičiuoti ar skaičių nuo 1 iki 7 (1,2,3,4,5,6,7) sumą ar jų visų sandaugą. Jei spaudžiame 1, tai programa skaičiuoja sumą, tai atsakymas turėtų būti: Suma nuo 1 iki 7 yra: 28, jei spaudžiame 2, tai programa skaičiuoja sandaugą,ir atspausdina atsakymą: Sandauga nuo 1 iki 7 yra: 5040

Patarimas

Naudingos informacijos padėsiančios išspręsti šį lygį gali rasti puslapiuose apie modulį angis, ketvirtoje Angies pamokoje ir septintojoje Angies pamokoje.

Atsakymas  
reikalinga angis
 
skaičius = angis.paklauskSkaičiaus("Sakyk skaičių")
pasirinkimas = angis.paklauskSkaičiaus(
    "1. Paskaičiuoti sumą. \n 2. Paskaičiuoti sandaugą."
)
 
jei(pasirinkimas == 1):
    suma = 0
    kitas_skaičius = 1
    kartok(skaičius):
        suma = suma + kitas_skaičius
        kitas_skaičius = kitas_skaičius + 1
    rašyk("Suma nuo 1 iki ", skaičius, " yra: ", suma)
ojeigu(pasirinkimas == 2):
    kitas_skaičius = 1
    sandauga = 1
    kartok(skaičius):
        sandauga = sandauga * kitas_skaičius
        kitas_skaičius = kitas_skaičius + 1
    rašyk("Sandauga nuo 1 iki ", skaičius, " yra: ", sandauga)

Bonus

Pabandyk paskutinę programą patobulinti, pavyzdžiui, jeigu nenaudojai, tai naudok komandas. Tokį kodą lengviau skaityti ir plėsti.

Atsakymas  
reikalinga angis
 
skaičius = angis.paklauskSkaičiaus("Sakyk skaičių")
pasirinkimas = angis.paklauskSkaičiaus(
    "1. Paskaičiuoti sumą. \n 2. Paskaičiuoti sandaugą."
)
 
komanda skaičiuok_sumą():
    suma = 0
    kitas_skaičius = 1
    kartok(skaičius):
        suma = suma + kitas_skaičius
        kitas_skaičius = kitas_skaičius + 1
    rašyk("Suma nuo 1 iki ", skaičius, " yra: ", suma)
 
komanda skaičiuok_sandaugą():
    kitas_skaičius = 1
    sandauga = 1
    kartok(skaičius):
        sandauga = sandauga * kitas_skaičius
        kitas_skaičius = kitas_skaičius + 1
    rašyk("Sandauga nuo 1 iki ", skaičius, " yra: ", sandauga)
 
jei(pasirinkimas == 1):
    skaičiuok_sumą()
ojeigu(pasirinkimas == 2):
    skaičiuok_sandaugą()