Programação científica C++ NIELSEN CASTELO DAMASCENO Slide 2
Expressões Combinação de dados e operadores que resulta em um valor. expressão x = 2 * y + 4; variável operador constante
Memória do computador Endereço Conteúdo 00 13 01 22.5 02 Pedro Álvares Cabral 03 001001110...... Programa de computador: Manipula as informações que estão na memória para gerar novas informações. Entrada Processamento Saída
Variáveis Uma variável representa um espaço de memória através de um nome para guardar uma determinada informação. 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. 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.
Uma variável representa um espaço de memória para guardar um determinado tipo de dado. Toda variável precisa ser declarada antes de ser usada Somente valores do tipo especificado podem ser armazenados na variável tipo lista_de_variáveis; double lucro; int i, j; char a, b, c;
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?
Resposta: Informações diferentes necessitam de espaço de memória diferentes, além de serem organizados de forma diferente na memória. Tipo Tamanho em bytes Faixa mínima char 1-127 a 127 int 4-2.147.483.648 a 2.147.483.647 * float 4 ± 3,4 x 10-38 a 3,4 x 10 38 double 8 ± 1,7 x 10-308 a 1,7 x 10 308
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: Por exemplo: signed, short, long e unsigned 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 a 2.147.483.647 * unsigned int 4 0 a 4.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 long int 4-2.147.483.648 a 2.147.483.647 unsigned long int 4 0 a 4.294.967.295 float 4 ± 3,4 x 10-38 a 3,4 x 10 38 double 8 ± 1,7 x 10-308 a 1,7 x 10 308 long double 10 ± 3,4 x 10-4932 a 3,4 x 10 4932 * depende do ambiente, valores para ambientes de 32 bits
Identificadores Nomes de variáveis, funções e outros objetos definidos pelo usuário. 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++ 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
Como utilizar as variáveis em C++ 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 *meia-verdade: Ao longo da disciplina esse conceito será modificado
tipo lista_de_variáveis; double lucro; int i, j; char a, b, c; 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; intz; 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.
Constantes Usadas em comandos para representar valores fixos de um dado tipo. 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
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 caracteres em C \\ \ - Barra invertida \xdd Caractere de código ASCII dd (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
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; idade = 35; peso = 98.54; letra = d ;
Atribuindo valores a variáveis Após declarada, uma variável pode receber valores. int a; float b; a = 5; b = 4.3; Efeito Equivalente int a = 5; float b = 4.3;
Atribuindo valores a variáveis O que acontece se fizermos a seguinte instrução? int a = 4.3;
O modificador const Variáveis do tipo const não podem ser modificadas! const int a = 10; const float gravidade = 9.8; É muito usado para garantir que o valor do parâmetro não é modificado dentro da função.
Entrada e saída em C++ E/S são efetuadas por objetos da biblioteca padrão. 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;
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 <<. cout << Primeiro Programa ; cout << O valor de X é: << x;
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 >>. cin >> x; cin >> a >> b >> c;
Exercício Faça um programa que peça para o usuário digitar um número real e, em seguida, mostre o valor que foi digitado.
Exercício 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
O modificador const Variáveis do tipo const não podem ser modificadas! const float a = 10.5; int soma(const int a, const int b); É muito usado para garantir que o valor do parâmetro não é modificado dentro da função.
Bloco de código Qualquer trecho de código delimitado por {... } int main(void) { float pi = 3.14; return 0; } if(t == 1) { char s[80]; gets(s); } i = 10; { int j = 20; printf( %d, j); }
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.
Exercício Faça um programa que peça para o usuário digitar três valores x,y,z (ex: 6,2,4) e em seguida mostre: O resultado de: x*(y/z) O resultado de : (x*y)/z O resultado de : x*y/z
Operadores aritméticos de atribuição variável = variável operador expressão; é o mesmo que variável operador = expressão; Pode ser aplicado a todo operador binário. i = i + 10; x = x * (y + 1); a = a 120; i += 10; x *= y + 1; a -= 120;
Operadores lógicos e relacionais Relacional refere-se às relações entre os valores. Lógico refere-se a como essas relações podem ser conectadas. São baseados na idéia de verdadeiro e falso. VERDADEIRO = qualquer valor diferente de zero FALSO = zero As expressões que usam operdores relacionais ou lógicos devolvem zero para falso e 1 para verdadeiro.
Operadores lógicos e relacionais Operador Ação > Maior que >= Maior ou igual que < Menor que <= Menor ou igual que == Igual!= Diferente Relacionais Lógicos Operador Ação && AND OR! NOT
Operadores lógicos AND = Será verdadeiro quando TODAS as condições forem verdadeiras. OR = Será verdadeiro quando pelo menos UMA condição for verdadeira. Operadores relacionais e lógicos ficarão mais claro quando estudarmos estruturas.
Precedência dos operadores lógicos e relacionais São menores em precedência que os operadores aritméticos. 10 > 1 + 12 é avaliado como 10 > (1 + 12) Mais alta! > >= < <= ==!= && Mais baixa
Operadores bit a bit Operação bit a bit refere-se a testar, atribuir ou deslocar os bits de tipos de dados char e int. São aplicados aos bits individuais dos operandos. Operador Ação & AND OR ^ XOR (OR exclusivo) ~ Complemento de um >> Deslocamento à esquerda << Deslocamento à direita
Operador sizeof É um operador que retorna o tamanho (em bytes) de uma variável ou especificados de tipo. float f; cout << sizeof f << \n ; cout << sizeof(int) << \n ; Para calcular o tamanho de um tipo, deve-se usar parênteses.
Conversão de tipos em expressões Quando operandos de tipos diferentes são misturados em uma expressão, os valores são convertidos no tipo do maior operando. prioridade de conversão double float int char
Conversão de tipos em expressões
Cast (operador de molde) Cast é uma conversão explícita de tipo. (tipo) expressão int x = 13; float y = (float) x/2;