Clasa a IX-a lecția 4

From Algopedia
Revision as of 15:27, 14 February 2020 by Bella (talk | contribs) (→‎Metoda bulelor)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Lectie

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. Aceste structuri sunt:

  • Structura liniară (de calcul)
  • structura alternativă (decizională)
  • structura repetitivă (ciclică)

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. Aceste blocuri se vor executa in ordinea in care ele apar in structura.

Structura liniară

Exemple

Extragerea ultimei cifre

Să se afișeze ultima cifră a unui număr n, folosind operatorul '%', respectiv restul împărțirii la 10. Am demonstrat că restul împărțirii la 10 este ultima cifră a unui număr.

Ultima cifră a lui n

Structura alternativă

Structura alternativă este compusă dintr-un bloc de decizie, două ramuri de execuție, DA și NU, care se reunesc la final. Blocul de decizie contine o expresie logica. Daca expresia logica ( cond ) are valoarea True atunci se vor executa intructiunile de pe ramura DA altfel se vor executa intructiunile de pe ramura NU.

Structura alternativă

Pseudocod

if conditie atunci
  intrusctiune1
altfel
  instructiune2

Exemple

Testul de divizibilitate

Testul de divizibilitate n cu k, discuție cele două metode, prima folosind operatorul %, a doua folosind operatorul /.

n divizibil cu k, varianta 1
n divizibil cu k, varianta 2

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

Laborator

Laturile unui triunghi

Se citesc trei numere, a, b și c. Să se spună dacă pot fi laturile unui triunghi.

a, b, c pot fi laturile unui triunghi?


Strîngeri de mînă

Avem n oameni care dau mîna fiecare cu fiecare o singură dată. În total sînt k strîngeri de mînă. Să se scrie o schemă logică care citește k (numărul de strîngeri de mînă), apoi calculează și afișează n (numărul de oameni).

n oameni dau mîna. Sînt k strîngeri de mînă. Dîndu-se k să se calculeze n.

Maximul a trei numere

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

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

Sortarea a 3 numere

  • 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.
Afișare a, b și c în ordine crescătoare, varianta 1
Afișare a, b și c în ordine crescătoare, varianta 2

Am discutat la clasa de asemenea inca 2 metode de sortare, pe care le putem folosi si in situatia in care avem mai mult de 3 numere: - metoda interschimbarii directe - metoda bulelor

Metoda interschimbarii directe

intreg a, b, c, aux
cieste a, b, c

if ( a > b ) atunci
  aux = a
  a = b;
  b = aux
if ( a > c ) atunci
  aux = a
  a = c;
  c = aux
if ( b > c ) atunci
  aux = b
  b = c;
  c = aux
scrie a, b, c

Metoda bulelor

intreg a, b, c, aux
cieste a, b, c

daca ( a > b ) atunci
  aux = a
  a = b;
  b = aux
daca ( b > c ) atunci
  aux = b
  b = c;
  c = aux
daca ( a > b ) atunci
  aux = a
  a = b;
  b = aux
scrie a, b, c

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.

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

Numere divizibile cu K din [a,b]

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).

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

Exerciții 2

Exerciții de folosire a structurilor liniară și alternativă folosind - Pseudocod

Diferenta dintre max si min

Să se scrie un program care citeşte de la tastatură trei numere naturale și determină diferenţa dintre cel mai mare şi cel mai mic numar.

intreg a, b, c
citeste a, b, c
min=a
max=a
daca ( min > b ) atunci
  min = b
daca ( min > c ) atunci
  min = c
daca ( max < b ) atunci
  max = b
daca ( max < c ) atunci
  max = c
scrie  max - min;

Cate cifre pare are n?

Se citește de la tastatură un număr natural de 3 cifre. Să se determine câte cifre impare conține.

int n, contor;
citeste n
contor = 0
daca ( n mod 2 != 0 ) atunci
  contor = contor + 1
daca( n div 10 mod 2 != 0 )
  contor = contor + 1
daca ( n div 100 mod 2 != 0 )
  contor = contor + 1
scrie contor

Au 2 numere acelasi semn?

Să se scrie un program care citeşte de la tastatură două numere întregi şi verifică dacă cele doua numere au acelaşi semn.

intreg a,b
citeste a, b
daca ( a < 0 ) atunci
  daca ( b < 0 ) atunci
     scrie "au acelasi semn"
  altfel 
      scrie "nu au acelasi semn"
altfel
   daca ( b >= 0 ) atunci
      scrie "au acelasi semn"
   altel
      scrie "nu au acelasi semn"

SAU

intregi a, b
citeste a, b
daca ( ( a < 0 ) AND ( b < 0 ) ) OR ( ( a >= 0 AND b >= 0 ) ) atunci
    scrie "au acelasi semn"
altfel 
    scrie "nu au acelasi semn"

SAU

intregi a, b
citeste a, b
daca  ( a < 0 AND b >= 0 ) OR ( a >= 0 AND b < 0 )  atunci
    scrie "nu au acelasi semn"
altfel 
    scrie "au acelasi semn"

Tema 4 Laborator

N are ultimele 2 cifre consecutive?

  • 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.

N copii se pot aseza in forma de patrat

  • Varianta1: să se spună dacă n copii se pot așeza în formă de pătrat plin. Exemplu: Nouă copii se pot așeza în formă de pătrat astfel:
x x x
x x x
x x x
  • Varianta2: să se spună dacă n copii se pot așeza în formă de pătrat gol ( pe laturile unui patrat. In imaginile de mai sus vom considera ca locuri posibile doar conturul patratului. De exemplu 12 copii se pot aseza sub forma unui patrat gol astfel:
x x x x 
x     x
x     x
x x x x

An bisect

  • 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.

Tema Pbinfo

Usor

  • checkcolor - minim, maxim
  • ciford - ordonarea cifrelor unui numar de 3 cifre
  • cifmid - afisare cifra din mijloc ca valoare
  • 5numere - suma celor mai mari 3 numere din 5 date
  • nrsumcifmax - afisarea tuturor numerelor egale cu max din 3 numere

Mediu

Dificil

Optional

Problema Triunghi1 de pe campion

Tema olimpici 1

Tema olimpici 2