134
Introdução à linguagem de programação C++ Tulio Marcus R. Calixto Centro de Informática de Ribeirão Preto

Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Embed Size (px)

Citation preview

Page 1: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Introdução à linguagem de programação C++

Tulio Marcus R. CalixtoCentro de Informática de Ribeirão Preto

Page 2: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estrutura de um programa

// my first program in C++

#include <iostream>

using namespace std;

int main ()

{

  cout << "Hello World!";

  return 0;

}

Page 3: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estrutura de um programa

// my first program in C++

Comentário de linha;● Todas as linhas começando com 2 barras (//) 

serão comentários e não terão nenhum efeito no comportamento do programa;

● O programador pode usar para incluir pequenas observações ou explicações dentro do código.

Page 4: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estrutura de um programa

#include <iostream>● Linhas começando com # são directivas para o 

pré­processador;● Diz para o pré­processador incluir o arquivo 

iostream;● Biblioteca em C++ para entrada e saída básica. 

Suas funções serão usadas no decorrer do programa.

Page 5: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estrutura de um programa

using namespace std;

● Todos os elementos de bibliotecas padrão C++ são declaradas dentro de um namespace chamado std;

● Para acessar suas funcionalidades nós a declaramos com esta expressão.

Page 6: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estrutura de um programa

int main ()

● Inicio da função principal;● É sempre a primeira função a ser executada;● A função principal é o ponto de partida para 

execução de todos os programas C++

Page 7: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estrutura de um programa

cout << "Hello World!";

● cout representa o fluxo de saída padrão em C++;● cout é declarado dentro de iostream dentro do 

namespace std;● ; indica o fim de uma instrução C++

Page 8: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estrutura de um programa

return 0;

● Indica que a função terminou;● O código de retorno 0 indica que o programa 

trabalhou como esperado – sem erros;

Page 9: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estrutura de um programa

/* my second program in C++   with more comments */

#include <iostream>using namespace std;int main (){  cout << "Hello World! ";          // prints Hello World!  cout << "I'm a C++ program"; // prints I'm a C++ 

program  return 0;}

Page 10: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Variáveis e tipos de dados

● Variáveis: Uma parte da memória para armazenar um determinado valor;

● O computador pode armazenar milhões de variáveis e executar cálculos sofisticados com elas;

● Cada variável precisa de um identificador que distingue uma de outra;

Page 11: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Variáveis e tipos de dados

Identificadores:● Um identificador válido é uma sequência de uma 

ou mais letras, números ou underscore ( _ ) ;● Não pode haver espaços, símbolos ou caracteres 

de pontuação;● Precisam sempre começar com uma letra;● Não pode ser uma palavra­chave

Page 12: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Variáveis e tipos de dados

● Palavra­chave: Palavras reservadas da linguagem C++

  asm, auto, bool, break, case, catch, char, class, const, const_cast, continue, default, delete, do, double, dynamic_cast, else, enum, explicit, export, extern,  false,  float,  for,  friend, goto,  if,  inline, int,  long,  mutable,  namespace,  new,  operator,  private, protected,  public,  register,  reinterpret_cast,  return,  short, signed,  sizeof,  static,  static_cast,  struct,  switch,  template,  this, throw,  true,  try,  typedef,  typeid,  typename,  union,  unsigned, using, virtual, void, volatile, wchar_t, while 

Page 13: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Variáveis e tipos de dados

● C++ é case sensitive: faz distinção entre letras maiúsculas e minúsculas;

● Para usar uma variável em C++ nós precisamos primeiro especificar o tipo de dado que a variável irá possuir seguida de um identicador de variável válido;

Ex.: int a

       float mynumber

Page 14: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Variáveis e tipos de dados

● Se desejamos declarar várias variáveis de um mesmo tipo, podemos fazer tudo numa mesma linha.

Ex.: int a, b, c

Page 15: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Variáveis e tipos de dados

// operating with variables

#include <iostream>

using namespace std;

int main ()

