Difference between revisions of "Clasa a V-a lecția 2 - 14 sep 2019"

From Algopedia
Jump to: navigation, search
(Exerciții)
(Tema)
(One intermediate revision by the same user not shown)
Line 1: Line 1:
 +
== Tema - rezolvări ==
 +
* Din ce sînt produse stafidele? '''Răspuns''': stafidele sunt produse din struguri, prin uscare.
 +
* De ce este cald vara și frig iarna? '''Răspuns''': vara este cald datorită unghiului de incidență a razelor soarelui și a timpului de expunere la soare (ziua este mai lungă).
 +
* Sînt 10 oameni numerotați de la 1 la 10. Omul cu numărul 1 spune "fix unul dintre noi minte". Omul cu numărul 2 spune "fix doi dintre noi mințim". Și așa mai departe, al nouălea om spune "fix nouă dintre noi mințim", iar al zecelea susține că "toți mințim". Cine minte și cine spune adevărul?<br/><br/>'''Răspuns''': remarcăm că maxim unul dintre ei spune adevărul, căci dacă ar spune doi cele două afirmaţii ar fi contradictorii. Rămîn două variante: un om spune adevărul, sau nici unul. Dacă nici unul nu ar spune adevărul ar rezulta că omul 10 spune adevărul, deci nu se poate. Dacă unul singur spune adevărul rezultă că omul nouă este singurul care are dreptate. Aceasta este şi soluţia finală.
 +
* Ce număr trebuie completat în ultima figură:
 +
[[Image:puzzle-numere-poligoane.gif|frame|none|Cu ce se înlocuiește semnul întrebării?]]
 +
'''Răspuns''': în ultima figură trebuie pus 5. Regula este că suma dintre numărul din interior și numărul laturilor poligonului este 8:
 +
[[Image:puzzle-numere-poligoane-rezolvare.gif|frame|none|Rezolvare ultima figură din secvență]]
 +
* Puzzle: vine fluxul, urcă trei sferturi de metru pe sfert de oră. Vaporul are 3 metri jumate de la apă pînă sus la buză. În cît timp se va revărsa apa în vapor?<br/><br/>'''Răspuns''': apa nu se va revărsa niciodată în vapor deoarece vaporul se ridică odată cu apa. A fost o întrebare capcană.
 +
 +
 
== Programarea structurată ==
 
== Programarea structurată ==
 
Programarea structurată este un mod de a scrie scheme logice care îmbunătățește claritatea, citibilitatea, calitatea și ușurința modificării ulterioare. Denumirea vine de la ''Programarea cu structuri''. Mai exact, programarea structurată ne limitează modul în care putem folosi și îmbina blocurile. Ele pot fi aranjate în trei feluri distincte, conform unor modele numite structuri. În continuare vom studia două dintre aceste structuri.
 
Programarea structurată este un mod de a scrie scheme logice care îmbunătățește claritatea, citibilitatea, calitatea și ușurința modificării ulterioare. Denumirea vine de la ''Programarea cu structuri''. Mai exact, programarea structurată ne limitează modul în care putem folosi și îmbina blocurile. Ele pot fi aranjate în trei feluri distincte, conform unor modele numite structuri. În continuare vom studia două dintre aceste structuri.
Line 78: Line 89:
 
* Schemă logică: se citesc trei numere, a, b și c. Să se afișeze în ordine crescătoare. Exemplu: dacă a = 8, b = 4, c = 12, se va afișa 4 8 12.
 
* Schemă logică: se citesc trei numere, a, b și c. Să se afișeze în ordine crescătoare. Exemplu: dacă a = 8, b = 4, c = 12, se va afișa 4 8 12.
  
Rezolvări aici [http://solpedia.francu.com/wiki/index.php/Clasa_a_V-a_lec%C8%9Bia_1_-_1_sep_2017]
+
Rezolvări aici [http://solpedia.francu.com/wiki/index.php/Clasa_a_V-a_lec%C8%9Bia_2_-_14_sep_2019]

Revision as of 11:45, 13 September 2019

Tema - rezolvări

  • Din ce sînt produse stafidele? Răspuns: stafidele sunt produse din struguri, prin uscare.
  • De ce este cald vara și frig iarna? Răspuns: vara este cald datorită unghiului de incidență a razelor soarelui și a timpului de expunere la soare (ziua este mai lungă).
  • Sînt 10 oameni numerotați de la 1 la 10. Omul cu numărul 1 spune "fix unul dintre noi minte". Omul cu numărul 2 spune "fix doi dintre noi mințim". Și așa mai departe, al nouălea om spune "fix nouă dintre noi mințim", iar al zecelea susține că "toți mințim". Cine minte și cine spune adevărul?

    Răspuns: remarcăm că maxim unul dintre ei spune adevărul, căci dacă ar spune doi cele două afirmaţii ar fi contradictorii. Rămîn două variante: un om spune adevărul, sau nici unul. Dacă nici unul nu ar spune adevărul ar rezulta că omul 10 spune adevărul, deci nu se poate. Dacă unul singur spune adevărul rezultă că omul nouă este singurul care are dreptate. Aceasta este şi soluţia finală.
  • Ce număr trebuie completat în ultima figură:
Cu ce se înlocuiește semnul întrebării?

Răspuns: în ultima figură trebuie pus 5. Regula este că suma dintre numărul din interior și numărul laturilor poligonului este 8:

Rezolvare ultima figură din secvență
  • Puzzle: vine fluxul, urcă trei sferturi de metru pe sfert de oră. Vaporul are 3 metri jumate de la apă pînă sus la buză. În cît timp se va revărsa apa în vapor?

    Răspuns: apa nu se va revărsa niciodată în vapor deoarece vaporul se ridică odată cu apa. A fost o întrebare capcană.


Programarea structurată

Programarea structurată este un mod de a scrie scheme logice care îmbunătățește claritatea, citibilitatea, calitatea și ușurința modificării ulterioare. Denumirea vine de la Programarea cu structuri. Mai exact, programarea structurată ne limitează modul în care putem folosi și îmbina blocurile. Ele pot fi aranjate în trei feluri distincte, conform unor modele numite structuri. În continuare vom studia două dintre aceste structuri.

Structura liniară

Se mai numește și structură de calcul. Ea constă dintr-o înșiruire de blocuri de calcul și blocuri de citire/scriere.

Structura liniară

Structura alternativă

Structura alternativă este compusă dintr-un bloc de decizie, două ramuri de execuție, DA și NU, care se reunesc la final.

Structura alternativă

Exerciții

Exerciții de folosire a structurilor liniară și alternativă.

Extragerea primei cifre

Se citește n, un număr natural strict mai mic decît 100. Să se afișeze prima cifră a lui n.
Prima cifră a lui n, n < 100

Cifre impare

Se citește un număr n. Se știe că 1 ≤ n < 100. Să se spună dacă toate cifrele lui n sînt impare.

Iată două posibile soluții:

Toate cifrele lui n sînt impare, varianta 1
Toate cifrele lui n sînt impare, varianta 2

Care din ele este mai bună? Din nou, cele două scheme logice par apropiate, dar atunci cînd n crește (cînd numărul lui de cifre este mai mare), prima schemă logică se dublează cu fiecare cifră în plus, pe cînd cea de-a doua adaugă o singură structură alternativă, deci a doua schemă logică este mai bună.

Maximul a trei numere

Se citesc trei numere, a, b și c. Să se afișeze valoarea maximă.

Iată două posibile soluții:

maximul a trei numere, varianta 1
maximul a trei numere, varianta 2

Care din ele este mai bună? Ele sunt aproximativ la fel, cu o diferență: dacă am dori să calculăm maximul a patru sau cinci numere prima schemă logică se dublează pentru fiecare număr în plus. Cea de-a doua adaugă doar o comparație, deci este mai bună.

Divizibilitate

Se citesc trei numere naturale, a, b și k. Să se afișeze numărul de numere divizibile cu k în intervalul [a, b] (inclusiv a și b).

Am putea fi tentați aici să scriem un algoritm rapid:

  • Fie să considerăm că numărul de numere divizibile cu k în intervalul [a, b] este, în principiu, (b - a + 1) / k (deoarece numărul de numere din intervalul [a, b] este b - a + 1). Dar avem excepții, cînd trebuie să adunăm unu, excepții care trebuie tratate cu decizii care nu sînt tocmai simple.
  • Fie să considerăm că numărul de numere este, în principiu, b/k - a/k. Dar atunci cînd a este divizibil cu k trebuie să adunăm unu.

Probabil mai sunt și alte variante. Vom prezenta în continuare o variantă optimă, care nu folosește condiții.

Răspuns: să rezolvăm mai întîi o problemă mai simplă: cîte numere sunt divizibile cu k în intervalul (0, x]? Aici răspunsul este simplu, vom avea exact x/k numere divizibile cu k. Ei bine, numărul de numere divizibile cu k din intervalul [a, b] este totuna cu numărul de numere din intervalul (0, b] din care scădem numărul de numere din intervalul (0, a-1]! Obținem formula:

n = b/k - (a-1)/k

Iar algoritmul devine banal:

Cîte numere divizibile cu k se află în intervalul [a, b]?

Rețineți această tehnică, de a descompune un interval în diferență de două intervale. O vom mai folosi. Această tehnică reduce problema inițială la o subproblemă mai simplă.

Intrebare: Există cazuri cînd algoritmul nu funcționează?

Tema

Scrieți temele pe foi, nu în caiete! Data viitoare îmi veți aduce tema pe aceste foi, pe care le voi lua acasă pentru a le corecta. Vă voi returna tema corectată. Nu uitați să semnați aceste foi! Gîndiți-vă singuri la răspunsuri, apoi, dacă nu găsiți rezolvarea căutați pe google și abia apoi, dacă nu reușiți, întrebați părinții sau prietenii. Mă bazez pe codul onoarei.

  • Te afli într-o încăpere goală. Ai în mînă un pahar cilindric și transparent care conține apă. Nu poți să acoperi gura paharului cu mîna, deoarece este prea largă. Cum afli dacă paharul este fix jumate plin?
  • Cîte cubuleţe sînt necesare pentru a construi cubul din figură:
    Cîte cubulețe conține acest cub?
  • Schemă logică: ecuația de gradul 1: se dau a și b astfel încât a * x = b. Să se determine x pe baza valorilor a și b. Am discutat cele trei cazuri:
    • cînd a este diferit de zero x este b : a.
    • cînd a este zero și b este diferit de zero x nu există.
    • cînd a este zero și b este zero x poate avea orice valoare.
  • Schemă logică: să se spună dacă un număr n are ultimele două cifre consecutive, în ordine crescătoare. Exemple: 312, 4523 și 1 sînt numere care au ultimele două cifre consecutive. 215, 4321 și 7 nu au ultimele două cifre consecutive crescător.
  • Schemă logică: să se spună dacă n copii se pot așeza în formă de pătrat plin. Exemple:
    • Nouă copii se pot așeza în formă de pătrat astfel:
      Nouă copii așezați în formă de pătrat
    • 14 copii nu se pot așeza în formă de pătrat:
      14 copii
  • Scrieți o schemă logică care să determine dacă un an este bisect. Un an este bisect dacă este divizibil cu 4, cu excepția anilor divizibili cu 100, care nu sînt bisecți, cu excepția anilor divizibili cu 400 care sînt bisecți. Exemple: 2012 este an bisect, 1900 nu a fost an bisect, 2000 a fost an bisect.
  • Schemă logică: se citesc trei numere, a, b și c. Să se afișeze în ordine crescătoare. Exemplu: dacă a = 8, b = 4, c = 12, se va afișa 4 8 12.

Rezolvări aici [1]