Prévia do material em texto
Prof. Claudio Cesar de Oliveira Cordeiro claudio_cesar_cordeiro@yahoo.com.br Jul 2013 Capítulo 01 Introdução ao C++ Linguagem de Programação I 001 claudio_cesar_cordeiro@yahoo.com.br . Apresentação Professor Claudio Cesar de Oliveira Cordeiro ► Formação Profissional ► Engenheiro Eletricista – Modalidade Eletrônica – Universidade Gama Filho ► Pós-Graduação em Gestão da Excelência Empresarial – UNIFOA ► Experiência Profissional ► Trabalhou na Embratel durante 31 anos em várias áreas (1977 a 2008) ► Aposentou-se em 02 de dezembro de 2008 ► Manteve em atividade a Empresa de Treinamento Multimídia Informática (1990 a 1994) ► Experiência Acadêmica ► Curso de Didática do Ensino Superior pela Fundação MUDES ► Professor da Estácio desde outubro de 2003 ► Instrutor em vários cursos na Embratel ► Professor da extinta Multimídia Informática Ltda ► Disciplinas Ministradas nos Campus Centro Rio e São Gonçalo (2003 a 2011) ► Qualidade e Produtividade ► Gestão de Projeto (com Ênfase no PMI – Project Management Institute) ► Disciplinas Ministradas no Campus Niterói em 2012 e 2013 ► Algoritmos ► Linguagem de Programação I – Linguagem C e C++ ► Lógica de Programação ► Materiais Elétricos 002 003 claudio_cesar_cordeiro@yahoo.com.br . Introdução ao C++ Cap. 01 - Índice Prof. Claudio Cesar de Oliveira Cordeiro ► Conceitos Básicos da Informática ► Hardware & Software ► Comunicação ► Sistemas de Numeração ► Decimal – Binário – Octal - Hexadecimal ► Sistema de Numeração Binário - Bits e Bytes ► Conversão Sistema Binário ► Hexa e Vice-Versa ► Múltiplos do Byte – Tabela IEC e Sistema Internacional SI ► Tipos de Softwares ► Sistemas Operacionais ► Programas Aplicativos ► Linguagens de Programação ► Tipos de Linguagens ► Linguagem de Alto Nível ► Linguagem de Baixo Nível, Máquina, Binária ► Programas Tradutores ► Interpretadores ► Compiladores ► Exemplos de Linguagens de Programação ► A Origem do C++ ► O Criador ► Paradigmas de Programação ► Linguagem de Programa Não-Estruturada ► Linguagem de Programa Estruturada ► Programação Orientada a Objetos (POO, OOP) ► O Compilador Dev-C++ ► Apresentando o Dev-C++ ► Iniciando a Digitação de um Programa Fonte Novo ► Programa Fonte ► Programa Compilado ► Programa em Linguagem de Máquina ou Binária ► Apresentando Número de Linha no Editor do Dev-C++ ► Configuração de Cores no Editor do Dev-C++ Continuação... ► Execução de um Programa C++ começa na Função main () ► Inclusão de Bibliotecas com o Comando #include ► Função main () ► Função Obrigatória num Programa C++ ► Execução de um Programa C++ começa na Função main () ► Atenção com o Compilador Dev-C++ ► Cuidado ao Copiar e Colar ► Mudança de Linha e Caracteres de Escape ► Tabela Caracteres de Escape ou Códigos de Barra Invertida ► O Comando system Dando Pausa no Sistema Operacional ► O Comando getch() Dando Pausa no Programa ► Estrutura Básica de um Programa C++ ► O Comando cout do C++ ► Declaração de Vairáveis ► Atribuição de Valores às Variáveis ► Overload (Sobrecarga) do Caractere de Inserção do cout ► O Comando cin do C++ ► As 7 Primeiras Regras Básicas Para Programar no C++ ► Regra 01 - O melhor Compilador ► Regra 02 - Simplifique, Não Complique! ► Regra 03 - Não se esqueça das Bibliotecas ► Regra 04 - Nunca se esqueça do namespace ► Regra 05 - Nunca se esqueça do ponto e vírgula ► Regra 06 - C++ é case sensitive - Comandos em minúsculas ► Regra 07 - NUNCA DESISTA! ► Logs de Erro do Dev-C++ ► Warnings (Alertas, Avisos) na Compilação com o Dev-C++ 004 claudio_cesar_cordeiro@yahoo.com.br . Conceitos Básicos da Informática Linguagem de Programação I - C++ 005 claudio_cesar_cordeiro@yahoo.com.br . . Hardware e Software Linguagem de Programação I - C++ 006 claudio_cesar_cordeiro@yahoo.com.br HW & SW . Linguagem de Programação I - C++ Hardware + Software + Firmware = Sistema Computacional Hardware (HW) ► Toda a parte física do sistema Software (SW) ► São os programas de um sistema Firmware (FW) ► SW armazenado numa ROM 007 claudio_cesar_cordeiro@yahoo.com.br . Comunicação . Linguagem de Programação I - C++ 008 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Para que haja comunicação entre dois elementos precisamos de ... ... uma linguagem! claudio_cesar_cordeiro@yahoo.com.br A Linguagem de Programação permite a comunicação do homem com a máquina. Não adianta xingar, nem chutar! Tem que entender!!! . Linguagem de Programação I - C++ 009 010 claudio_cesar_cordeiro@yahoo.com.br . Sistemas de Numeração . Linguagem de Programação I - C++ 011 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Sistema de Numeração Decimal Base: Dez 012 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Sistema de Numeração Binário Base: Dois ou Binária Computadores só reconhecem dois algarismos: zero e um! 013 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Sistema de Numeração Octal Base: Oito 014 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Sistema de Numeração Hexadecimal Base: Dezesseis, Hexadecimal, Hexa ou Hex 10 11 12 13 14 15 0 1 2 3 4 5 6 7 8 9 015 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Regras Básicas dos Sistemas de Numeração 016 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Regra 1: Um número pode ser escrito em qualquer Base, desde que a mesma seja maior do que dois. Número 10, na Base Decimal, escrito nas Bases 2, 8 e 16 017 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Regra 2: Convenciona-se que a partir de agora os números devem ser escritos com índice da base (subscrito), exceto quando se referir à base decimal. Atenção! Mesmo convencionado que não precisamos explicitar a base de um número decimal, é de bom tom o fazermos. Assim, evitamos dúvidas. Veja: 10 é dez na base dez ou um e zero na binária? Quem escreveu esqueceu de informar que a base é binária ou é mesmo um número decimal? Melhor prevenir do que remediar! Número 10, na Base Decimal, escrito nas Bases 2, 8 e 16 018 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Regra 3: O C++ diferencia números entre bases diferentes usando prefixos nos números! Atenção! Não se esqueça! Número decimal NUNCA tem zero à esquerda! Número Octal é sempre escrito COM ZERO à esquerda! Número Hexadecimal é sempre escrito com 0x à esquerda! Número 123 na Base Octal 0 0x Número 123 na Base Hexa Número 123 na Base Decimal Zero Zero x Sem nada 019 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Sistema de Numeração Decimal 020 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Um Número Escrito na Base 10 abc = (a x B2) + (b x B1) + (c x B0) Generalizando... claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Contando em Decimal – Algarismos Arábicos Decimais 1 2 3 0 5 6 7 4 9 0 8 1 Contandode 0 a 10 + 1 + 1 + 1 + 1 + 1 + 1 . . . . . . . . . . . 11 12 13 10 15 16 17 14 19 0 18 2 Contando de 10 a 20 + 1 + 1 + 1 + 1 + 1 + 1 . . . . . . . . . . . Note que 10 é a Base de qualquer sistema de numeração. Não é mágica! É Matemática! 021 022 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Sistema de Numeração Binário – Bits e Bytes 023 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Um Número Escrito na Base 2 – Base Binária b2b1b0 = (b2 x B 2) + (b1 x B 1) + (b0 x B 0) Generalizando... Assim, o número binário 1102 é igual a 610 (seis) no decimal! claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Contando em Binário – Os “algarismos” são 0 e 1 1 0 1 0 Contando de 0 a 7 + 1 + 1 + 1 + 1 1 1 0 0 1 1 0 1 0 1 1 1 1 1 Contando de 8 a 16 0 0 0 1 1 0 0 1 0 1 0 1 1 1 0 1 0 0 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 0 0 0 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 024 025 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Contando em Binário – Os “algarismos” são os Bits! Bits b3 b2 b1 b0 0 1 1 0 1 1 Bits b3 b2 b1 b0 1 0 1 1 1 0 1 1 1 1 0 0 D 1 2 3 0 D 5 6 7 4 Bit – Binary Digit – Dígito Binário – Só pode ser zero ou um! 026 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Contando em Binário – De 0 a 16 Bits b3 b2 b1 b0 Bits D 9 10 8 0 0 0 1 0 0 1 1 0 1 0 1 11 0 1 1 1 b3 b2 b1 b0 D 13 14 12 1 0 0 1 1 0 1 1 1 1 0 1 15 1 1 1 1 16 0 0 0 0 1 b0 – Bit Zero – Bit menos significativo. 027 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Byte – Binary Term – Termo Binário b7 b6 b5 b4 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 b3 b2 b1 b0 Deci 1 254 0 0 0 0 0 0 0 1 0 1 1 0 1 255 1 1 1 1 Byte Bits Nybble 0 Nybble 1 Byte é conjunto de 8 bits Nybble é conjunto de 4 bits Um byte tem dois nybbles Bit MAIS significativo. Bit menos significativo. 028 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Sistema Hexadecimal claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Contando em Hexadecimal – Algarismos Arábicos Decimais + Letras! 1 2 3 0 5 6 7 4 9 A 8 Contando de 0 a 10 + 1 + 1 + 1 + 1 + 1 + 1 . . . . . . . . . . . C D D B 0 1 F F F Contando de 11 a 255 + 1 + 1 + 1 + 1 + 1 + 1 . . . . . . . . . . . 1 1 E F D F Note que 10 é a Base de qualquer sistema de numeração. Não é mágica! É Matemática! 1016 é a Base do Hexadecimal (16). 029 030 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Convertendo Binário em Hexadecimal 031 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ b7 b6 b5 b4 b3 b2 b1 b0 Bits Para Converter Hexadecimal em Binário F A 1 1 1 1 1 0 1 0 = 25010 032 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Para Converter Binário Menor que um Nybble em Hexadecimal 1 1 0 1 1 0 0 1º Pass0 - Se número binário com menos de 4 bits, completar com zeros à esquerda. 2º Pass0 – Converter agora o binário para Hexa. 0110 2 é 4 16 1 1 0 0 4 033 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Para Converter Binário Menor que dois Nybbles em Hexadecimal 1 1 0 1º Pass 0 - Se número binário com mais de 4 bits e menor do que 8 bits, completar com zeros à esquerda nyblle a nybble até completa um byte inteiro. 2º Pass0 – Converter agora o binário de quatro em quatro bits para Hexa. 416 1 1 0 1 1 0 1 1 0 0 0 3 034 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Convertendo Hexadecimal em Binário 035 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ b7 b6 b5 b4 b3 b2 b1 b0 Bits Caso 1 - Para Converter Hexadecimal em Binário F A 1 1 1 1 1 0 1 0 = 25010 Atenção! Converter sempre de 4 em 4 bits. O número hexa acima tem ambos os nybbles completos, assim é converter direto para binário. 036 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ b7 b6 b5 b4 b3 b2 b1 b0 Assim, 1116 = 000100012 = 100012 = 1710 Caso 2 - Para Converter Hexadecimal em Binário 1 116 0 0 0 1 0 0 0 1 = 1710 Atenção! Converter sempre de 4 em 4 bits. Se número hexa tiver ny bbles com menos de 4 bits em binário, completar com zeros à esquerda. 037 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Múltiplos do Byte 038 claudio_cesar_cordeiro@yahoo.com.br . Fonte ► http://pt.wikipedia.org/wiki/Byte Linguagem de Programação I - C++ Múltiplos do Byte 039 claudio_cesar_cordeiro@yahoo.com.br . Tipos de Software . Linguagem de Programação I - C++ 040 claudio_cesar_cordeiro@yahoo.com.br . Tipos de Softwares Sistemas Operacionais Programas Aplicativos Linguagens de Programação Sistemas Operacionais são programas que controlam todo o HW e todo os outros SW do sistema de computador. Linguagens de Programação permite que o homem escreva comandos para que o computador possa executá-los. Programas Aplicativos são os desenvolvidos para uma determinada aplicação. Exemplo: para escrever textos usamos o MS (MicroSoft) Word. Para criarmos planilhas eletrônicas usamos o MS Excel e para esta apresentação na tela estamos usando o aplicativo MS PowerPoinT (PPT). . Linguagem de Programação I - C++ 041 claudio_cesar_cordeiro@yahoo.com.br . Tipos de Linguagens . Linguagem de Programação I - C++ 042 claudio_cesar_cordeiro@yahoo.com.br * BASIC foi muito utilizado na década de 80. Hoje temos o Visual Basic da Microsoft. . Exemplo Programa em Linguagem de Alto Nível 10 Cls 20 Print “Alô, mundo!” 30 End Linguagem BASIC de Alto Nível BASIC é uma sigla! Beginners All-purpose Standard Information Code Linguagem de Alto Nível é aquela em que os comandos estão escritos numa linguagem que é fácil para o homem entender. Cls acima vem do inglês Clear Screen, limpar a tela. Print imprime na tela um texto, uma variável ou expressão. End é fim. Este programinha escrito pelo programador é chamado de Programa Fonte, ou Código Fonte. Alô, mundo! Linguagem de Programação I - C++ 0423 claudio_cesar_cordeiro@yahoo.com.br . Exemplo Programa em Linguagem de Baixo Nível 00011010 11001100 00101100 00110011 00101111 00000000 Linguagem de Baixo Nível Linguagem de Máquina é a linguagem de mais baixo nível que temos. É a Linguagens dos Zeros (0) e Uns (1)! Linguagemde Baixo Nível é aquela em que os comandos estão escritos numa linguagem que a máquina entende; e ela só entende zeros (0) e uns (1). Linguagem de Máquina ou Linguagem Binária é tremendamente difícil para o homem entender. Então deve haver algum programa que converta a Linguagem de Alto Nível em Linguagem de Máquina, certo? Sim! São os Programas Tradutores. Este programinha que a CPU entende é chamado de Programa em Linguagem de Máquina, Código Binário e ainda Código EXEcutável (são os programas .exe). Alô, mundo! . Linguagem de Programação I - C++ 044 claudio_cesar_cordeiro@yahoo.com.br . Tipos de Tradutores de Linguagens de Programação Interpretadores Compiladores Interpretadores As instruções do Programa Fonte são traduzidas em código binário e executadas imediatamente. Compiladores As instruções do Programa Fonte são traduzidas, mas não são executadas imediatamente! É gerado um novo programa com as instruções convertidas na Linguagem de Máquina, que posteriormente será executado; é o famoso .exe. SO – Sistema Operacional (OS – Operating System) Linguagem de Programação I - C++ Portugol C++ 045 claudio_cesar_cordeiro@yahoo.com.br . Exemplos de Linguagens de Programação . Linguagem de Programação I - C++ 046 claudio_cesar_cordeiro@yahoo.com.br http://pt.wikipedia.org/wiki/Anexo:Lista_de_linguagens_de_programa%C3%A7%C3%A3o Algumas Linguagens de Programação . Linguagem de Programação I - C++ 047 claudio_cesar_cordeiro@yahoo.com.br . Origem do C++ . Linguagem de Programação I - C++ 048 claudio_cesar_cordeiro@yahoo.com.br Mais detalhes ► http://pt.wikipedia.org/wiki/C%2B%2B C++ C++ ► O C++ (em português lê-se "cê mais mais") é uma linguagem de programação multi-paradigma e de uso geral. A linguagem é considerada de nível médio ou intemediário, pois combina características de linguagens de alto e baixo níveis. Desde os anos 90 é uma das linguagens comerciais mais populares. ► Bjarne Straustrup desenvolveu o C++ (originalmente com o nome C with Classes (C com Classes) em 1983 no Bell Labs como um adicional à linguagem C. Novas características foram adicionadas com o tempo, como funções virtuais, sobrecarga de operadores, herança múltipla, gabaritos e tratamento de exceções. Após a padronização ISO realizada em 1998 e a posterior revisão realizada em 2003, uma nova versão da especificação da linguagem foi lançada em setembro de 2011, conhecida informalmente como C++11. ► O porquê do nome C++ - Durante sua fase inicial de desenvolvimento, a linguagem era chamada "novo C", "C84" ou ainda "C com classes". O termo "C++" é creditado a Rick Mascitti, e foi utilizado pela primeira vez em dezembro de 1983. Ele é uma referência ao operador de incremento ++, significando um incremento, um acréscimo (uma evolução) à linguagem C. ► Bjarne Stroustrup (11 de junho de 1950) é dinamarquês, cientista da computação e professor catedrático da Universidade do Texas. É conhecido como o Pai da Linguagem de Programação I - C++. Bjarne Stroustrup A Linguagem C faz com que dar um tiro no pé seja fácil. A Linguagem C++ torna isso mais difícil, mas quando nós o fazemos arrebentamos com a perna toda. Bjarne Stroustrup Linguagem de Programação I - C++ ... e o Criador! A origem ... Leitura Complementar ► Apostilas indicadas 049 claudio_cesar_cordeiro@yahoo.com.br . Paradigmas de Programação . Linguagem de Programação I - C++ 050 claudio_cesar_cordeiro@yahoo.com.br http://pt.wikipedia.org/wiki/Paradigma_de_programa%C3%A7%C3%A3o Paradigmas de Programação do C e do C++ Linguagem de Programação I - C++ Paradigma de Programação, simplificando, é a forma ou método com que o programador escreve os programas. 051 claudio_cesar_cordeiro@yahoo.com.br . Linguagem de Programação Não- Estruturada . Linguagem de Programação I - C++ 052 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Programação Não- Estruturada é uma forma (paradigma) de programação de computadores que permite que os programas possam usar estruturas de desvio incondi- cionais, além de estruturas de sequência, decisão e repetição. As famosas estruturas de desvio incondicional mais conhecidas são GOTO, GOSUB, ONGOTO, ONGOSUB que eram utilizadas na Linguagem BASIC da década de 80. 10 Cls 20 Print “Cuidado!” 30 Goto 50 40 Print “Alô, Mundo!” 50 End Neste pequeno programa em BASIC a mensagem “Alô, Mundo!”, nunca será mostrada devido ao desvio incondicinal para o FIM! Problemas da Programação Não-Estruturada! Aqui fica fácil ver o problema, mas num programa de centenas ou milhares de linhas não é tão simples assim! Programação Não-Estruturada 053 claudio_cesar_cordeiro@yahoo.com.br . Linguagem de Programação Estruturada . Linguagem de Programação I - C++ 054 . . Linguagem de Programação I - C++ Programação Estruturada é uma forma (paradigma) de programação de computadores que estabelece que todos os programas podem ser escritos usando-se apenas três estruturas básicas: sequência, decisão e repetição. Estrutura de Sequências de Comandos Estruturas de Decisão Estruturas de Repetição #include <iostream> int main () { cout << “Alô Mundo!”; return 0; } if switch for while do while Não se usa estruturas de desvio incondicional tais como GOTO ou GOSUB na Linguagem Estruturada! As Linguagens C e C++ são Linguagens Estruturadas! Programação Estruturada claudio_cesar_cordeiro@yahoo.com.br 1 2 3 055 claudio_cesar_cordeiro@yahoo.com.br . Programação Orientada a Objetos . Linguagem de Programação I - C++ 056 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ No Paradigma de Programação Orientada a Objetos (POO) ou Object Oriented Programming (OOP), as unidades de software são tratadas como objetos. Por exemplo: um comando seria um objeto. A Linguagem C não suporta POO, mas o C++ sim! Programação Orientada a Objetos Nossa Disciplina Linguagem de Programação I não contempla a Programação Orientada a Objetos, portanto, não será alvo de nosso estudo! Aos interessados no assunto, sugiro o excelente livro “Programação Orientada a Objetos com C++” de André Duarte Bueno – Editora Novatec Alguns Conceitos da POO: ► Abstração ► Objeto ou Instância ► Identidade do Objeto ► Classes ► Atributos (Propriedades/Variáveis) ► Métodos (Funções) ► Herança (Heriditariedade) ► Polimorfismo ► UML – Unified Modeling Language 057 claudio_cesar_cordeiro@yahoo.com.br . O Compilador Dev-C++ . Linguagem de Programação I - C++ Apresentando o Compilador Dev-C++ 5.0 beta 9.2 (4.9.9.2 ) claudio_cesar_cordeiro@yahoo.com.br http://www.bloodshed.net/devcpp.html O Compilador DEV-C++ freeware Linguagem de Programação I - C++ 058 Iniciando a Digitação de um Programa Fonte Novo claudio_cesar_cordeiro@yahoo.com.br http://www.bloodshed.net/devcpp.html O Compilador DEV-C++ freeware Linguagem de Programação I - C++ 059 Programa Fonte é o programa original escrito em Linguagem de Alto Nível pelo programador! Os comandos são fáceis de serem entendidos, afinal são palavras e acrônimos em Inglês. Compilador Transforma o Programa Fonte num Programa emLinguagem de Máquina claudio_cesar_cordeiro@yahoo.com.br http://www.bloodshed.net/devcpp.html O Compilador DEV-C++ freeware Linguagem de Programação I - C++ 060 Programa Fonte em C++. Arquivo com a extensão .cpp no Compilador Dev-C++. Programa Objeto, Programa em Linguagem de Máquina ou Binária com a extensão .exe, que pode ser executado pelo Sistema Operacional Windows. Compilador Fonte Executável Alto Nível Baixo Nível Apresentando o Número das Linhas do Programa Fonte e Tamanho das Letras claudio_cesar_cordeiro@yahoo.com.br Veja link para download do Dev-C++ ► http://www.bloodshed.net/devcpp.html Configurando o DEV-C++ Linguagem de Programação I - C++ 061 Os números das linhas que aparecem no Editor não fazem parte do programa, mas ajudam pra caramba na hora de se ”debugar” o programa! Debugging Aids – Ajudas (Recursos) para se debugar o programa. “Debugar” é procurar por erros do programa. Iniciando o Compilador Dev-C++ Exemplo 01 – O Primeiro Programa Ninguém Esquece! 062 claudio_cesar_cordeiro@yahoo.com.br . Linguagem de Programação I - C++ #include <iostream> //Inclui a Biblioteca iostream using namespace std; //Usaremos grupo lógico (namespace) padrão int main () //Função principal do C++ { //Início da função main. system ("PAUSE > null"); //Pausa. Para seguir pressionar qq tecla return 0; //Retorno com valor zero, tudo OK } Após iniciar o Compilador Dev- C++, para criarmos um novo programa C++, devemos clicar em: ►File (Arquivo) ►New (Novo) ►Source File (Arquivo Fonte). Podemos também pressionar Ctrl+N ou clicar no Botão Novo. Em seguida devemos digitar nosso primeiro programinha ao lado. Digite estas 7 linhas abaixo EXATAMENTE como está aqui neste quadro. Não precisa digitar as linhas de comentário. Iniciando o Compilador Dev-C++ Exemplo 01 – O Primeiro Programa Ninguém Esquece! 063 claudio_cesar_cordeiro@yahoo.com.br . Linguagem de Programação I - C++ AS cores são configuráveis no Dev-C++! ► Menu Ferramentas ► Opções do Editor ► Sintaxe Para compilar o programa fonte e logo em seguida executar o programa compilado, devemos pressionar a tecla: F9! Atenção! A execução de um programa C++ começa na Função main ()! Iniciando o Compilador Dev-C++ Exemplo 01 – O Primeiro Programa Ninguém Esquece! 064 claudio_cesar_cordeiro@yahoo.com.br . Linguagem de Programação I - C++ Mais um vez! Para compilar o programa fonte e logo em seguida executar o programa compilado, devemos pressionar a tecla: F9! O nosso primeiro programinha na verdade não faz nada, mas FUNCIONA! Este é o resultado da execução do Programa Compilado. Uma linda tela preta! Exemplo 01 – Listagem Digitar no Editor do Dev-C++ Primeiro Programa em C++ 065 claudio_cesar_cordeiro@yahoo.com.br Podemos ter outras funções no programa, mas a main () é obrigatória! Linguagem de Programação I - C++ Digite estas linhas no Dev- C++. Não esqueça do ponto e vírgula! Não esqueça do ponto e vírgula! Não esqueça os três pontos e vírgulas! Exemplo de Programa C++ Exemplo 01 – O Primeiro Programa Ninguém Esquece! 066 claudio_cesar_cordeiro@yahoo.com.br Este exemplo mostra a estrutura básica de um programa em C++. Não faz nada ainda, pois só inserimos o comando system. Importante notar a Biblioteca iostream no início e a função principal main () dentro da qual os comandos serão inseridos (entre as chaves). Após a compilação pelo Dev-C++ não foram encontrados erros nem warnings (avisos, advertências). A Biblioteca iostream contém os principais comandos de entrada e saída de dados do C++, entre outros. Para incluirmos uma biblioteca usamos o comando #include <nome_da_biblioteca>. Compilar e Executar (F9) Executar (Ctrl+F10) Compilar (Ctrl+F9) . Linguagem de Programação I - C++ Dev-C++ na versão Inglês Exemplo 01 – Listagem para Dev-C++ Necessária para o comandos system, cin, cout e endl. Biblioteca e Namespace 067 claudio_cesar_cordeiro@yahoo.com.br As chaves delimitam o início e o fim de um bloco de comandos, no caso o da a função main (). Linguagem de Programação I - C++ Grupo Lógico (namespace) necessário para o comando cin e cout. Função OBRIGATÓRIA num programa C++. A execução de um programa C++ começa em main ()! Dá uma pausa no Sistema Operacional. Se a função main () chegou até e aqui e retornou o valor inteiro (int) zero, tudo OK na execução do programa. Início de main () Fim de main () Exemplo de Programa C++ Executando o Primeiro Programa Que Ninguém Esquece! 068 claudio_cesar_cordeiro@yahoo.com.br Para somente executar o programa pressionamos Ctrl+F10 ou clicamos no ícone de executar do Compilador Dev-C++. Aparece somente uma tela preta e o cursor piscando. Compilar e Executar (F9) Executar (Ctrl+F10) Compilar (Ctrl+F9) . Linguagem de Programação I - C++ Como esperado, somente uma tela! preta!! Exemplo de Programa C++ Exemplo 02 - O Primeiro Programa – Agora com Mensagem na Tela 069 claudio_cesar_cordeiro@yahoo.com.br Para enviar uma mensagem para a tela usamos o comando cout. Veja que usamos o símbolo << de inserção. Compilar e Executar (F9) Executar (Ctrl+F10) Compilar (Ctrl+F9) Nota Interessante: Apesar de digitarmos duas vezes o sinal de menor, o compilador entende os dois como somente um caractere de inserção. . Atenção! cout é objeto do C++ e está contido na Biblioteca <iostream> e será usado no namespace std (padrão) do C++. Linguagem de Programação I - C++ Exemplo de Programa C++ Exemplo 02 - O Primeiro Programa com Mensagem na Tela 070 claudio_cesar_cordeiro@yahoo.com.br Note que a mensagem deve estar entre aspas duplas. Tudo que estiver dentro das aspas, no comando cout, será mostrado na tela. Compilar e Executar (F9) Executar (Ctrl+F10) Compilar (Ctrl+F9) . Linguagem de Programação I - C++ 071 claudio_cesar_cordeiro@yahoo.com.br . Atenção com o Compilador Dev-C++ . Linguagem de Programação I - C++ Dev-C++ não compila! Janela de programa anterior aberta! 072 Compilar e Executar (F9) Executar (Ctrl+F10) Compilar (Ctrl+F9) claudio_cesar_cordeiro@yahoo.com.br Janela de Executável Aberta . Linguagem de Programação I - C++ Às vezes quando pressionamos F9 para compilar e executar, o Dev-C++ não responde. Verifique se não há um ícone da janelinha do DEV-C++ da última execução aberta na Barra de Tarefas. Se houver, precisamos fechá-la. 073 claudio_cesar_cordeiro@yahoo.com.br . Cuidado ao Copiar do PPT, ou da Internet, e colar no Editor do Compilador Dev- C++ . Linguagem de Programação I - C++ #include <iostream> using namespace std; int main () { cout << "Meu Primeiro Programa Funciona!!!"; cout << “Pressione qq tecla para terminar.”; system ("PAUSE > null"); return 0; } Exemplo 03 – Listagem para Dev-C++ Agora duas mensagens! 074 claudio_cesar_cordeiro@yahoo.com.br. Linguagem de Programação I - C++ Exemplo 03 – Listagem Copiada do PPT para Dev-C++ ATENÇÃO!!! O segundo comando cout FOI DIGITADO NO PPT. Quando copiamos no Dev-C++ note que as aspas ficaram DIFERENTES e a mensagem ficou na cor preta! Quando compilamos o programa, dá erro In function “int main ()’: no comando cout! Solução: no DEV-C++ redigite as aspas e aí funciona. Cuidado com o Copiar e Colar! Detalhe: isto nem sempre acontece, mas fiquemos atentos! Erro ao Copiar do PowerPoinT (PPT) 075 claudio_cesar_cordeiro@yahoo.com.br . Linguagem de Programação I - C++ Atenção! Mensagem do comando cout na cor preta significa aspas duplas erradas! 076 claudio_cesar_cordeiro@yahoo.com.br . Mudança de Linha Caracteres de Escape . Linguagem de Programação I - C++ Enviando Mensagem Para a Tela - cout Exemplo 03 - O Primeiro Programa – Mais Mensagens na Tela 077 Compilar e Executar (F9) Executar (Ctrl+F10) Compilar (Ctrl+F9) claudio_cesar_cordeiro@yahoo.com.br . Linguagem de Programação I - C++ Quando o programa for executado, veja que as mensagens ficarão na mesma linha! Vamos fazer com que as mensagens fiquem em linha diferentes. 078 Para mudarmos de linha usamos um caractere especial chamado Caractere de Escape ou Código de Barra Invertida: \n dentro da mensagem do cout. claudio_cesar_cordeiro@yahoo.com.br Exemplo 04 - Mais Mensagens na Tela em Linhas Diferentes Caracteres Especiais de Escape . Linguagem de Programação I - C++ Nota: \n vem de new line ► nova linha. 079 Podemos também fazer mudança de linha usando o modificador endl do comando cout. endl (end line) faz o mesmo que \n dentro da mensagem como visto no exemplo anterior. claudio_cesar_cordeiro@yahoo.com.br Exemplo 05 - Mais Mensagens Usando endl Caractere Especial de Escape – Mudança de Linha Um endl no comando cout provoca uma mudança de linha. . Linguagem de Programação I - C++ Códigos de Barra Invertida ou Caracteres de Escape Estes códigos (barra invertida + caractere) são usados para inserir caracteres de controle ou especiais não podem ser facilmente inseridos via teclado. São muito usados com os comandos cout (C++). Códigos de Escape 080 claudio_cesar_cordeiro@yahoo.com.br ATENÇÃO! Apesar de digitarmos dois caracteres, para o C++ são apenas UM! Linguagem de Programação I - C++ 081 claudio_cesar_cordeiro@yahoo.com.br . O Comando system para dar pausa do Sistema Operacional . Linguagem de Programação I - C++ 082 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Exemplo 06 – O Comando system Note que na linha 17 o comando system foi modificada de system (“PAUSE > null”); para system (“PAUSE”);. O system sem “... > null”); envia sua mensagem de parada na tela. Veja que aparecem duas mensagens avisando para prosseguir. A da linha 14 foi o programador quem definiu, mas a da linha 17 é o comando system quem envia, sem interferência do programador. Também funcionam! 083 claudio_cesar_cordeiro@yahoo.com.br . O Comando getch() e a pausa do Programa . Linguagem de Programação I - C++ 084 Há programadores profissionais que condenam a prática de dar pausa no SO usando o comando system, devido a vários efeitos indesejados e consumir muito recurso da máquina. Uma outra forma de dar pausa (no programa e não no SO) é usar o comando getch(), que precisa da biblioteca conio.h. claudio_cesar_cordeiro@yahoo.com.br Pausa no Programa Usando getch() . Linguagem de Programação I - C++ Exemplo 07 – Pausa com o Comando getch() 085 claudio_cesar_cordeiro@yahoo.com.br . Estrutura Básica de um Programa em C++ . Linguagem de Programação I - C++ 086 claudio_cesar_cordeiro@yahoo.com.br Passo a Passo na Estrutura Básica de um Programa em C++ - Para Iniciantes! DE NOVO! NOVAMENTE! OUTRA VEZ! Pausa no Programa Usando getch() . Linguagem de Programação I - C++ 1º - Incluir biblioteca(s) 2º - Usar namespace (grupo lógico) padrão (std) 3º - A Função obrigatória do C++ 5º - Dar uma pausa no SO ou melhor, usar o getch() 6º - Retorno da Função main(). Retorna um número inteiro 4º - Abre Chavae ► Início da Função main(). 7º - Fecha Chave ► Fim da Função main() 087 claudio_cesar_cordeiro@yahoo.com.br . O Comando cout do C++ . Linguagem de Programação I - C++ claudio_cesar_cordeiro@yahoo.com.br . Lógica de Programação Caracteres de Inserção de Dados << >> cout << var; cout << “\a”; cout vem de console out. Saída para o console, no caso o vídeo! cout << “texto”\n; 1 2 3 Este comando 2 dá erro na compilação. Por quê? 088 089 O comando cout envia para a tela uma mensagem escrita entre aspas duplas, uma mudança de linha (\n ou endl), Caracteres de Escape, tipo: \n, \a, \t, \’, \” e outros e envia também outros dados e informações que veremos a seguir. claudio_cesar_cordeiro@yahoo.com.br Exemplo 07 - O Comando cout enviando mensagens para a tela . Linguagem de Programação I - C++ Usando Comando cout 090 claudio_cesar_cordeiro@yahoo.com.br . Declaração de Variáveis Atribuição de Valores às Variáveis . Linguagem de Programação I - C++ 091 claudio_cesar_cordeiro@yahoo.com.br Exemplo 08 - Enviando conteúdo de variáveis para a tela – Parte 1/2 Estudaremos as variáveis com detalhes mais adiante. Linguagem de Programação I - C++ Aproveitemos este exemplo para apresentar dois novos conceitos: Declaração de Variáveis (linhas 12 e 13) e Atribuição de Valor às Variáveis (linhas 14 e 15). Importante pra cachorro! E pra gente também! O sinal de igual (=) NÃO É SINAL DE IGUAL NO C++! É o Operador de ATRIBUIÇÃO! Usando Comando cout 092 claudio_cesar_cordeiro@yahoo.com.br . Linguagem de Programação I - C++ Aproveitando ainda o exemplo apresentamos os dois primeiros Operadores Aritméticos: Soma (+) e Multiplicação (*). Note que dentro da mensagem da linha 27 x + y está em vermelho, será mostrado na tela o texto x + y pois é parte da mensagem. No final desta linha x + y aparece novamente na cor preta. Neste caso é o resultado da expressão matemática da soma x + y é que será enviada para a tela! No caso: 7! Exemplo 08 - Enviando conteúdo de expressão para tela – Parte 2/2 Usando Comando cout 093 claudio_cesar_cordeiro@yahoo.com.br . Linguagem de Programação I - C++ Exemplo 08 – Execução do Programa Usando Comando cout 094 claudio_cesar_cordeiro@yahoo.com.br . Overload do Caractere de Inserção no Comando cout do C++ . Linguagem de Programação I - C++ 095 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Sobrecarga (Overload) do Caractere de Inserção no cout Overload (sobrecarga) do Caractere de Inserção, também conhecido como Operador de Inserção, nada mais é do que usarmos mais de um << no comando cout. Já vínhamos utilizando este recurso nos nossos exemplos. Agora oficializamos seu uso! Neste trecho de programa C++, as linhas 20, 21, 23, 24, 26, 27, 29 e 30 estão TODAS usando overload do Caractere de Inserção no comando cout! 096 claudio_cesar_cordeiro@yahoo.com.br. O Comando cin do C++ . Linguagem de Programação I - C++ claudio_cesar_cordeiro@yahoo.com.br . Lógica de Programação Caracteres de Extração de Dados >> cin vem de console input. Entrada de dados pelo console, no caso o teclado! Quando queremos entrar com um dado qualquer no programa, usamos o comando cin. >> O caracter >> é chamado de Caracter de Extração de Dados. É o inverso do Caractere de Inserção do cout. 097 098 O primeiro número que o operador digitar no teclado será atribuído à variável x (linha 16) e o segundo à variável y (linha 18). claudio_cesar_cordeiro@yahoo.com.br . Linguagem de Programação I - C++ Exemplo 09 – Recebendo Dados Pelo Teclado – Parte 1/2 Usando Comando cin 099 claudio_cesar_cordeiro@yahoo.com.br Usando Comando cin . Linguagem de Programação I - C++ Exemplo 09 – Recebendo Dados Pelo Teclado – Parte 2/2 O restante do programa é exatamente igual ao exemplo anterior. Isto é, mostra o conteúdo das variáveis (linhas 20 e 21), a soma (linha 26) e o produto, ou multiplicação delas (linha 27). 100 claudio_cesar_cordeiro@yahoo.com.br Usando Comando cin . Linguagem de Programação I - C++ Exemplo 09 – Execução do Programa O Dev-C++ não entende acentuação do Português no comando cout. Melhor não acentuar! Melhor não acentuar! Já acentuação nas Linhas de Comentário (//...) e/ou Blocos de Comentários (/*...*/) não tem problema! 101 claudio_cesar_cordeiro@yahoo.com.br . As 7 Primeiras Regras Básicas Para Começar a Programar em C++ . Linguagem de Programação I - C++ 102 O compilador que vamos utilizar, apesar de “alguns” bugs (mais de 300 ) e não ter mais manutenção desde 2005, é fácil de usar, de instalar e de se conseguir, haja vista ser um freeware. Ele é o ... Dev-C++. Em suma: para nosso estudo inicial em C++ ele atende muito bem! Existem outros melhores e ... BEM mais caros! Exemplos: o compilador C++ da Borland e o da Microsoft etc. claudio_cesar_cordeiro@yahoo.com.br Regra 01 – O melhor compilador é o que gente conhece! Regras Básicas de Programação C++ Aula Dev-C++ no YouTube ► http://www.youtube.com/watch?v=nAjcfERf07M. Linguagem de Programação I - C++ Aulinha no YouTube 103 Para os neófitos, esta regra vale ouro! Comece com soluções simples. Quando estivar dominando o assunto, aí pode fazer algumas gracinhas! Sem muito entusiasmo, porque para dar um tiro na perda com o C++ basta um ponto e vírgula fora do lugar! claudio_cesar_cordeiro@yahoo.com.br Regra 02 – Simplifique, não complique! Linguagem de Programação I - C++ . Regras Básicas de Programação C++ 104 O C++ adora uma bibliotecazinha! Não vamos entrar no buraco do queijo com elas, mas as básicas têm que estar no sangue. Paulatinamente vamos apresentar mais algumas! claudio_cesar_cordeiro@yahoo.com.br Regra 03 – Nunca se esqueça das bibliotecas! Linguagem de Programação I - C++ As duas primeiras: iostream ► system, cin, cout e endl precisam dela conio.h ► getch() precisa dela Atenção! O comando #include não tem o ponto e vírgula (;) como finalizador da linha de comando! Coisa rara no C++! Esquecer de incluir as bibliotecas, ou digitar o nome delas errado, é uma fonte de erro na programação em C++. . Regras Básicas de Programação C++ Repare também que int main () também não tem ponto e vírgula. Na verdade poderia ter. Quando estudarmos as funções veremos quando ter ou não o ponto e vírgula numa função. 105 O namespace evita conflitos entre nomes iguais de objetos no ambiente C++. Para não nos estressarmos usaremos sempre o namespace padrão: std! claudio_cesar_cordeiro@yahoo.com.br Linguagem de Programação I - C++ Regra 04 – Nunca se esqueça do namespace ou Grupo Lógico! using namespace std; Necessário para: cin, cout e endl! Atenção! O comando using namespace std; TEM o ponto e vírgula (;) como finalizador da linha de comando, tal como 99,99% dos comandos do C++! Esquecer também o comando using namespace std; ou escrevê- lo de forma incorreta é outra fonte de erro na programação em C++. . Regras Básicas de Programação C++ 106 Uma linha de comando no C++ SÓ TERMINA QUANDO FOR ENCONTRADO UM PONTO E VÍRGULA, com raríssimas exceções. claudio_cesar_cordeiro@yahoo.com.br Linguagem de Programação I - C++ Regra 05 – Nunca se esqueça do ponto e vírgula! No trecho de programa C++ acima, a linha 20 do editor tem somente um comando cout, enviando para a tela duas mudanças de linha. Por incrível que pareça, da linha 22 até a linha 25 TEMOS TAMBÉM SOMENTE UM COMANDO C++! O que caracteriza o final de um comando C++ é ponto e vírgula e não a mudança de linha no final. O Editor mostra quatro linhas de texto, mas é um comando único! Outra grande fonte de erro na programação em C++ e MUITÍSSIMO COMUM se deve ao esquecimento do ponto e vírgula para finalizar os comandos! . Regras Básicas de Programação C++ 107 claudio_cesar_cordeiro@yahoo.com.br Linguagem de Programação I - C++ Regra 06 – C++ é case sensitive – Comandos em minúsculas Não poderíamos escrever o trecho acima como: #INCLUDE <IOSTREAM> #INCLUDE <CONIO.H> USING NAMESPACE STD; INT MAIN () { INT a =5,A=11; COUT << .... e assim por diante! Dá erro na primeira linha, e em outras! Mais uma fonte de erro na programação em C++ é escrever os comandos em letras MAIÚSCULAS! Os Comandos e Palavras Reservadas em C++ são SEMPRE em minúsculas! Mesmo com os avisos acima, vai ter gente que vai escrever comandos em MAIÚSCULAS! Regras Básicas de Programação C++ C++ é CASE SENSITIVE! C++ é uma Linguagem case sensitive, isto é, é sensível a CAIXA ALTA (UPPER CASE) e caixa baixa (lower case). Por exemplo: int A; e int a; declaram duas variáveis de nome A e a. A variável A (maiúscula) é DIFERENTE da variável a (minúscula). São, portanto, duas variáveis diferentes! O que têm em comum, neste exemplo, é que ambas são do tipo inteiro. C++ é CASE SENSITIVE! C++ é CASE SENSITIVE! 108 Vence quem persiste! claudio_cesar_cordeiro@yahoo.com.br . Linguagem de Programação I - C++ Regra 07 – E por último ... (por enquanto ... pois a lista continuará!) Regras Básicas de Programação C++ 109 claudio_cesar_cordeiro@yahoo.com.br . Log de Erros do C++ . Linguagem de Programação I - C++ 110 claudio_cesar_cordeiro@yahoo.com.br Log de Erros do Dev-C++ . Linguagem de Programação I - C++ Exemplo 10 - Registro de Erros (log) do Dev-C++ - Falta de iostream Erro nas linhas 14, 17 e 37! Na verdade o erro está na linha 6! Foi colocada como comentário! A biblioteca iostream é necessária para uso dos comandos system, cin, cout e endl. Outro erro comum é errar o nome da biblioteca. Digitar #include <iostrema> é o mesmo que não incluir a bibioteca, pois o nome correto dela é: iostream! 111 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Log de Erros do Dev-C++ Exemplo 11 – Log de Erros Dev-C++ - Falta da Biblioteca conio.h Biblioteca conio.h é necessária para uso do comando getch(). 112 claudio_cesar_cordeiro@yahoo.com.br. . Linguagem de Programação I - C++ Log de Erros do Dev-C++ Exemplo 12 – Log de Erros Dev-C++ - Comandos em Maiúsculas Não foi encontrado o comando COUT! Nem poderia! Não existe! Existe cout com letras minúsculas! Lembre-se: C++ é case sensitive! 113 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Log de Erros do Dev-C++ Exemplo 13 – Log de Erros Dev-C++ - Falta de Ponto e Vírgula (;) Falta ponto e vírgula finalizador do comando da linha 8. Aqui vale uma explicação! O Log apresenta a linha 9 em vermelho com a mensagem de erro: “expected ‘;’ before “int”. Na verdade o erro está na linha anterior, a linha 8. O que ocorre é o seguinte: se tudo estivesse OK na linha 8 deveria ter um ponto e vírgula no final dela. Este ponto e vírgula estaria imediatamente antes do início da linha 9. Na linha 9 ela começa com int main (). Por isso o log diz que esperava (expected) um ponto e vírgula antes, que na verdade é o final da linha anterior! O log apresentou a linha 9 como errada, mas é a linha 8 que tem o erro! Tendeu? 114 claudio_cesar_cordeiro@yahoo.com.br . Warning na Compilação . Linguagem de Programação I - C++ 115 claudio_cesar_cordeiro@yahoo.com.br . To warn – Significa em Inglês, avisar. Portanto, warning é aviso!. Linguagem de Programação I - C++ Warnings são anomalias que não comprometem a compilação. São chamados de Avisos, Alertas. O programa ao lado foi compilado e executado sem erros ou warnings. Perfeito! Compilação sem Erros e sem Warnings (Avisos) Esta janela ao lado aparece quando solicitamos somente a Compilação, sem execução imediata. Usamos Ctrl + F9. Note também que a área de Log está vazia! 116 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ Neste caso acrescentamos pontos e vírgulas nos comandos #include nas linhas 1 e 2. Era de esperar um erro ou warnings, na compilação. Erro não deu, mas a janela de compilação (Compile Progress) não apresentou warnings, mas a área de Log sim! Compilação com Warnings (Avisos) Esta janela ao lado aparece muito rápido e desaparece em seguida, sem warnings. Note que a área de Log apresenta warnings! Atenção! Os pontos e vírgulas no #include foram inseridos só para teste! Não devemos usá-los! Como já foi falado o Dev-C++ não é 100% confiável! 117 claudio_cesar_cordeiro@yahoo.com.br . . Linguagem de Programação I - C++ . Fim Capítulo 01 Exercícios Propostos 01 que estão no SIA devem ser feitos. As Provas, com certeza, poderão ser inspiradas neles! Quem sabe? Arquivo no SIA em Seg, 22/07/13-21h05