Užduotys su skaičiais nuo 1 iki n
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ų.
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
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
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ą()
|