Baixe o app para aproveitar ainda mais
Prévia do material em texto
ECT1203 Linguagem de Programação 2012.1 Universidade Federal do Rio Grande do Norte Escola de Ciências e Tecnologia Prof. Diego Rodrigues de Carvalho Profa. Idalmis Milián Sardina Prof. Luiz Eduardo Leite Prof. Marconi Câmara Rodrigues Aula 02 – Introdução à linguagem C++ Universidade Federal do Rio Grande do Norte Escola de Ciências e Tecnologia Hora de silenciar o celular Manter o celular sempre desligado/silencioso quando estiver em sala de aula Nunca atender o celular em sala de aula Objetivo da Aula Introduzir o conceito de linguagens de programação Apresentar a linguagem C++ Explicar como funciona o processo de compilação e interpretação Demonstrar o funcionamento da ferramenta Code Blocks. Esses são os objetivos da aula Por que aprender uma Linguagem de Programação ? Linguagens de Programação Uma linguagem de programação é um método padronizado para expressar instruções para um computador. É um conjunto de regras sintáticas e semânticas usadas para definir um programa de computador. 5 Linguagens de Programação Proximidade entre o usuário e o computador: Linguagens de baixo nível Linguagens de máquina, assembly Linguagens de alto nível Fortran, Cobol, C, C++, Java, Python, Lua, Basic, Pascal, Sage... 6 O livro trata C como uma linguagem de nível médio por permitir manipular bits e endereços de memória. Não seria melhor usar essa classificação? Níveis das linguagens Baixo nível Código otimizado Indicado para situações onde não há opção de alto nível Alto nível Programação do algoritmo mais fácil Portabilidade Manutenção do código 7 A linguagem C++ é ... Linguagem de alto nível com funcionalidades de baixo nível. Permite operações com bits, bytes, endereços de memórias. Portável Flexível 8 A linguagem C++ é ... Usada no desenvolvimento de: Unix Linguagem C, C++ Java Gerenciadores de Banco de Dados Sistemas Operacionais Editores Programas de planilhas eletrônicas Compiladores Etc. 9 Forma de um programa em C++ A estrutura de um programa em C++: Comandos do pré-processador e compilador Definições de tipos Variáveis globais Protótipos de funções - declaração dos tipos de retorno e dos tipos dos parâmetros das funções Funções Deverá existir sempre uma função main(). Exemplo de programa em C++ #include <iostream> using namespace std; /* Sem definição de tipos */ int c; int f (int y); int main(int argc, char **argv) { c = 3; cout << f(c); return 0; } int f (int y) { return 2 * y; } A diretiva #include É uma diretiva de pré-processador. Provoca a inclusão de um arquivo dentro do nosso programa. #include <iostream> //arquivo no diretório do compilador #include “meuArq” //arquivo no diretório local do prog. Para os compiladores modernos, os arquivos de inclusão normalmente não possuem extensão. Nos compiladores antigos, os arquivos de inclusão possuem extensão .h #include <iostream.h> #include “meuArq.h” A função main As funções têm a seguinte estrutura: tipo nome_da_funcao(parâmetros) { variáveis locais instruções em C } A função main: int main(int argc, char **argv) { cout << “Alô Mundo!"; } Deve existir exatamente uma função chamada main Ela é executada quando o programa é iniciado. Os parâmetros da função são os passados para o programa na sua execução. O objeto cout e o operador << A instrução: cout << “mensagem”; Utiliza o objeto cout para exibir o texto mensagem na tela do computador Um entendimento detalhado do cout requer conhecimentos de classes e objetos, que não fazem parte do escopo deste curso. O operador << (chamado de operador de inserção) é utilizado para enviar a mensagem a ser impressa para cout. Namespace e diretiva Using Um namespace é uma região que agrega um identificador a todos os nomes declarados dentro dela. Análogo a um sobrenome. Ex.: o objeto cout foi declarado dentro no namespace std. Para usar o cout, precisaríamos usar o identificador std: std::cout << “mensagem”; A diretiva using permite que nomes de um namespace possam ser usados sem o identificador do namespace. using namespace std; Compiladores antigos e namespaces Os compiladores antigos não utilizam o conceito de namespace. Portanto, os arquivos de inclusão com extensão .h, desenvolvidos para compiladores antigos não usam namespace. Resumindo: se você incluir um arquivo com extensão .h, não utilize os namespaces previstos para o referido arquivo. Exemplo sem namespace (arquivo.h) #include <iostream.h> /* Sem definição de tipos */ int c; int f (int y); int main(int argc, char **argv) { c = 3; cout << f(c); return 0; } int f (int y) { return 2 * y; } O computador entende as linguagens de programação? Não! Eles precisam traduzir tudo para binário. Processadores de linguagens (tradutores) Compilador X Interpretador 20 Compilador 21 Interpretador 22 Compilação 23 g++ -E teste.cpp -o teste2.cpp g++ -S teste2.cpp -o teste2.asm as teste.asm –o teste.o g++ teste.o –o teste.exe Compilando um programa em C++ Para instalar um compilador: No Windows, instalar o Mingw: http://ufpr.dl.sourceforge.net/sourceforge/mingw Ou utilizar o Dev C++, que pode ser obtido na URL http://www.bloodshed.net/devcpp.html. No Linux, instalar o gcc : apt-get install gcc Acho que deveríamos citar só o Dev C++ para o windows 24 Download do Codeblocks Debugging/depuração http://www.youtube.com/results?search_query=debugging+codeblocks&oq=debugging+codeblocks&aq=f&aqi=&aql=&gs_sm=3&gs_upl=948l17803l0l18738l20l20l1l14l15l0l336l1424l0.1.1.3l5l0 Aula 03 – Tipos básicos, variáveis e constantes Revisão da aula anterior O compilador precisa de algumas informações antes de compilar um código. O compilador executa as instruções de forma seqüencial dentro da função main(). Objetivos da aula Responder as seguintes perguntas: Como eu faço um programa que utilize a memória de um computador? Eu preciso entender como a memória funciona para fazer um programa de computador? Como eu faço um programa que utilize o teclado e o monitor? Expressões Combinação de dados e operadores que resulta em um valor. Definição x = 2 * y + 4; expressão variável constante operador Memória do computador Endereço Conteúdo 00 13 01 22.5 02 Pedro ÁlvaresCabral 03 001001110 ... ... Programa de computador: Manipula as informações que estão na memória para gerar novas informações. Processamento Entrada Saída Variáveis Método utilizado pelo compilador para evitar que o programador trabalhe diretamente com endereços de memória. Mais fácil lembrar 000111101101 ou “idade”? Compilador cria uma tabela com os endereços de memória e os nomes. Uma variável representa um espaço de memória através de um nome para guardar uma determinada informação. 00011110110111 idade 00001111001101 peso 00001110101010 altura Endereço de memória: Compilador e sistema operacional decidem qual endereço da memória será utilizado (Linguagem de máquina). Informação: Tipos básico de dados. O compilador precisa ser informado qual o tipo de informação que será armazenado na memória. Nome: Identificador. Regras para os nomes das variáveis. Toda variável precisa ser declarada antes de ser usada Somente valores do tipo especificado podem ser armazenados na variável Uma variável representa um espaço de memória para guardar um determinado tipo de dado. DECLARAÇÃO: double lucro; int i, j; char a, b, c; tipo lista_de_variáveis; exemplo Tipos básicos de dados char - caractere Representa um número inteiro referente ao código ASCII de um determinado caractere. int – inteiro Representa um número inteiro float - ponto flutuante Representa um número real de simples precisão double - ponto flutuante de dupla precisão Representa um número real de maior precisão void - sem valor Usado em funções sem valor de retorno ou ponteiros genéricos Pergunta: Qual a necessidade de informar ao compilador o tipo de informação que será armazenada na memória? Tipo Tamanho em bytes Faixa mínima char 1 -127 a 127 int 4 -2.147.483.648 a2.147.483.647* float 4 ± 3,4 x 10-38a3,4 x 1038 double 8 ± 1,7 x 10-308a1,7 x 10308 Resposta: Informaçõesdiferentes necessitam de espaço de memória diferentes, além de serem organizados de forma diferente na memória. Modificadores dos tipos básicos Método de modificar a quantidade de memória utilizada ou a forma como a informação é representada. Alteram o conjunto de valores que o tipo pode representar: signed, short, long e unsigned Por exemplo: um modificador permite armazenar números inteiros maiores (long int ) outro modificador determina que só números sem sinal possam ser armazenados (unsigned int) Tipo Tamanho em bytes Faixa mínima char 1 -127 a 127 unsigned char 1 0 a 255 signed char 1 -127 a 127 int 4* -2.147.483.648 a2.147.483.647* unsigned int 4 0 a4.294.967.295* signed int 4 -2.147.483.648 a 2.147.483.647 short int 2 -32.768 a 32.767 unsigned short int 2 0 a 65.535 longint 4 -2.147.483.648 a 2.147.483.647 unsignedlongint 4 0 a 4.294.967.295 float 4 ± 3,4 x 10-38a3,4 x 1038 double 8 ± 1,7 x 10-308a1,7 x 10308 longdouble 10 ± 3,4 x 10-4932a3,4 x 104932 TAMANHO DOS TIPOS DE DADOS * depende do ambiente, valores para ambientes de 32 bits Identificadores Pode ser composto por letras, números ou sublinhados Deve começar com uma letra ou um sublinhado Não pode ser uma palavra reservada da linguagem C++ Nomes de variáveis, funções e outros objetos definidos pelo usuário. Certo ou errado? 1) soma 2) 5altura 3) peso_bruto 4) SOMA 5) desvio-padrão 6) p2p Palavras Reservadas asm else namespace template auto enum new this bool explicit operator throw break export private true case extern protected try catch false public typedef char float register typeid class for reinterpreted_cast typename const friend return union const_cast goto short unsigned continue if signed using default inline sizeof virtual delete init static void do long static_cast volatile doubel main struct wchar_t dynamic_cast mutable switch while Toda variável precisa ser declarada antes de ser usada. Essa declaração deve ocorrer dentro da função main()*. Somente valores do tipo especificado podem ser armazenados na variável Como utilizar as variáveis em C++ *meia-verdade: Ao longo da disciplina esse conceito será modificado DECLARAÇÃO: double lucro; int i, j; char a, b, c; tipo lista_de_variáveis; exemplo A lista de variáveis evita que cada variável seja declarada em uma única linha, o que tornaria o programa grande. int i; int j; int z; int i,j,z; Dicas de programação Primeiro passo na programação é identificar que tipo de informação será necessária para resolver o problema proposto. Que tipo de informação de entrada meu programa necessita? E a saída? As declarações das variáveis devem ser as primeiras instruções dentro da função main(). Os identificadores das variáveis devem ter relação com a informação representada (não é regra mas é extremamente recomendado). Dicas de programação Perfeitamente normal durante a resolução do problema surgir a necessidade de novas variáveis (variáveis auxiliares). Essas novas variáveis devem ser declaradas no inicio da função main() como se fossem previstas inicialmente e não no meio do programa. Code::Blocks Declare as variáveis para fazer um programa que calcule a força aplicada em um corpo. Processamento Massa Aceleração Força (Saída) (Entrada) Constantes Constantes inteiras: são números sem ponto decimal, precedidos ou não por sinal. 1997 -3 234 32000 5001 Constantes em ponto flutuante: requerem ponto decimal seguido pela parte fracionária do número. 123.23 4.34e-3 11.456 1001.2 Usadas em comandos para representar valores fixos de um dado tipo. Constantes Constantes caracteres: único caractere envolvido por aspas simples, podendo participar de expressões aritméticas. ‘a’ caractere a ‘A’ caractere A ‘\n’ nova linha ‘\r’ retorno de carro ‘\t’ tabulação horizontal ‘\a’ alerta sonoro ‘\0’ nulo, termina um conj. de caracteresem C ‘\\’ \ - Barra invertida ‘\xdd’ Caractere de código ASCIIdd(em hexadecimal) Constantes Constantes string: conjunto de caracteres colocado entre aspas duplas. ‘’isso é um teste’’ “mais um teste” A linguagem C++ insere automaticamente o caractere ‘\0’ ao final de uma string. Não confundir strings com caracteres: ‘A’ não é igual a “A” Atenção! Atribuição A declaração de variáveis somente reserva espaço na memória para ser utilizado pelo programa. O comando de atribuição é responsável por armazenar uma informação em uma variável. variável = informação; Sintaxe idade = 35; peso = 98.54; letra = ‘d’; Exemplos Atribuindo valores a variáveis Após declarada, uma variável pode receber valores. int a; float b; a = 5; b = 4.3; int a = 5; float b = 4.3; DECLARAçÃO E ATRIBUIção INICIALIZAção Efeito Equivalente Atribuindo valores a variáveis O que acontece se fizermos a seguinte instrução? int a = 4.3; Atenção! O modificador const Variáveis do tipo const não podem ser modificadas! É muito usado para garantir que o valor do parâmetro não é modificado dentro da função. const int a = 10; const float gravidade = 9.8; exemplo Entrada e saída em C E/S pelo console: Entrada pelo teclado Saída pela tela É necessário incluir o protótipo das funções no código e utilizar o namespace std. #include <iostream> using namespace std; E/S são efetuadas por objetos da biblioteca padrão. 76 Objeto cout (pronuncia-se C out) Possibilita a saída de valores (constantes, variáveis, ...) para o usuário. Usado normalmente com o operador de inserção <<. Exemplo cout << “Primeiro Programa”; cout << “O valor de X é:” << x; 77 Objeto cin (pronuncia-se C in) Permite ler valores via teclado e armazená-los em variáveis do programa. Usado normalmente com o operador de extração >>. Exemplo cin >> x; cin >> a >> b >> c; 78 Code::Blocks Faça um programa que peça para o usuário digitar um número e, em seguida, mostre o valor que foi digitado. Code::Blocks Faça um programa que peça para o usuário digitar um número e, em seguida, mostre o valor que foi digitado. Seqüência de passos: Declaração de variáveis Pedir para o usuário digitar um número Usuário digitar um número Mostrar o número digitado Objetivos da aula Responder as seguintes perguntas: Como eu faço um programa que utilize a memória de um computador? Eu preciso entender como a memória funciona para fazer um programa de computador? Como eu faço um programa que utilize o teclado e o monitor? O modificador const Variáveis do tipo const não podem ser modificadas! É muito usado para garantir que o valor do parâmetro não é modificado dentro da função. const float a = 10.5; int soma(const int a, const int b); exemplo Bloco de código Qualquer trecho de código delimitado por { ... } int main(void) { float pi = 3.14; return 0; } exemplos i = 10; { int j = 20; printf(“%d”, j); } if(t == 1) { char s[80]; gets(s); } Escopo de variáveis Variáveis declaradas dentro de um bloco de código não são visíveis fora dele. O espaço de memória usado pela variável é liberado na saída do bloco de código. Se duas variáveis de mesmo nome são visíveis em um bloco de código, prevalece aquela declarada no bloco mais interno. Mostrar exemplos usando o Dev C++. 84
Compartilhar