{

  // declaring variables:

  int a, b;

  int result;

Page 16: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Variáveis e tipos de dadosName Description Size* Range*

char Character or small integer. 1bytesigned: -128 to 127unsigned: 0 to 255

short int(short)

Short Integer. 2bytessigned: -32768 to 32767unsigned: 0 to 65535

int Integer. 4bytes

signed: -2147483648 to2147483647unsigned: 0 to4294967295

long int(long)

Long integer. 4bytes

signed: -2147483648 to2147483647unsigned: 0 to4294967295

bool Boolean value. I t can take one of twovalues: true or false.

1byte true or false

float Floating point number. 4bytes +/- 3.4e +/- 38 (~7 digits)

double Double precision floating point number. 8bytes+/- 1.7e +/- 308 (~15digits)

long double Long double precision floating pointnumber.

8bytes+/- 1.7e +/- 308 (~15digits)

wchar_t Wide character.2 or 4bytes

1 wide character

Page 17: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Variáveis e tipos de dados

  // process:  a = 5;  b = 2;  a = a + 1;  result = a ­ b;  // print out the result:  cout << result;  // terminate the program:  return 0;}

Page 18: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Variáveis e tipos de dados

● Escopo de variáveis: Local onde a variável pode ser vista.

● Variável global: São variáveis declaradas no corpo principal do código for a de todas as funções

● Variável local: É declarada dentro do corpo de uma função ou bloco

Page 19: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Variáveis e tipos de dados

Page 20: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Variáveis e tipos de dados

● Inicialização de variáveis: Quando declaramos uma variável seu valor default é indeterminado.

● Se quisermos que a variável armazene algum valor concreto, nós devemos inicializar a variável.

Ex.: int a = 0;

       int a (0);

Page 21: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Variáveis e tipos de dados

// initialization of variables

#include <iostream>

using namespace std;

int main ()

{

  int a=5;               // initial value = 5

  int b(2);              // initial value = 2

  int result;            // initial value undetermined

Page 22: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Variáveis e tipos de dados

  a = a + 3;

  result = a ­ b;

  cout << result;

  return 0;

}

Page 23: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Variáveis e tipos de dados

● Strings: sequencia de caracteres.● C++ prove suporte para strings através da classe 

string.● Para declarar um tipo de dado string nós devemos 

incluir uma informação adicional no arquivo de cabeçalho: <string>

Page 24: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Variáveis e tipos de dados

// my first string#include <iostream>#include <string>using namespace std;int main (){  string mystring;  mystring = "This is the initial string content";  cout << mystring << endl;

Page 25: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Variáveis e tipos de dados

  mystring = "This is a different string content";

  cout << mystring << endl;

  return 0;

}

Page 26: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Constantes

● Constantes são expressões com um valor fixo;

Ex.: #define PI 3.141592625

       #define NEWLINE '\n'

Directiva do préprocessador

const int x = 100;

const char tabulator = '\t';

Directiva da linguagem

Page 27: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Constantes

// defined constants: calculate circumference

#include <iostream>

using namespace std;

#define PI 3.14159

#define NEWLINE '\n'

int main ()

{

Page 28: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Constantes

  double r=5.0;               // radius

  double circle;

  circle = 2 * PI * r;

  cout << circle;

  cout << NEWLINE;

  return 0;

}

Page 29: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Constantes\nNewline\r carriage return\tTab\vvertical tab\bBackspace\f form feed (page feed)\aalert (beep)\aalert (beep)\' single quote (')

\"double quote (")

\?question mark (?)

\\backslash (\)

Page 30: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Operadores

● A partir do momento que possuimos variáveis nós podemos realizar operações com elas.

● Operador de atribuição– a = 5;

– c = 90;

Page 31: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Operadores

// assignment operator#include <iostream>using  namespace std;int  main (){  int  a, b;         // a:?,  b:?  a = 10;           // a:10, b:?  b = 4; // a:10, b:4  a = b; // a:4,  b:4

Page 32: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Operadores

   b = 7;            // a:4,  b:7

  cout << "a:";

  cout << a;

  cout << " b:";

  cout << b;

  return  0;

}

Page 33: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Operadores

● Aritiméticos

+ addition- subtraction* multiplication/ division% modulo

Page 34: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Operadores

● Operadores compostos:

+=, ­=, *=, /=, %=, >>=, <<=, &=, ^=, |=

● Realizam a operação seguida de atribuição

Page 35: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Operadores// compound assignment operators#include <iostream>using namespace std;int main (){  int a, b=3;  a = b;  a+=2;             // equivalent to a=a+2  cout << a;  return 0;}

Page 36: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Operadores

● Incremento e Decremento (++, ­­)

c++;

c+=1;

c=c+1;

Page 37: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Operadores

● Operadores de igualdade

==, !=, >, <, >=, <=

Ex:

(7 == 5)     // evaluates to false.

(5 > 4)      // evaluates to true.

(3 != 2)     // evaluates to true.

(6 >= 6)     // evaluates to true.

(5 < 5)      // evaluates to false.

Page 38: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Operadores

● Operadores lógicos

!, &&, || 

Ex:

!(5 == 5) // evaluates to false because the expression at its right (5 == 5) is true. 

!(6 <= 4)    // evaluates to true because (6 <= 4) would be false. 

!true        // evaluates to false

!false       // evaluates to true

Page 39: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Operadores

● Operador &&

a   b a && b

true true true

true false false

false true false

false false false

Page 40: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Operadores

● Operador ||

a    b a || b

true true true

true false true

false true true

false false false

Page 41: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Operadores

● Operador condicional ( ? )● Retorna um valor se a expressão é verdadeira e 

outro valor se a expressão for falsa.● Sintaxe: condition ? result1 : result2

Ex:

7==5 ? 4 : 3     // returns 3, since 7 is not equal to 5.

7==5+2 ? 4 : 3   // returns 4, since 7 is equal to 5+2.

Page 42: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Operadores// conditional operator#include <iostream>using namespace std;int main (){  int a,b,c;  a=2;  b=7;  c = (a>b) ? a : b;  cout << c;  return 0;}

Page 43: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Entrada e Saída básica

● Permite o usuário interagir com o sistema.● C++ usa streams para realizar entrada e saida 

básica de forma sequencial, como no teclado, por exemplo.

● stream é um objeto onde o programa pode inserir ou extrair caracteres. 

● O arquivo de cabeçalho IOSTREAM contem os objetos de entrada e saida padrão.

Page 44: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Entrada e Saída básica

● Saída padrão ­> monitor● Objeto stream definido para acessar a saída: cout

Ex:

cout << "First sentence.\n ";

cout << "Second sentence.\nThird sentence."; 

Page 45: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Entrada e Saída básica

● Entrada padrão: teclado● Objeto stream definido: cin● Precisa ser seguido de uma variável

Ex:

int age;

cin >> age; 

Page 46: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Entrada e Saída básica// i/o example

#include <iostream>

using namespace std;

int main (){

  int i;

  cout << "Please enter an integer value: ";

  cin >> i;

  cout << "The value you entered is " << i;

  cout << " and its double is " << i*2 << ".\n";

  return 0;   }

Page 47: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Entrada e Saída básica

● cin e strings● cin pára quando encontra um espaço em branco● Só é possi entrar palavra por palavra● Solução: getline

Page 48: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Entrada e Saída básica

// cin with strings

#include <iostream>

#include <string>

using namespace std;

int main ()

{

  string mystr;

  cout << "What's your name? ";

  getline (cin, mystr);

Page 49: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Entrada e Saída básica

 cout << "Hello " << mystr << ".\n";

  cout << "What is your favorite team? ";

  getline (cin, mystr);

  cout << "I like " << mystr << " too!\n";

  return 0;

}

Page 50: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Entrada e Saída básica

● stringstream.● O arquivo de cabeçalho <sstream> define uma 

classe chamada stringstream.● Permite tratar objetos strings como streams.● Pode ser utilizado para converter strings em int e 

double

Page 51: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Entrada e Saída básica

Ex:

// stringstreams

#include <iostream>

#include <string>

#include <sstream>

using namespace std;

int main ()

Page 52: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Entrada e Saída básica

  string mystr;

  float price=0;

  int quantity=0;

  cout << "Enter price: ";

  getline (cin,mystr);

  stringstream(mystr) >> price;

  cout << "Enter quantity: ";

  getline (cin,mystr);

  stringstream(mystr) >> quantity;

