Arhive categorie: Lectii

1+1 = 7

Salut! Suntem de la „Programare cu răbdare” (https://programarecurabdare.ro) – cercul de informatică al tuturor copiilor.

Pentru că mulți dintre voi sunt mai buni la informatică, unii dintre voi chiar participând la diferite concursuri școlare, inclusiv la olimpiadă, dar alții dintre voi aveți probleme în a înțelege ce vă explică profesoara sau profesorul la școală, ne-am gândit că ar fi bine să vă ajutați între voi.

Astfel, am gândit acest proiect în care te poți înscrie ca FACILITATOR sau BENEFICIAR al procesului de învățare 1 la 1, care întotdeauna dă roade.

Continuă să citești

Octavian Custură continuă lecțiile despre vectori

La #programarecurabdare elevii învață unii de la alții. Așa că duminică, 3 martie 2019, de la ora 10, Octavian Custura (din grupa C) va prelua rolul de „profesor” pentru colegii săi din grupa A.

Sunteți pe mâini bune! Octavian și echipa “4SQUAD” a câștigat premiul I la concursul de programare pe care l-am organizat în ianuarie. (Colegii de echipă au fost Dimitrie-Toma FurduiNikoleta Eliana și Vladimir Berbece, elevi ai Colegiului Național “Gheorghe Vrănceanu”, Bacău).

Test grupa A

Problema 1

Cerinţa
Se citesc două numere naturale n și m. Să se decidă dacă cele două numere au cel puțin o cifră comună.

Date de intrare
Programul citește de la tastatură numerele n și m.

Date de ieşire
Programul afișează pe ecran mesajul DA, dacă cele două numere au cel puțin o cifră comună, respectiv NU în caz contrar.

Restricţii şi precizări
1 ≤ n, m ≤ 1.000.000.000
Exemplu
Date de intrare: 173954 889205
Date de ieșire: DA

Problema 2

Cerința
Se dă un șir cu n elemente, numere naturale. Determinați diferența în valoare absolută dintre numărul de valori pare din șir și numărul de valori impare din șir.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, reprezentând elementele șirului.

Date de ieșire
Programul va afișa pe ecran numărul C, reprezentând valoarea cerută.

Restricții și precizări
1 ≤ n ≤ 1000
cele n numere citite vor fi mai mici decât 1.000.000.000

Exemplu
Intrare: 5
15 245 28 33 11
Ieșire: 3
Explicație
Sunt 4 numere impare și un număr par în șir, deci diferența este 3.

Problema 3

Se dă un vector cu n elemente numere naturale. Să se verifice dacă are elementele ordonate crescător.

Trimiteți rezolvările prin acest formular:

Working Backwards – prezentarea lui Vlad Dascălu

Vlad Dascălu a lucrat la Google timp de 3 ani și a venit la cercul de informatică „Programare cu răbdare” ca să ne vorbească despre stabilirea obiectivelor profesionale în viață și să ne împărtășească din experiența sa de programator la o mare companie IT.

De asemenea, Vlad a rezolvat probleme cu tabele de dispersie cu elevii de la grupa C, la întâlnirea din 12 ianuarie. Vlad va reveni sâmbătă, 9 februarie 2019.

Marian Popovici – primul elev care prezintă realizările sale la cerc

Marian Popovici, elev din clasa a XI-a, la Colegiul Tehnic „Dimitrie Ghika” din Comănești, județul Bacău, este unul dintre cei mai activi elevi din cercul nostru de informatică.
Fiind pasionat de informatică, Marian a fost foarte încântat când a auzit de „Programare cu răbdare”, deoarece a considerat că e un prilej bun de a-și îmbunătăți cunoştințele şi, în acelaşi timp, de a cunoaşte oameni cu aceleaşi obiective ca ale sale.
Eram plictisit de consola neagră de la şcoală, iar atunci când am văzut modul în care se face grafică pentru jocuri am rămas plăcut surprins. Am învăţat o mulțime de lucruri şi am cunoscut oameni deosebiţi, care au lucrat sau lucrează la companii de top şi care m-au motivat să lucrez mai mult.
Marian a realizat deja câteva aplicații frumoase, de unul singur, acasă, după ce a învățat elemente de grafică la cercul de informatică.
Marian va prezenta colegilor săi realizările sale, la întâlnirea din 26 ianuarie, de la Colegiul Național „Gheorghe Vrănceanu”. Colegii săi vor putea pune întrebări și vor putea învăța de la Marian cum a gândit proiectele sale, vor primi sfaturi și vor fi încurajați să muncească.
Felicitări, Marian!

Întâlnire cerc joi, 24 ianuarie 2019, ora 11.00 la CN „Gheorghe Vrănceanu”

ATENȚIE!!! Următoarea întâlnire a cercului PCR („Programare cu răbdare”) este joi, 24 ianuarie, la ora 11:00, la Colegiul Național „Gheorghe Vrănceanu” din Bacău, când vom lucra pe grupe (cei noi pot veni și îi repartizăm atunci) și avem și ceva suprize pentru cei din grupele A, B și C 🙂

  • Grupa A – probleme cu instrucțiuni repetitive și serii de numere, cu conf. dr. Tiberiu Socaciu, Universitatea „Ștefan cel Mare” din Suceava;
  • Grupa B – începem să lucrăm la proiecte de tip jocuri, cu lect. dr. Bogdan Pătruț, Facultatea de Informatică, Universitatea „Alexandru Ioan Cuza” din Iași
  • Grupa C – probleme pentru olimpiadele de informatică, cu prof. Adrian Panaete (Botoșani), membru în comisiile concursurilor internaționale și naționale de informatică.

Baze de date relaționale și limbajul SQL

Dr. Simona Vârlan, de la Facultatea de Informatică, Universitatea „Alexandru Ioan Cuza” din Iași, va face o scurtă introducere în domeniul bazelor de date relaționale, a limbajului SQL, cu mențiuni legate de Oracle SQL.

Aceste lucruri se vor întâmpla sâmbătă, 15 decembrie, la „Programare cu râbdare”, începând cu ora 9.

 

Ghid de instalare Android Studio pentru dezvoltare aplicații mobile

Pentru a dezvolta aplicații mobile pe telefoanele care au sistemul de operare Android, va trebui să aveți la îndemână un asemenea telefon, dar și un calculator conectat la Internet.

Mihail Arminia vă va explica cum să creați prima voastră aplicație mobilă, folosind acest mediu de dezvoltare, cu limbajul Java. Nu trebuie să vă faceți griji că nu ați mai făcut așa ceva niciodată. Toate au un început. Limbajul Java își are originile în limbajul C++, din care au fost eliminate anumite lucruri. E posibil ca prima dată să vi se pară mai complicat, iar asta pentru că, de fapt, voi la școală nu lucrați în C++, ci în limbajul C, la care sunt adăugate câteva elemente foarte simple din C++ (cum ar fi cin, cout etc.).

Pentru a instala Android Studio, trebuie să accesați https://developer.android.com/studio/

Va apărea o fereastră ca cea de mai jos.

În acest moment, apăsați pe „DOWNLOAD ANDROID STUDIO”. Acceptați termenii și condițiile, iar apoi apăsați pe „Download” și click pe Installer.

Acționați butonul Next și obțineți, unde Android Virtual Device trebuie să fie bifată.

Apăsați pe Next și alegeți locul unde va fi instalat Android Studio, de exemplu ca în figura de mai jos:

Instalarea e foarte simplă, după cum vedeți. Urmează să apăsați iar Next:

Și apoi Install, alegând tipul de instalare Standard, ca în figura următoare:

Ne vedem sâmbătă și continuăm.

 

 

 

 

 

 

Grafică în CodeBlocks

1. Biblioteca grafică WinBGIm

Biblioteca grafică WinBGIm se poate descărca de aici:

winbgim.zip

Atenție: pe web găsiți alte variante ale acestei arhive, dar nefuncționale.

Dupa ce descarcati și scoateți fișierele din această arhivă, veți face următoarele lucruri:

  1. Extrageti fisierele graphics.h, winmgim.h si libbgi.a din arhiva winbgim.zip.
  2. Copiati fisierele graphics.h si winbgim.h in folderul include din compilatorul MinGW, care se gaseste, cel mai probabil, aici: c:\Program Files\CodeBlocks\MinGW\include\
  3. Copiati fisierul libbgi.a in folderul lib al directorului compilatorului MinGW, care se gaseste, cel mai probabil, aici: c:\Program Files\CodeBlocks\MinGW\lib\
  4. In Code::Blocks accesati Settings >> Compiler… >> linker settings
  5. Faceti click pe butonul Add in partea Link libraries, apoi rasfoiti si selectati fisierul libbgi.a
  6. In partea dreapta (adica la Other linker options) scrieti urmatoarele comenzi:
    -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32
  7. Faceti click pe OK.

Descrierea functiilor grafice se gaseste aici:

http://www.cs.colorado.edu/~main/cs1300/doc/bgi/bgi.html

Un exemplu de program de test pentru grafica este aici:

#include <iostream>
#include <graphics.h>
#include <winbgim.h>

int main()
{

  initwindow(800,600);

  int x = 400, y = 300, r; 
  for (r = 25; r <= 125; r += 20)
      circle(x, y, r);

  getch();
  closegraph();
  return 0;
}

Daca acesta functioneaza, puteti continua sa folositi orice functie grafica si de lucru cu mouse-ul din biblioteca WinBGIm.

Succes!

2. Exemple de programe grafice

  • Desenarea unei table de șah, folosind doar primitiva grafică line -: la tablă
  • Desenarea graficului unei funcții, folosind doar primitiva grafică line -: la tablă
  • Desenarea unui poligon regulat, a unei stele, folosind doar primitiva grafică line -: la tablă

Presupunem că puteți lucra în modul grafic, pe un ecran cu latime*inaltime pixeli în care coordonatele colțului stânga sus sunt (0, 0), iar ale colțului dreapta-jos sunt (latime-1, inaltime-1). În acest mod grafic, dispuneți de următoarele primitive grafice
o funcție grafică void setcolor(unsigned int c), care stabilește culoarea pentru a desena următoarele linii, până la schimbarea culorii de un alt apel al acestei funcții (inițial se consideră c=0, implicit); c este un cod de culoare, care corespunde unei valori între 0 și 15, de exemplu 0=negru, 1=albastru, 2=roșu etc.
o funcție grafică void setwidth(unsigned int g), care stabilește grosimea (1<=g<=10, implicit g=1) de desenare a următoarelor linii, până la un nou apel al acestei funcții;
o funcție grafică void line(unsigned int x1, unsigned int y1, unsingned int x2, unsigned int y2) care trasează o linie între punctul de coordonate (x1, y1) și cel de coordonate (x2, y2), în culoarea curentă, de grosimea curentă;
o funcție void setfillcolor(unsigned int c), care stabilește culoarea de umplere pentru următoarele apeluri ale funcției fill de mai jos; c este implicit 0 (negru), dar poate fi orice valoarea 0<=c<=15;
o funcție void fill(unsigned int x1, unsigned int x2, unsigned int c), care colorează (prin umplere) în culoarea stabilită de funcția setfillcolor, conturul închis, mărginit de o linie poligonală închisă, având culoarea c. Colorarea începe în punctul de coordonate (x1, y1), care se presupune a fi în interiorul acelei linii poligonale.
(0,30p) Definiți o structură de date adecvată pentru a reprezenta o stea regulată cu un număr de colțuri (cel puțin 3), cu marginea de o anumită culoare și grosime, cu o anumită culoare în interior, cu o anumită mărime și o anumită „deschidere” a colțurilor, cu o anumită amplasare sub un anumit unghi față de orizontală a primului colț. Se pot folosi funcțiile trigonometrice sin și cos, din math.h.
(0,90p) Scrieți o funcție care să deseneze o asemenea stea, oarecare, amplasată oriunde și oricum, de culoare oarecare etc.
Click aici pentru solutie.

 

Un program de grafică cu o matrice în spate

#include <iostream>
#include <winbgim.h>
#include <stdlib.h>

using namespace std;

#define MAX 20
#define FUNDAL CYAN

int stanga,sus,width,height,latura, numar;
bool gata;

int TablaDeJoc[MAX][MAX];

int scor;

void afiseazaScor()
{
   char sirScor[10];
   setcolor(FUNDAL);
   itoa(scor,sirScor,10); outtextxy(200,50,sirScor);
   int i,j;  scor=0;
   for (i=1;i<=numar;i++)
       for (j=1;j<=numar;j++)
           if (TablaDeJoc[i][j]==2)
              scor++;
   setcolor(BLUE); itoa(scor,sirScor,10);
   outtextxy(200,50,sirScor);
}

void punerePiesa()
{
   int linia,coloana,x,y;
   int x1, y1, x2, y2;
   int xmijloc, ymijloc;

   if(ismouseclick(WM_LBUTTONDOWN))
     {
       clearmouseclick(WM_LBUTTONDOWN);
       x=mousex(); y=mousey();
       if (!(x>=stanga && x<=stanga+width && y>=sus&&y<=sus+height))
          gata=true;
       else
          {
            linia=(y-sus)/latura+1;
            coloana=(x-stanga)/latura+1;
            if (TablaDeJoc[linia][coloana]==0)
               {
                 TablaDeJoc[linia][coloana]=1;
                 // stergere
                 setcolor(FUNDAL); setfillstyle(SOLID_FILL,FUNDAL);
                 x1=stanga+latura*(coloana-1); y1=sus+latura*(linia-1);
                 x2=x1+latura; y2=y1+latura;
                 xmijloc=(x1+x2)/2; ymijloc=(y1+y2)/2;
                 bar(xmijloc-20,ymijloc-20,xmijloc+20,ymijloc+20);
                 // afisez cerc rosu aprins
                 setcolor(LIGHTRED); setfillstyle(SOLID_FILL,LIGHTRED);
                 fillellipse(xmijloc,ymijloc,18,18);
               }
            else
            if (TablaDeJoc[linia][coloana]==1)
               {
                 TablaDeJoc[linia][coloana]=2;
                 setcolor(FUNDAL); setfillstyle(SOLID_FILL,FUNDAL);
                 x1=stanga+latura*(coloana-1); y1=sus+latura*(linia-1);
                 x2=x1+latura; y2=y1+latura;
                 xmijloc=(x1+x2)/2; ymijloc=(y1+y2)/2;
                 bar(xmijloc-20,ymijloc-20,xmijloc+20,ymijloc+20);
                 // afisez un patrat galben
                 setcolor(LIGHTRED); setfillstyle(SOLID_FILL,YELLOW);
                 bar(xmijloc-20,ymijloc-20,xmijloc+20,ymijloc+20);
               }
            else // 2-> 0
            {
                 TablaDeJoc[linia][coloana]=0;
                 setcolor(FUNDAL); setfillstyle(SOLID_FILL,FUNDAL);
                 x1=stanga+latura*(coloana-1); y1=sus+latura*(linia-1);
                 x2=x1+latura; y2=y1+latura;
                 xmijloc=(x1+x2)/2; ymijloc=(y1+y2)/2;
                 bar(xmijloc-20,ymijloc-20,xmijloc+20,ymijloc+20);
            }
            afiseazaScor();
        }
    }
}

void desen()
{
   int i,j; numar=5;
   width=400; height=400; latura=width/numar;
   sus=(getmaxy()-width)/2; stanga=(getmaxx()-height)/2;
   setbkcolor(FUNDAL); clearviewport(); setcolor(BLUE);
   for(i=1; i<=numar; i++)
       for(j=1; j<=numar; j++)
          rectangle(stanga+latura*(i-1),
                    sus+latura*(j-1),stanga+latura*i,sus+latura*j);
}

int main()
{
   initwindow(800,600);
   scor=0; desen(); afiseazaScor();
   gata=false;
   do
   {
      punerePiesa();
   }
   while (!gata);
   getch();
   closegraph();
   return 0;
}

 

Pregătire specială pentru bacalaureat

Elevii interesați din clasa a XII-a pot participa, în cadrul cercului de informatică „Programare cu răbdare” la câteva ședințe de pregătire specială pentru bacalaureat, unde vor fi abordate următoarele teme:

  • 5 ianuarie 2019 – vectori
  • 12 ianuarie 2019 – matrice
  • 19 ianuarie 2019 – șiruri de caractere

Și elevii din clasa a XI-a se pot înscrie la aceste activități.

 

 

Ghid de instalare Unity 3D

Ghid instalare UNITY 3D (Windows/Mac OS)
1. Accesati aceasta pagina: https://unity3d.com/get-unity/download
2. Selectati “Choose your Unity + download”


3. Din coloana “Personal/For Beginners” selectati “Try Personal”

4. Daca sunteti de acord cu “Terms of Service”, bifati casuta si puteti continua cu descarcarea unei utilitar de tip .exe care sa instaleze Unity.
! Daca folositi Mac OS, aveti posibilitatea la acest pas sa descarcati alt utilitar.


5. Odata finalizata instalarea, se va deschide utilitarul si dati next.


6. Bifati casuta si continuati cu next.

7. Bifati componentele ca in imagine (“Unity 2018, Documentation, Microsoft Visual Studio Community 2017”) si continuati cu next.


8. Cand porniti Unity, va create cont sau va logati folosind Google/Facebook.

9. Selectati Unity Personal si continuati cu Next.


10. Selectati ultima varianta “I don’t use Unity in a professional capacity” si continuati cu Next.


11. Completati surveyul, avand grija sa selectati “Student” ca si primary use pt Unity.


You’re all set ! Ne vedem la workshop!

Irina vă va învăța despre jocurile video

Irina Mădălina Bejan va veni sămbăta, 8 decembrie 2018, pentru toți cei interesați de gaming și de crearea de jocuri pe calculator. Ea va dezvolta cu voi jocuri 3D folosind un game-engine numit Unity 3D, în care se programează în C#, un limbaj de programare foarte apropiat de C++.

Cursul va dura 4 ore. Irina îi roagă pe cei interesați de cursul de jocuri video să vină pregătiți cu laptop-ul, pe care să fie instalat deja Unity 3D. De asemenea, un stick de Internet sau un telefon pe post de hot-spot ar fi necesar.

Legat de Unity 3D, Irina a elaborat un ghid de instalare, pe care îl puteți vizualiza aici:

Ghid de instalare Unity 3D

sau îl puteți descărca în format PDF de aici: install_unity

Irina se prezintă pe Facebook ca fiind: