Clasa a V-a lecția 6 - 28 sep 2019

From Algopedia
Jump to navigationJump to search

Introducere

Am anunțat componența grupei. Note:

  • Grupa nu este închisă. Pe viitor voi accepta noi copii care fac foarte bine la teme și concursuri, sau voi renunța la cei ce nu-și dau silința, sau lipsesc de la curs. Nu uitați: temele și concursurile sunt obligatorii, participați la ele!

Tema - rezolvări

Rezolvări aici [1]

Lecție

Limbajul C

Limbaje de programare

În informatică vorbim despre limbaje naturale și limbaje artificiale. Limbajele naturale sînt limbile lumii, cum ar fi limba română, sau limba engleză. Este ironic că ele sînt denumite "naturale", dacă ne gîndim că "artificial" este ceva creat de om ☺. Prin contrast, limbajele artificiale sînt cele construite cu un scop; printre ele se află limbajele de programare. Un limbaj de programare este, precum limba română, o colecție de reguli (gramatică) și cuvinte (lexic) care împreună pot fi folosite pentru a construi programe (paragrafe). Programele au, ca și propozițiile în limba română, un înțeles (semantică). Ele au ca scop exprimarea unui algoritm ce se dorește a fi executat de calculator, spre deosebire de limba română unde scopul este comunicarea generală. Și limbajele de programare și schemele logice au ca scop descrierea algoritmilor. Dar, în vreme ce o schemă logică exprimă logica de bază a algoritmilor, limbajele de programare adaugă toate detaliile necesare pentru execuția algoritmului pe calculator.

Limbajul C

Limbajul C este un limbaj de programare dezvoltat de Brian Kernighan și Dennis Ritchie la Bell Labs în anii 1969-1973. În același timp cei doi au ajutat la dezvoltarea sistemului de operare UNIX, care se îmbina foarte bine cu acest limbaj.

Hello World

Un program simplu: Hello World (programul clasic pe care programatorii îl scriu atunci cînd învață un nou limbaj de programare):

#include <stdio.h>

int main() {
  printf( "Hello world!\n" );
  return 0;
}

Instrucțiuni de intrare/ieșire

Instrucțiunile scanf și printf sînt echivalentul blocului paralelogram în schemă logică. Exemplu: citirea a două numere și afișarea sumei lor:

#include <stdio.h>

int main() {
  int a, b;

  printf( "Introduceti doua numere: " );
  scanf( "%d%d", &a, &b );
  printf( "Suma numerelor este %d\n", a + b );
  return 0;
}

Secțiunile unui program C

Despre părțile unui program C:

  • Orice program C conține anumite elemente fixe, cum ar fi includerea bibliotecii standard de intrare/ieșire, începutul funcției principale (main) și finalul în care returnăm valoarea zero.
  • Elementele variabile ale programului C, ceea ce vom folosi noi pentru a implementa schema logică, sînt formate din două secțiuni: cea de declarare a variabilelor și cea a programului propriu-zis, precum se vede în programul anterior.

Instrucțiunea de atribuire (blocul dreptunghi)

  • Este o instrucțiune de calcul
  • Aproape identică cu conținutul blocului dreptunghi, în care săgețica ← se înlocuiește cu semnul egal =
  • În partea stîngă a semnului egal se află întotdeauna o variabilă. În partea dreaptă se află fie o variabilă, fie o expresie matematică.

Exercițiu: suma a două numere

Scrieți suma a două numere folosind o variabilă intermediară, de calcul:

#include <stdio.h>

int main() {
  int a, b, c;

  scanf( "%d%d", &a, &b );
  c = a + b;
  printf( "Suma numerelor este %d\n", c );
  return 0;
}

Exercițiu: calcul expresie

Scrieți la calculator programul care să calculeze expresia 24 / a + 100 / (c3 + b / (d2 + e2))

#include <stdio.h>

int main() {
  int a, b, c, d, e, expr;

  scanf( "%d%d%d%d%d", &a, &b, &c, &d, &e );
  expr = 24/a + 100 / (c * c * c + b / (d * d + e * e));
  printf( "expresia este %d\n", expr );
  return 0;
}

Intrucțiunea if

Am vorbit despre instrucțiunea if. Ea implementează structura alternativă. Apoi am vorbit despre operatorii de comparație ==, !=, <, <=, >, >=.

Să se spună dacă n divizibil cu k

Schemă logică
#include <stdio.h>

int main() {
  int n, k;

  scanf( "%d%d", &n, &k );
  if ( n % k == 0 )
    printf( "Da" );
  else
    printf( "Nu" );
  return 0;
}

Instrucțiunea while

Am vorbit despre instrucțiunea while. Ea implementează structura repetitivă de tip WHILE-DO.

Tema

  • Instalați codeblocks Code::Blocks. Dacă cumva aveți instalat MinGW dezinstalați-l înainte de a instala codeblocks, altfel s-ar putea să aveți probleme în recunoașterea compilatorului. Apoi urmăriți instrucțiunile pentru a vă face setările corespunzătoare: Setări necesare în Code::Blocks.
  • Scrieți programe pentru următoarele scheme logice de pe site-ul algopedia:
    • Lecția 2, extragerea primei cifre.
    • Lecția 2, cifre impare, ambele variante sugerate.
    • Lecția 2, maximul a trei numere, ambele variante sugerate.
    • Lecția 3, suma numerelor de la 1 la n, ambele variante sugerate.
    • Problema zid: Alin vrea să construiască un zid între doi stîlpi verticali, aflați la distanța D unul de altul. El dispune de n cărămizi de lungime l și înălțime h pe care le așează orizontal, una după alta, ca în figură. Pe fiecare rînd orizontal Ionel așează cîte cărămizi încap, lăsînd eventual un gol la capătul din dreapta. În sus el se oprește atunci cînd se termină cărămizile. Scrieți o schemă logică care citește D, n, l și h și afișează înălțimea maximă a zidului construit. În exemplul din figură: dacă D = 11, n = 8, l = 3 și h = 2 atunci înălțimea maximă a zidului va fi 6 (3 cărămizi fiecare de înălțime 2).
      P4-zid.svg

Rezolvări aici [2]