Page 53: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Entrada e Saída básica

 cout << "Total price: " << price*quantity << endl;

  return 0;

}

Page 54: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estruturas de Controle

● Um programa não é limitado a uma sequencia linear de instuções.

● Pode haver bifurcações, repetição de código e tomada de decisão.

● Especificam como o programa deve reagir em determinadas circunstâncias.

Page 55: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estruturas de Controle

● Com a adição de estruturas de controle segue um novo conceito: bloco.

● Bloco: Conjunto de instruções agrupadadas e deliminadas por colchetes {}

● Se o bloco for de apenas uma instrução pode­se otimir o {}

Page 56: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estruturas de Controle

● if / else● If (condição) bloco de instruções● Se a condição é verdadeira o bloco de instruções 

é executado.● Se a condição é falsa o bloco é ignorado e o 

programa continua após o bloco condicional.

Page 57: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estruturas de Controle

Exs.

if (x == 100)

  cout << "x is 100";

if (x == 100){

   cout << "x is ";

   cout << x;

}

Page 58: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estruturas de Controle

● Nós podemos especificar o que nós queremos que aconteça caso a condição não seja satisfeita. Para tal utilizamos a palavra reservada: else

Ex:

if (x == 100)

  cout << "x is 100";

else

  cout << "x is not 100";

Page 59: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estruturas de Controle

● Concatenando instruções if + else

Ex:

if (x > 0)

  cout << "x is positive";

else if (x < 0)

  cout << "x is negative";

else

  cout << "x is 0";

Page 60: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estruturas de Controle

● Loops: tem o propósito de repetir o bloco de instruções um certo número de vezes ou enquanto uma condição não for estabelecida.

● Loop while● Sintaxe: while (condição) bloco de instruções

Page 61: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estruturas de Controle

// custom countdown using while

#include <iostream>

using namespace std;

int main ()

{

  int n;

  cout << "Enter the starting number > ";

  cin >> n;

Page 62: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estruturas de Controle

  while (n>0) {

    cout << n << ", ";

    ­­n;

  }

  cout << "FIRE!\n";

  return 0;

}

Page 63: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estruturas de Controle

● Loop: do .. while● Semelhante ao loop while, exceto que a condição 

é testada depois da execução do bloco.● Garante que o bloco seja executado pelo menos 

uma vez.

Page 64: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estruturas de Controle

Ex.:

// number echoer

#include <iostream>

using namespace std;

int main ()

{

  unsigned long n;

Page 65: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estruturas de Controle

  do {

    cout << "Enter number (0 to end): ";

    cin >> n;

    cout << "You entered: " << n << "\n";

  } while (n != 0);

  return 0;

}

Page 66: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estruturas de Controle

● Loop: for● Sintaxe: 

– for (inicialização; condição; incremento) bloco;

● Realização uma ação repetitiva com um contador que é inicializado e incrementado em cada iteração.

Page 67: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estruturas de Controle

Ex.:

// countdown using a for loop

#include <iostream>

using namespace std;

int main (){

  for (int n=10; n>0; n­­) {

    cout << n << ", ";

  }

Page 68: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estruturas de Controle

  cout << "FIRE!\n";

  return 0;

}

Page 69: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estruturas de Controle

● Saltos de blocos● Break● Usando o break podemos deixar o loop for, se a 

condição do mesmo não é satisfeita;● Podemos usar para terminar um loop infinito;● Forçar o fim antes do fim natural

Page 70: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estruturas de Controle

Ex.:

// break loop example

#include <iostream>

using namespace std;

int main ()

{

  int n;

Page 71: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estruturas de Controle  for (n=10; n>0; n­­)  {

    cout << n << ", ";

    if (n==3)

    {

      cout << "countdown aborted!";

      break;

    }

  }

  return 0;

}

Page 72: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estruturas de Controle

● Continue● Faz o programa ignorar o restante do loop atual e 

passa para a proxima iteração.● Ex.:

Page 73: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estruturas de Controle// continue loop example#include <iostream>using namespace std;int main (){  for (int n=10; n>0; n­­) {    if (n==5) continue;    cout << n << ", ";  }  cout << "FIRE!\n";  return 0;   }

