1
Capítulo 1 – Introdução a Computadores
e Programação C++
Índice
1.1 História do C e C++ 1.2 Biblioteca Padrão do C++ 1.3 Java
1.4 Outras Linguagens Alto Nível 1.5 Programação Estruturada
1.6 A Tendência Chave de Software: Tecnologia de Objetos 1.7 O Básico de um Típico Ambiente C++
1.8 Tendências de Hardware
1.9 História da Internet 1.10 História do WWW (World Wide Web)
1.11 Notas Gerais Sobre C++ 1.12 Introdução a Programação C++
1.13 Um Programa Simples: Imprimindo uma Linha de Texto 1.14 Outro Programa Simples: Adicionando Dois Inteiros 1.15 Conceitos de Memória
2
Capítulo 1 – Introdução a Computadores
e Programação C++
Outline 1.16 Aritmética
1.17 Tomada de Decisão: Operadores de Igualdade e Relacionais 1.18 Pensando Sobre Objetos: Introdução a Tecnologia de Objetos e UML (Unified Modeling Language)
3
1.1 História do C e C++
• C++ evoluiu do C
– C evoluiu de outras duas linguagens de programação, BCPL e B
• ANSI C
– Estabeleceu padrões para programação C mundialmente
• C++ “melhora” o C
– Fornece recursos para programação orientada a objetos • Objetos são componentes de software reusáveis que modelam
“coisas” do mundo real
• Programas orientados a objetos são fáceis de entender, corrigir e modificar
4
1.2 Biblioteca Padrão do C++
• Programas C++
– Construídos a partir de peças chamadas classes e funções
• Biblioteca padrão do C++ (C++ standard library)
– Fornece uma rica coleção de classes e funções existentes para todos programadores usar
5
1.3 Java
• Java é usado para
– Criar páginas web com conteúdo interativo e dinâmico – Desenvolver aplicações empresariais em larga escala – Melhorar a funcionalidade de servidores web – Fornecer aplicações para dispositivos de consumo como
celulares, pagers e assistentes digitais (palms)
• Java How To Program
– Livro que acompanhou o desenvolvimento do Java pela Sun – Ensina alunos o essencial sobre gráficos, imagens, animação,
áudio, vídeo, base de dados, redes, multithreading e computação colaborativa
6
1.4 Outras Linguagens Alto Nível
• Outras linguagens alto nível
– FORTRAN
• Usada em aplicações científicas e de engenharia – COBOL
• Usada para manipular grandes volumes de dados – Pascal
7
1.5 Programação Estruturada
• Programação estruturada
– Abordagem disciplinada para escrever programas – Código claro, fácil de testar e depurar, e fácil de modificar
• Multitasking
– Várias atividades rodam em paralelo
8
1.6 A Tendência Chave de Software: Tecnologia
de Objetos
• Objetos
– Componentes de software reusáveis que modelam itens do mundo real
– Unidades de software com significado
• Objetos de dado, objetos de tempo, objetos de pagamento, objetos de contabilidade, objetos de áudio, objetos de vídeo, objetos de arquivo, objetos de registro, etc.
• Qualquer nome pode ser representado como um objeto – Mais entendíveis, melhor organizados e mais fáceis de
manter do que programação procedimental – Favorece a modularidade
9
1.7 O Básico de um Típico Ambiente C++
Fases de programas C++:
• Edição
• Pré-processamento
• Compilação
• Link
• Carga
• Execução
Carregador Memória Primária O programa é criado em um editor e armazenado no disco. O Pré-processador processa o código. Carregador coloca o programa na memória.A CPU lê cada instrução e a executa, possivelmente armazenando novos valores à medida que o programa avança. Compilador O Compilador cria códigoobjeto e o armazena no
disco. O Linker liga o código objeto com as bibliotecas, cria um arquivo executável e o armazena no disco. Editor Pré-processador Linker CPU Memória Primária . . . . . . . . . . . . Disco Disco Disco Disco Disco 10
1.8 Tendências de Hardware
• A cada ano ou dois, computadores aproximadamente
dobram
– A quantidade de memória que contém • Memória é usada para executar programas
– A quantidade de armazenamento secundário que contém • Armazenamento secundário (como armazenamento em disco) é
usado para guardar programas e dados ao longo do tempo – A velocidade de seu processador
• A velocidade com que computadores executam seus programas
11
1.9 História da Internet
• A Internet permite
– Comunicação rápida e fácil via e-mail – Conexão internacional de computadores em rede
• Computação de pacotes
– Transfere dados digitais via pequenos pacotes – Permite múltiplos usuária a mandar e receber dados
simultaneamente
• Não há controle centralizado
– Se uma parte da Internet falhar, as demais partes podem continuar operando
• Largura de banda
12
1.10 História do WWW (World Wide Web)
• World Wide Web
– Permite usuários a localizar e ver documentos multimídia sobre praticamente qualquer tema
– Torna informações acessíveis de maneira instantânea e conveniente mundialmente
– Torna possível que indivíduos e pequenos negócios tenham divulgação mundial
13
1.11 Notas Gerais Sobre C++
• Curso voltado para programadores iniciantes
• Clareza de programação é destacada
• C e C++ são linguagens portáveis
– Programas escritos em C e C++ podem rodar em vários computadores diferentes
14
1.12 Introdução a Programação C++
• Linguagem C++
– Facilita uma abordagem disciplinada e estruturada para projeto de programas de computador
• Em seguida estão vários exemplos
– Os exemplos ilustram várias características importantes do C++
– Cada exemplo é analisado um comando por vez
Índice 15 1. Comentários 2. Carrega <iostream> 3. main 3.1 Imprime “Bem-vindo ao C++\n" 3.2 sai (return 0) Saída do Programa 1 // Fig. 1.2: fig01_02.cpp 2 // Um primeiro programa em C++ 3 #include <iostream> 4 5 int main() 6 { 7 std::cout << “Bem-vindo ao C++!\n"; 8
9 return 0; // indica que o programa terminou corretamente 10}
Bem-vindo ao C++!
Diretiva do pré-processador
Mensagem ao pré-processador do C++. Linhas começando com # são diretivas do pré-processador.
#include <iostream> diz ao pré-processador
para incluir o conteúdo do arquivo <iostream>, que inclui operações de entrada/saída, como impressão de texto na tela..
Comentários
Escritos entre /* e */ ou antecedidos de //. Melhoram a leitura do programa e não causam qualquer ação do computador.
Programas C++ contém uma ou mais funções, uma delas devendo ser a função main
Parênteses são usados para indicar uma função.
int significa que main “retorna" um valor inteiro.
Mais detalhes no Capítulo 3. Um abre chave { começa o corpo de toda função e um fecha chave } termina. Imprime a string de caracteres contida entre as aspas. Toda a linha, incluindo std::cout, o operador <<, a string “Bem-vindo ao C++!\n" e o
ponto-e-vírgual (;), é chamada de um statement, ou comando.
Todos os comando devem terminar com um ponto-e-vírgula.
return é um modo de sair de uma
função.
return 0, neste caso, significa que
o programa terminou normalmente.
16
1.13 Um Programa Simples:
Imprimindo uma Linha de Texto
• std::cout
– Objeto padrão de saída de fluxo de dados (Standard output stream object)
– “Conectado” com a tela
– std:: especifica um "namespace" o qual cout pertence • std:: pode ser removido através do uso do comando using
• <<
– Operador de inserção de fluxo (stream)
– O valor à direita do operador (operando direito) é inserido no stream de saída (que é conectado à tela)
– std::cout << “Welcome to C++!\n”;
• \
– Caractere de fuga (Escape character) – Indica um caractere “especial”
17
1.13 Um Programa Simples:
Imprimindo uma Linha de Texto
• Existem múltiplas formas de imprimir um texto
– Em seguida, mais exemplos Seq:uência de Fuga Descrição
\n Quebra de linha. Posiciona o cursor da tela para o
começo da próxima linha.
\t Tabulação horizontal. Move o cursor da tela para o
próximo tabular.
\r Retorno. Posiciona o cursor da tela para o começo
da linha atual, sem avançar para a próxima linha.
\a Alerta. Dispara o sinal sonoro do sistema.
\\ Barra invertida. Usado para imprimir a barra invertida
\" Aspas duplas. Usado para imprimir o caractere aspas character. Índice 18 1. Carrega<iostream> 2. main 2.1 Imprime “Bem-vindo" 2.2 Imprime “ao C++!" 2.3 newline 2.4 sai (return 0) Saída do Programa Bem-vindo ao C++! 1 // Fig. 1.4: fig01_04.cpp
2 // Imprimindo uma linha com múltiplos statements 3 #include <iostream> 4 5 int main() 6 { 7 std::cout << “Bem-vindo "; 8 std::cout << “ao C++!\n"; 9
10 return 0; // indica que o programa terminou com sucesso 11}
Se o caractere de nova linha '\n' não for especificado, o texto continua na mesma linha.
Índice 19 1. Carrega<iostream> 2. main 2.1 Imprime “Bem-vindo" 2.2 newline 2.3 Imprime “ao" 2.4 newline 2.5 newline 2.6 Imprime "C++!" 2.7 newline 2.8 sai (return 0) Saída do Programa 1 // Fig. 1.5: fig01_05.cpp
2 // Imprimindo múltiplas linhas com um único statement 3 #include <iostream> 4 5 int main() 6 { 7 std::cout << “Bem-vindo\nao\n\nC++!\n"; 8
9 return 0; // indica que o programa terminou com sucesso 10}
Bem-vindo ao C++!
Múltiplas linhas podem ser imprimidas com um único comando.
20
1.14 Outro Programa Simples:
Adicionando Dois Inteiros
• Variáveis
– Local na memória onde um valor pode ser armazenado para ser utilizado pelo programa
– Deve ser declarado com um nome e tipo de dado antes de ser utilizado
– Alguns tipos de dados mais comuns são: • int – números inteiros
• char – caracteres
• double – números com ponto flutuante – Exemplo: int myvariable;
• Declara uma variável chamada myvariable de tipo int – Exemplo: int variable1, variable2;
• Declara duas variáveis, cada uma de tipo int
21
1.14 Outro Programa Simples:
Adicionando Dois Inteiros
• >> (operador de extração de stream)
– Quando usado com std::cin, espera o usuário entrar com um valor e o armazena na variável à direita do operador – O usuário digita um valor e pressiona a tecla Enter (ou
Return) para enviar o dado ao computador – Exemplo:
int myVariable; std::cin >> myVariable;
• Espera a entrada de dados do usuário e armazena o valor em
myVariable
• = (operador de atribuição)
– Atribui um valor a uma variável – Operador binário (possui dois operandos) – Exemplo:
sum = variable1 + variable2;
Índice 22 • Carrega <iostream> 2. main 2.1 Inicializa variáveis integer1, integer2, e sum 2.2 Imprime “Entre com o primeiro inteiro" 2.2.1 Lê entrada 2.3 Imprime "Entre com o segundo inteiro" 2.3.1 Lê entrada 2.4 Adiciona variáveis e coloca o resultado em sum
2.5 Imprime “A soma é " 2.5.1 Imprime sum 2.6 sai (return 0) Saída do Programa 1 // Fig. 1.6: fig01_06.cpp 2 // Programa adição 3 #include <iostream> 4 5 int main() 6 {
7 int integer1, integer2, sum; // declaração 8
9 std::cout << “Entre com o primeiro inteiro\n"; // prompt 10 std::cin >> integer1; // lê um inteiro 11 std::cout << “Entre com o segundo inteiro\n"; // prompt 12 std::cin >> integer2; // lê um inteiro 13 sum = integer1 + integer2; // atribuição da soma 14 std::cout << “A soma e’ " << sum << std::endl; // imprime a soma 15
16 return 0; // indica que o programa terminou com sucesso 17}
Entre com o primeiro inteiro 45
Entre com o segundo inteiro 72
A soma e’ 117
Note como std::cin é usado para capturar a entrada do usuário.
Variáveis podem ser enviadas à saída usando
std::cout << variableName.
std::endl descarrega o buffer e
imprime uma quebra de linha.
23
1.15 Conceitos de Memória
• Nomes de Variáveis
– Correspondem a locais na memória do computador – Toda variável tem um nome, um tipo, um tamanho e um
valor
– Sempre que um novo valor é colocado em uma variável, ele substitui o valor anterior, ou seja, o valor anterior é destruído – Ler variáveis da memória não altera o seus valores
• Uma representação visual
integer1 45
24
1.16 Aritmética
• Cálculos Aritméticos
– Use * para multiplicação e / para divisão – Divisão inteira trunca o resto
• 7 / 5 resulta em 1
– O operador Módulo retorna o resto • 7 % 5 resulta em 2
• Precedência de Operadores
– Alguns operadores aritméticos agem antes de outros (isto é, multiplicação antes da adição)
• Certifique-se de usar parênteses quando necessário – Exemplo: Ache a média de três variáveis a, b e c
25
1.16 Aritmética
• Operadores Aritméticos:
• Regras de precedência de operadores:
Operação C++ Operador
aritmético Expressãoalgébrica Expressão C++
Adição + f + 7 f + 7
Subtração - p – c p - c
Multiplicação * bm b * m
Divisão / x / y x / y
Módulo % r mod s r % s
Operador(es) Operação(ões) Ordem de avaliação(precedência)
() Parênteses Avaliado primeiro. Se os parênteses estão aninhados, a
expressão no par mais interno é avaliada primeiro. Se existem vários pares de parênteses “no mesmo nível”, estes são avaliados da esquerda para direita.
*, /, or % Multiplicação Divisão Módulo
Avaliado em segundo. Se existem vários, estes são avaliados da esquerda para direita.
+ or - Adição
Subtração Avaliado por último. Se existem vários, estes sãoavaliados da esquerda pra direita.
26
1.17 Tomada de Decisão: Operadores de
Igualdade e Relacionais
• Estrutura if
– Testa condições de verdade ou falsidade. Se a condição é satisfeita, há execução, caso contrário a execução é ignorada
• Operadores de igualdade e relacionais
– Menor precedência que operadores aritméticos
• Tabela de operadores relacionais em seguida
27
1.17 Tomada de Decisão: Operadores de
Igualdade e Relacionais
28
1.17 Tomada de Decisão: Operadores de
Igualdade e Relacionais
• Comandos using
– Elimina a necessidade de usar o prefixo std:: – Permite escrever cout diretamente em vez de std::cout – Para usar estas funções sem o prefixo std::, escrevas os
seguintes comandos no topo do programa
using std::cout; using std::cin; using std::endl; Índice 29 1. Carrega <iostream> 2. main 2.1 Inicializa num1 e num2 2.1.1 Lê os dados 2.2 Expressões if 1 // Fig. 1.14: fig01_14.cpp 2 // Usando expressões if, operadores 3 // relacionais, e operadores de igualdade 4 #include <iostream>
5
6 using std::cout; // programa usa cout 7 using std::cin; // programa usa cin 8 using std::endl; // programa usa endl 9
10int main() 11{
12 int num1, num2; 13
14 cout << “Entre com dois inteiros, e irei lhe dizer\n" 15 << “as relacoes que eles satisfazem: "; 16 cin >> num1 >> num2; // lê dois inteiros 17
18 if ( num1 == num2 )
19 cout << num1 << " e’ igual a " << num2 << endl; 20
21 if ( num1 != num2 )
22 cout << num1 << " e’ diferente de " << num2 << endl; 23
24 if ( num1 < num2 )
25 cout << num1 << " e’ menor que " << num2 << endl; 26
27 if ( num1 > num2 )
28 cout << num1 << " e’ maior que " << num2 << endl; 29
30 if ( num1 <= num2 )
As expressões if testam a verdade da condição. Se for
true, o corpo da expressão if
é executada. Senão, o corpo é ignorado.
Para incluir múltiplos comandos no corpo, delimite-o com chaves {}.
Entre com dois inteiros, e irei lhe dizer as relacoes que eles satisfazem: 3 7
3 e’ diferente de 7 3 e’ menor que 7
Note o comando using.
Índice 30
2.3 sai (return 0)
Saída do Programa
34 if ( num1 >= num2 )
35 cout << num1 << " is greater than or equal to " 36 << num2 << endl;
37
38 return 0; // inidica que o programa terminou com sucesso 39}
Entre com dois inteiros, e irei lhe dizer as relacoes que eles satisfazem: 3 7 3 e’ diferente de 7
3 e’ menor que 7 3 e’ menor ou igual a 7
Entre com dois inteiros, e irei lhe dizer as relacoes que eles satisfazem: 22 12 22 e’ diferente de 12
22 e’ maior que 12 22 e’ maior ou igual a 12
Entre com dois inteiros, e irei lhe dizer as relacoes que eles satisfazem: 7 7 7 e’ igual a 7
7 e’ menor ou igual a 7 7 e’ maior ou igual a 7
31
1.18 Pensando Sobre Objetos: Introdução a
Tecnologia de Objetos e
UML (Unified Modeling Language)
• Orientação a Objetos
– Meio natural de pensar sobre o mundo e escrever programas de computador
– Atributos – propriedades de objetos • Tamanho, forma, cor, peso, etc. – Comportamento – ações
• Uma bola rola, quica, enche e murcha • Objetos também podem executar ações – Herança
• Novas classes de objetos absorvem características de classes existentes
– Proteção de informações
• Normalmente, objetos não sabem como outros objetos estão implementados
32
1.18 Pensando Sobre Objetos: Introdução a
Tecnologia de Objetos e
UML (Unified Modeling Language)
• Abstração – visualizar todo o cenário
– Ver uma foto ao invés de um grupo de pontos coloridos – Pensar em termos de casas e não tijolos
• Classe – unidade de programação
– Classes servem como a “planta de projeto” de objetos • Objetos são criados a partir de uma classe – Classes contém funções
• Usadas para implementar comportamento – Classes contém dados
• Usados para implementar atributos – Classes são reutilizáveis
33
1.18 Pensando Sobre Objetos: Introdução a
Tecnologia de Objetos e
UML (Unified Modeling Language)
• Unified Modeling Language (UML)
– Usada para modelar sistemas orientados a objetos e ajudar com o seu projeto
– Linguagem gráfica complexa e rica em propriedades
34
Exercício 1
• Escrever um programa que imprima as seguintes
figuras em um espaço 9 x 9
– Quadrado – Elipse – Flecha – Losângulo