Computação I (MAB120) DCC/UFRJ Aula 3: conceitos e operações elementares da programação 18 de março de 2019
Objetivos dessa aula Apresentar o conceito de variável em C: declaração, inicialização, atribuição e manipulação Estudar os principais tipos de dados básicos e expressões válidas em C Mostrar como é feita a definição de variáveis e constantes em C Apresentar os comandos elementares usados em programas C
Variável Em programação, uma variável é um nome dado a um local da memória capaz de armazenar um valor através desse nome é possível acessar o valor que lá está e alterá-lo quando necessário
...comparação com uma caixa registradora O conjunto formado por: local da memória e seu respectivo nome é chamado de variável
Mudanças de estados das variáveis Pode-se entender, então, a execução de um programa como um processo de mudança de estados na memória do computador (...) int a, b, c; int maior; scanf("%d %d %d", &a, &b, &c); if(a > b) maior = a; else maior = b; if (c > maior) maior = c; printf("o maior numero eh: %d \n", maior); (...)
Identificadores Um identificador é um símbolo que representa uma entidade criada pelo programador (por exemplo, uma variável) cada linguagem define regras para formação de identificadores em geral: sequência de caracteres alfanuméricos (letras ou dígitos), sem acentos e sem cedilha e o primeiro caracter obrigatoriamente alfabético
Exemplos de identificadores em C exemplos válidos int x1; int letra; int SOMA_TOTAL; int _B32; exemplos inválidos int fim?; //? nao eh um caracter aceito int percentual%; //% nao eh um caracter aceito int 123quatro; //nao pode iniciar com numero int hola!; //! nao eh um caracter aceito int @ARROBA; //@ nao eh um caracter aceito
Identificadores maiúsculos e minúsculos Atenção! C diferencia caracteres minúsculos e maiúsculos (ex., SOMA TOTAL é diferente de soma total ) Boa prática de programação: EVITAR criar identificadores que apenas se diferenciem pelo formato das letras pois prejudica a legibilidade dos programas
Comando de atribuição O comando de atribuição é usado para alterar o valor de uma variável (e consequentemente o estado de um programa) Forma geral: < variavel > = < expressao >; Exemplos: a = 1; z = x + y;
Expressões Aritméticas: operadores e operandos são de tipos numéricos prioridade das operações: 1. multiplicação, divisão e resto de divisão; 2. adição e subtração Relacionais: comparam valores/expressões em C, resultam sempre em 0 (zero) para uma comparação falsa ou 1 (um) para uma comparação verdadeira Lógicas: relacionam os resultados de um conjunto de expressões relacionais (operadores E, OU e NÃO) (mesmo retorno das expressões relacionais)
Exemplo de atribuições e expressões aritméticas (...) float a; // coeficiente angular float b; // coeficiente linear float c; // termo independente float delta; // discriminante float raiz1; // primeira raiz float raiz2; // segunda raiz (...) delta = b * b - 4 * a * c; if(delta >= 0){ raiz1 = (-b + sqrt(delta)) / (2 * a); raiz2 = (-b - sqrt(delta)) / (2 * a); printf("as raizes sao: %f e %f\n", raiz1, raiz2); } else { (...)
Operadores relacionais < (menor que) (a < 10) <= (menor ou igual a) (x <= y) == (igual a) (4 == 2*2) > (maior que) (t > 0) >= (maior ou igual a) (delta >= 0)!= (diferente de) (x!= 9+8*8)
Exemplo de uso de operador relacional int main(void) { float a, b, x; printf("digite os coeficientes da equacao:\n"); scanf("%f %f", &a, &b); if(a==0) { printf("coeficiente a inválido\n"); } else { x = -b/a; printf("o valor de x eh: %f\n", x); } return 0; } Atenção: diferença entre = e == em C
Operadores lógicos && (E) (x >= -1) && (x <= 1) (OU) (x < -1) (x > 1)! (N~AO)!(x < 0)
Exemplos de expressões lógicas (...) if ( (nota >= 3.0) && (nota < 7.0) ) //operador E (&&) printf("deve fazer prova final"); //operador OU ( ) if ( (nota_final < 5.0) (faltas > 11)) printf("reprovado") //operador N~AO (!) if (! (fez(p1) fez(p2)) ) printf("caso excepcional") (...)
Um tipo de dado delimita o conjunto de valores possíveis que uma determinada variável pode representar e as operações básicas possíveis sobre essas variáveis exemplos em C: int, float, char,...
Declaração de variáveis Declarar uma variável consiste em escrever seu tipo e nome Forma geral: < tipo >< identificador >; é possível declarar mais de uma variável em uma mesma linha, desde que todas sejam do mesmo tipo int idade; float valorfracionado, saldo, salariominimo; int altura, largura, comprimento; char ultimaletra, primeiraletra;
Tipo inteiro Representa um intervalo finito do conjunto matemático dos números inteiros existem vários tipos inteiros em C (int, short int, long int), usaremos principalmente o tipo int as operações disponíveis são: soma, subtração, multiplicação, divisão e resto da divisão
Exemplos de operações sobre variáveis do tipo inteiro int main() { int x, y, a, b, c, d, e, f; x = 10; y = 3; a = x + y; b = x - y; c = x * y; d = x / y; // o resultado eh truncado e = x % y; // calcula o resto da divisao f = -x; // inverte o sinal do numero // c = xy; -- erro // c = x. y; -- erro return 0 ; }
Questão OBI (2012, Fase 2, Nível Júnior) João deseja fazer bolos usando uma receita que indica que devem ser usadas 2 xícaras de farinha de trigo, 3 ovos e 5 colheres de sopa de leite. Em casa ele tem A xícaras de farinha de trigo, B ovos e C colheres de sopa de leite. João não tem muita prática com a cozinha, e portanto ele só se arriscará a fazer medidas exatas da receita de bolo (por exemplo, se ele tiver material suficiente para fazer mais do que 2 e menos do que 3 bolos, ele fará somente 2 bolos). Sabendo disso, escreva uma função que determine qual a quantidade máxima de bolos que ele consegue fazer.
, continuação... Ingredientes 2 xícaras de trigo, 3 ovos e 5 colheres de leite Entrada Três números inteiros A, B e C, indicando respectivamente o número de xícaras de trigo, o número de ovos e o número de colheres de leite que João tem em casa. Saída Sua função deve retornar a quantidade máxima de bolos que João consegue fazer. Exemplos Entrada : 4 6 10 - Saída : 2 Entrada : 4 6 9 - Saída : 1
Tipo racional Representa um intervalo dos números racionais existem dois tipos racionais em C (float e double), usaremos principalmente o tipo float as operações disponíveis são: soma, subtração, multiplicação e divisão
Exemplos de operações sobre variáveis do tipo float int main(){ float p, q, x, z; int y = 4; x = 10; z = 4.4; p = 50 / 30; // p receberá 1 (divisao inteira) q = 10.0 / 4; // q receberá 2.5 z = x / y; // z receberá 2.5 } Atenção: para que o resultado de uma divisão seja um valor real (não truncado) é preciso que ao menos um dos argumentos (dividendo ou divisor) seja um valor real
Tipo booleano Tipo de dados mais simples, contém apenas dois valores possíveis: verdadeiro e falso na linguagem C não há uma representação específica para esse tipo de dado e são utilizados valores inteiros para codificá-lo todo valor inteiro diferente de zero é considerado valor VERDADEIRO e o valor zero é considerado FALSO
Tipo caracter Representa letras, números e caracteres especiais (ex., a, +,!) na linguagem C, o tipo char é empregado para representar um caracter na atribuição, o caracter desejado deve ser colocado entre aspas simples
Exemplos de atribuições para variáveis do tipo char int main() { char letraa, letrafmaiuscula, simbolosoma; letraa = a ; letrafmaiuscula = F ; simbolosoma = + ; return 0; }
Conversão de tipos float < int: não há problemas (o conjunto dos números racionais contém o conjunto dos inteiros) int < float: perderá a parte fracionária (truncamento)
Valor pre-determinado que pode ser utilizado em várias partes do código Forma geral: #define <identificador> <valor> para facilitar a leitura do código e simplificar a alteração dessas constantes é possível definir um nome significativo para elas em C, usamos a diretiva define, seguida pelo identificador da constante e pelo seu respectivo valor, todos separados por um espaço em branco
Exemplo de definição de constantes #define PI 3.141593 #define FALSO 0 #define VERDADEIRO 1 #define RAIZDEDOIS 1.414214 int main(){ float raio, comprimento, area; raio = 10; area = PI * raio * raio; comprimento = 2 * PI * raio; return 0; }
Um número extraordinário N na faixa de 100 até 999 é um número que obedece a seguinte regra: n = centenas 3 + dezenas 3 + unidades 3. Por exemplo, o número 153 obedece a regra pois: 153 = 1 3 + 5 3 + 3 3. 1 Escreva um algoritmo em pseudocódigo que receba um número inteiro N e informe se esse número é extraordinário ou não. 2 Agora escreva o algoritmo proposto na linguagem C.
Referências bibliográficas 1 à programação: uma nova abordagem usando C, Flávio Varejão, Elsevier-Campus, 2015 2 Curso de Linguagem C, apostila do prof. Adriano Cruz (DCC/UFRJ), 2013