Page 74: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estruturas de Controle

● Goto● Permite fazer um salto para um outro ponto do 

programa.● O destino do salto precisa ter um identificador 

que é utilizado como argumento para o comando goto.

● O identificador válido é seguido por dois pontos (:).

Page 75: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estruturas de Controle

Ex.:

// goto loop example

#include <iostream>

using namespace std;

int main ()

{

  int n=10;

  loop:

Page 76: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estruturas de Controle

  cout << n << ", ";

  n­­;

  if (n>0) goto loop;

  cout << "FIRE!\n";

  return 0;

}

Page 77: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estruturas de Controle

● Switch● Tem a função de checar muitas opções para poder 

tomar uma decisão;● Pode ser usado no lugar de vários if else● Sintaxe:

Page 78: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estruturas de Controleswitch (expression){

  case constant1:

     group of statements 1;

     break;

  case constant2:

     group of statements 2;

     break;

. . .

  default:

     default group of statements

}

Page 79: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Estruturas de Controle

switch (x) {  case 1:    cout << "x is 1";    break;  case 2:    cout << "x is 2";    break;  default:    cout << "value of x     unknown";  }

if (x == 1) {  cout << "x is 1";  }else if (x == 2) {  cout << "x is 2";  }else {  cout << "value of x  unknown";  }

Page 80: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Funções

● Utilizando funções podemos estruturar nosso programa de forma mais modular.

● Função é um grupo de instruções que são executadas quando chamadas em algum ponto do programa.

● Sintaxe:– tipo nome ( parametro1, parametro2, ...) 

{ instruções }

Page 81: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Funções

● Onde:– Tipo: Tipo de dado retornado pela função

– Nome: Identificador pelo qual será possivel chamar a função

– Parametros: Cada parametro consiste em um tipo de dado específico seguido por um identificador

– Instruções: Formam o corpo da função

Page 82: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Funções

Ex.:

// function example

#include <iostream>

using namespace std;

int addition (int a, int b){

  int r;

  r=a+b;

  return (r);

}

Page 83: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Funções

int main ()

{

  int z;

  z = addition (5,3);

  cout << "The result is " << z;

  return 0;

}

Page 84: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

FunçõesEx.2:

// function example

#include <iostream>

using namespace std;

int subtraction (int a, int b){

  int r;

  r=a­b;

  return (r);

}

Page 85: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Funçõesint main (){

  int x=5, y=3, z;

  z = subtraction (7,2);

  cout << "The first result is " << z << '\n';

  cout << "The second result is " << subtraction (7,2) << '\n';

  cout << "The third result is " << subtraction (x,y) << '\n';

  z= 4 + subtraction (x,y);

  cout << "The fourth result is " << z << '\n';

  return 0;

}

Page 86: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Funções

● Funções sem tipo: void● Função que exibe uma mensagem na tela● Ex.:

Page 87: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Funções

// void function example#include <iostream>using namespace std;void printmessage (){  cout << "I'm a function!";}int main (){  printmessage ();  return 0;}

Page 88: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Funções

● Argumentos podem ser passador por valor ou por referência

● Até agora os argumentos foram passados por valor

int x=5, y=3, z;

z = addition ( x , y );

Page 89: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Funções

● Passamos os valores de x e y (5, 3) e não as variáveis x e y

● Os valores das variáveis a e b passam a ser 5 e 3● Modificações nos valores de a e b não modificam 

os valores de x e y, pois apenas cópias dos valores foram passados para a função.

● Se quisermos que os valores de x e y sejam modificados precisamos passar os dados por referência

Page 90: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Funções

// passing parameters by reference

#include <iostream>

using namespace std;

void duplicate (int& a, int& b, int& c){

  a = a * 2;

  b = b * 2;

  c = c * 2;

}

Page 91: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Funções

int main ()

{

  int x=1, y=3, z=7;

  duplicate (x, y, z);

  cout << "x=" << x << ", y=" << y << ", z=" << z;

  return 0;

}

Page 92: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Funções

