Clasa a V-a lecția 7 - 23 sep 2014

From Algopedia
Jump to: navigation, search

Tema - rezolvări

Rezolvări aici [1]

Introducere

Am anunțat componența celor două cercuri de informatică. Note:

  • La aceste cercuri se va face exact aceeași materie.
  • Cercul 1 va fi ținut de Cristian Frâncu.
  • Cercul 2 va fi ținut de doamna profesoară Isabela Coman.
  • Cercurile nu sînt închise. Pe viitor vom accepta noi copii care fac foarte bine la ore, vom transfera copii intre cele două cercuri în funcție de rezultate, sau vom renunța la cei ce nu-și dau silința. Nu uitați: temele și concursurile sînt comune, participați la ele!

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

Exemplul 1: suma a două numere

Un exemplu: 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

Exercițiu: 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;
}

Tema

  • Instalați codeblocks OJI Kit (sursa infoarena.ro). 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.
  • Scrieți programe pentru următoarele scheme logice de pe site-ul algopedia:
    • Lecția 4, suma numerelor de la 1 la n prin metoda lui Gauss, cu formula s = n (n + 1) / 2.
    • Problema cărămizi de la test: Ionel vrea să construiască un zid între doi stîlpi verticali, de înălțime H, aflați la distanța D unul de altul. El dispune de cărămizi de lungime l și înălțime h pe care le așează orizontal, una după alta. 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, dacă ar mai așeza un rînd de cărămizi, zidul ar depăși înălțimea stîlpilor. Scrieți o schemă logică și apoi programul C care citește H, D, l și h și afișează numărul de cărămizi pe care trebuie să le așeze Ionel pentru a construi zidul. Exemplul din figură: dacă D = 8, H = 5, l = 3 și h = 2 atunci Ionel va avea nevoie de 4 cărămizi.
      P4-caramizi.gif

Rezolvări aici [2]