Clasa a V-a lecția 7 - 21 sep 2017

From Algopedia
Jump to navigationJump to search

Introducere

Am anunțat componența celor două grupe. Note:

  • Aceste grupe vor studia exact aceeași materie.
  • La ambele grupe vor preda ambii instructori, Cristian Frâncu și Isabela Coman.
  • Grupele nu sînt închise. Pe viitor vom accepta noi copii care fac foarte bine la teme și concursuri, sau vom renunța la cei ce nu-și dau silința, sau lipsesc de la curs. Nu uitați: temele și concursurile sînt comune, participați la ele!

Tema - rezolvări

Rezolvări aici [1]

Lecție

<html5media height="720" width="1280">https://www.algopedia.ro/video/2017-2018/2017-09-21-lectie-info-07-720p.mp4</html5media>

Video al lecției 7.

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 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.
  • 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 zid de la test: 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).

Rezolvări aici [2]