● Na declaração da função os tipos de dados de cada parametro são seguidos por um sinal &

● & indica que os paramentros são passados por referência

Page 93: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Funções

Ex.2:

// more than one returning value

#include <iostream>

using namespace std;

void prevnext (int x, int& prev, int& next){

  prev = x­1;

  next = x+1;

}

Page 94: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Funções

int main ()

{

  int x=100, y, z;

  prevnext (x, y, z);

  cout << "Previous=" << y << ", Next=" << z;

  return 0;

}

Page 95: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Funções

● Valores padrões em paramentros● Quando declaramos uma função podemos usar 

valores default para os parametros● O valor default será usado se o argumento 

correspondente for deixado em branco quando a função é chamada.

● Se os valores forem passados para a função, os valores default serão ignorados

Page 96: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Funções

// default values in functions

#include <iostream>

using namespace std;

int divide (int a, int b=2){

  int r;

  r=a/b;

  return (r);

}

Page 97: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Funções

int main ()

{

  cout << divide (12);

  cout << endl;

  cout << divide (20,4);

  return 0;

}

Page 98: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Funções

● Sobrecarga de funções ● Em C++ duas funções podem ter o mesmo nome, 

se:– Possuírem tipo e ou número de parametros diferentes

Page 99: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

FunçõesEx.:

// overloaded function

#include <iostream>

using namespace std;

int operate (int a, int b){

  return (a*b);

}

float operate (float a, float b){

  return (a/b);

}

Page 100: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Funções

int main (){

  int x=5,y=2;

  float n=5.0,m=2.0;

  cout << operate (x,y);

  cout << "\n";

  cout << operate (n,m);

  cout << "\n";

  return 0;

}

Page 101: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Funções

● Recursividade● Propriedade que as funções têm de chama­se a si 

mesmo.● Cálculo de fatorial● Ordenação

Page 102: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

FunçõesEx.:

// factorial calculator

#include <iostream>

using namespace std;

long factorial (long a){

  if (a > 1)

   return (a * factorial (a­1));

  else

   return (1);

}

Page 103: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Funções

int main ()

{

  long number;

  cout << "Please type a number: ";

  cin >> number;

  cout << number << "! = " << factorial (number);

  return 0;

}

Page 104: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Funções

● Declarando funções● Funções precisam ser declaradas antes de serem 

chamadas● Até agora a função main era construído depois de 

todas as outras funções● Solução: declarar as funções

Page 105: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Funções

Ex.:

// declaring functions prototypes

#include <iostream>

using namespace std;

void odd (int a);

void even (int a);

Page 106: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Funçõesint main (){

  int i;

  do {

    cout << "Type a number (0 to exit): ";

    cin >> i;

    odd (i);

  } while (i!=0);

  return 0;

}

Page 107: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Arrays

● Conjunto de elementos do mesmo tipo de dado● Localizados em regiões de memória contígua● Podem ser referenciados individualmente através 

de um identificador

Page 108: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Arrays

● Declarando arrays– int billy [5];

● Inicializando arrays– int billy [5] = { 16, 2, 77, 40, 12071 };

● Acessando elemento– a = billy[2];

Page 109: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Arrays

 

Page 110: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Arrays

Ex.:

// arrays example

#include <iostream>

using namespace std;

int billy [] = {16, 2, 77, 40, 12071};

int n, result=0;

Page 111: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Arraysint main ()

{

  for ( n=0 ; n<5 ; n++ )

  {

    result += billy[n];

  }

  cout << result;

  return 0;

}

Page 112: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Arrays

● Arrays multidimensionais● Declaração

– int jimmy [3][5];

Page 113: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Arrays

● Acessando elemento– int a = jimmy [1][3];

Page 114: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Arrays

Ex.:

#define WIDTH 5

#define HEIGHT 3

int jimmy [HEIGHT][WIDTH];

int n,m;

Page 115: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Arrays

int main (){

  for (n=0;n<HEIGHT;n++)

    for (m=0;m<WIDTH;m++)

    {

      jimmy[n][m]=(n+1)*(m+1);

    }

  return 0;

}

Page 116: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Arrays

● Gerar números aleatórios:– numero= rand() % valor_maximo; 

● Precisa do arquivo de cabeçalho:– #include <stdlib.h>

Page 117: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Arrays

● Exercício:● Crie uma matriz quadrada 10x10● Insira todos os elementos randomicamente● Exiba o resultado da multiplicação dos elementos 

da diagonal principal MENOS a multiplicação dos elementos da diagonal secundária da matriz

Page 118: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Arrays

● Dicas● Diagonal Principal: linha = coluna● Diagonal Secundária: (linha + coluna) = 

(dimensao – 1)● Para percorrer a matriz use:

 for (linha)

    for (coluna)

Page 119: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Classes e Objetos

● Classe– Definem os atributos de um objeto

– Definem o que um objeto pode fazer

● Objetos– É a realização da classe

Page 120: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Classes e Objetos

Ex.:

class CRectangle {

    int x, y;

  public:

    void set_values (int,int);

    int area (void);

  } ;

Page 121: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Classes e Objetos

● Modificadores de acesso● Private: Acessivel somente por membros da 

classe.● Public: Acessivel de qualquer lugar onde o objeto 

é visivel.

Page 122: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Classes e Objetos

// classes example#include <iostream>using namespace std;

class CRectangle {    int x, y;  public:    void set_values (int,int);    int area () {return (x*y);}};

Page 123: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Classes e Objetosvoid CRectangle::set_values (int a, int b) {  x = a;  y = b;}

int main () {  CRectangle rect;  rect.set_values (3,4);  cout << "area: " << rect.area();  return 0;}

Page 124: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Classes e Objetos

● Construtor● Metodo utilizado para inicializar as variaveis de 

um objeto● É chamado automaticamente quando o objeto é 

criado● Precisa ter o mesmo nome da classe e não deve 

ter nenhum dado de retorno

Page 125: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Classes e Objetos● Sobre carga de construtores// overloading class constructors#include <iostream>using namespace std;

class CRectangle {    int width, height;  public:    CRectangle ();    CRectangle (int,int);    int area (void) {return (width*height);}};

Page 126: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Classes e ObjetosCRectangle::CRectangle () {

  width = 5;

  height = 5;

}

CRectangle::CRectangle (int a, int b) {

  width = a;

  height = b;

}

Page 127: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Classes e Objetos

int main () {

  CRectangle rect (3,4);

  CRectangle rectb;

  cout << "rect area: " << rect.area() << endl;

  cout << "rectb area: " << rectb.area() << endl;

  return 0;

}

Page 128: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Classes e Objetos

● Herança● Permite criar classes que são derivadas de outras 

classes● Inclui todas as caracteristicas da classe pai + suas 

próprias● Para indicar herença utilizamos ( : )

– class CRectangle: public CPolygon

Page 129: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Classes e Objetos

● Ex.:

Page 130: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Classes e Objetos// derived classes#include <iostream>using namespace std;class CPolygon {  protected:    int width, height;  public:    void set_values (int a, int b);  };void CPolygon::set_values (int a, int b){   width=a; height=b;}

Page 131: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Classes e Objetosclass CRectangle: public CPolygon {  public:    int area ();  };

int CRectangle::area(){   return (width * height); }

class CTriangle: public CPolygon {  public:    int area ();  };

Page 132: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Classes e Objetosint CTriangle::area(){ 

  return (width * height / 2);

}

  

int main () {

  int a, b, c, d;

  cout << "Informe a base do retangulo: ";

  cin >> a;

  cout << "Informe a altura do retangulo: ";

  cin >> b;

Page 133: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Classes e Objetos

 cout << "Informe a base do triangulo: ";

  cin >> c;

  cout << "Informe a altura do triangulo: ";

  cin >> d;

  CRectangle rect;

  CTriangle trgl;

Page 134: Introdução à linguagem de programação C++glu.fcfrp.usp.br/tulio/materiais/c++.pdf · Pode haver bifurcações, repetição de código e

Classes e Objetos

  rect.set_values (a, b);

  trgl.set_values (c, d);

  cout << "Area do retangulo: " << rect.area() << endl;

  cout << "Area do triangulo: " << trgl.area() << endl;

  return 0;

}