Algoritmos e Programação
Linguagens de Programação
Teoria
Aula 6
(12/05)
[email protected]
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia de Computação – CECOMP
Aulas de Reposição

Próxima sexta (14/04), não haverá aula prática para alunos
do prof. Mario.

Haverá aula NORMAL do prof. Jadsonlee.
Aulas de Reposição

Teórica 4h;


Sábado (05/06), das 14:00 às 18:00h.
Prática 6h;

Sábado (12/06), das 14:00 às
16:00h. (Laboratório);

Sábado (19/06), das 14:00 às
18:00h. (Laboratório).
2
Avaliações

Solução de problemas através de programação em C. Deverão
ser escritos em papel.
Serão cobrados comandos utilizados nas aulas práticas e
teóricas.

Avaliação 1 (Data: 02/06 – Quarta feira)

Avaliação 2 (Data: 30/06 – Quarta feira)

Avaliação de Reposição (Data: 07/07 – Quarta feira)


Atestado médico.
Avaliação Final (Data: 09/07 – Sexta feira)

Todo o conteúdo.
3
Conversão de Tipos de Dados
Conversão de Tipos - Implícita
Implícita → tipos menores para tipos maiores
Exemplos:
 char → int
 int → longint
 float → double
5
Conversão de Tipos - Explícita (cast)
Explícita → de qualquer tipo, para outros tipos maiores
utilizando (cast)
Exemplos:

char → int

int → longint

float → double
Exemplo:
int numero;
char letra;
numero = 555;
letra = 'w';
numero = (int) letra; //O tipo maior recebe o tipo menor
6
Operadores
Operadores Relacionais
IMPORTANTE!
8
Operadores Lógicos
p
q
falso
falso
falso
verdadeiro
Operador
Ação
&&
E
||
OU
!
Não
Não p
Não q
pEq
p OU q
!p
!q
p && q
p || q
falso
falso
falso
falso
verdadeiro
falso
verdadeiro
falso
verdadeiro
falso
falso
verdadeiro verdadeiro
verdadeiro verdadeiro
falso
verdadeiro verdadeiro
verdadeiro verdadeiro
9
Hierarquia dos operadores Relacionais e Lógicos
 Hierarquia ou Precedência – prioridade com que os
operadores são executados pelo compilador;
 Operadores com mesmo nível hierárquico
executados da esquerda para a direita;
são
 Podem ser alterada utilizando “(” “)”.
10
Operadores bit a bit
 Permite a manipulação de bits (baixo nível)
Operador
Descrição
&
AND
|
OR
^
XOR (OR exclusivo)
<<
Deslocamento para esquerda
>>
Deslocamento para direita
Não confundir com Operadores Lógicos
11
Operadores bit a bit

O número é representado por sua forma binária;

Poderemos fazer operações em cada um dos bits deste
número;

Programação de "baixo nível“;

Só podem ser usadas nos tipos char, int e long int.
Exemplo
int i = 2;
// Conteúdo em binário: 0000000000000010
~i;
// Ou seja, não i, resulta em binário: 1111111111111101
12
Operadores bit a bit
Operadores de deslocamento
Sintaxe
 valor >> número_de_deslocamentos
 valor << número_de_deslocamentos
 Exemplo:
i == 0000000000000010; //2 decimal
i << 3;
i == 0000000000010000; //16 decimal
13
Funções de Entrada e Saída
Funções de Entrada e Saída Formatada
#include <stdio.h>
io → input/output
Forma geral:
 printf(string_de_controle, <lista_de_argumentos>);
 Indica as variáveis com suas respectivas posições
através dos códigos de formato “%” mostrado a seguir.
15
Funções de Entrada e Saída Formatada
Tabela de códigos de formato (%)
16
Funções de Entrada e Saída Formatada
17
Constantes de barra invertida
Constante
Significado
\n
new line
\”
Aspas
\’
Apóstofro
\0
Nulo (0 decimal)
\\
Barra Invertida
\t
Tabulação Horizontal (TAB)
18
Funções de Entrada e Saída - scanf()
scanf() - Leitura de dados;
Sintaxe:
scanf(string_de_controle, lista_de_argumentos);

string_de_controle → descrição de todas as variáveis que serão
lidas, com informações de seus tipos e da ordem em que serão
lidas;

lista_de_argumentos → lista com os identificadores das
variáveis que serão lidas.
Importante: colocar antes de cada variavel da lista_de_argumentos o
caracter ‘&’
Exemplo:
char letra; //Delcarando a variável “letra”
scanf(“%c”, &letra); //Lendo dados digitados pelo usuário
19
Funções de Entrada e Saída
 Tabela de códigos de tipos de dados
Exemplos:
char letra;
float nota;
int quantDeFilhos;
scanf(“%c”, &letra);
scanf(“%f”, &nota);
scanf(“%d”, &quantDeFilhos);
20
Estruturas de Controle de Fluxo
Estruturas de Controle de Fluxo - if
Instrução condicional
Sintaxe
if(<condição>){
<instrução>
}
22
Estruturas de Controle de Fluxo – if ... else
Instrução condicional
Sintaxe
if(<condição>)
{
<instrução 1>
...
<instrução N>
} else {
<instrução A>
...
<instrução Z>
}
23
Estruturas de Controle de Fluxo – if ... else
Exemplo
#include <stdio.h>
int main ()
{
char letra = 'a';
if (letra == 'a' ){
printf("Letra digitada eh: 'A'");
}else{
printf("Letra digitada DESCONHECIDA!");
}
getchar();
return(0);
}
if ( (i > 3) && ( j <= 7) && ( i != j) ) {
printf(“Entrou no if!”);
}else{
printf(“NAO entrou no if!”);
}
24
Estruturas de Controle de Fluxo – if ... else if ... else
if (condição_1){
instrução 1;
}else if (condição_2){
instrução 2;
}else if (condição_3){
instrução 3;
}else if (condição_n){
instrução n;
}else{
instrução padrão;
}
int varNumero;
printf ("Digite um numero: ");
scanf ("%d", &varNumero);
if (varNumero > 10){
printf ("Numero MAIOR que 10");
}else if (varNumero == 10){
printf (“Voce digitou: 10");
}else if (varNumero < 10){
printf (“Numero MENOR que 10");
}
//substituir o último else if faz sentido?
else {
printf (“Numero MENOR que 10");
}
25
Estruturas de Controle de Fluxo – if ... else if ... else
Os códigos funcionam? Existe diferença?
int varNumero;
printf ("Digite um numero: ");
scanf ("%d", &varNumero);
int varNumero;
printf ("Digite um numero: ");
scanf ("%d", &varNumero);
if (varNumero > 10){
printf ("Numero MAIOR que 10");
}else if (varNumero == 10){
printf (“Voce digitou: 10");
}else if (varNumero < 10){
printf (“Numero MENOR que 10");
}
if (varNumero > 10){
printf ("Numero MAIOR que 10");
}
if (varNumero == 10){
printf (“Voce digitou: 10");
}
if (varNumero < 10){
printf (“Numero MENOR que 10");
}
26
Estruturas de Controle de Fluxo – ifs aninhados
float nota;
nota = 9.5;
if (nota >= 7){
printf(“Aprovado.”);
if (nota >= 9){
printf(“Aprovado com louvor!!!”);
}
}else{
printf(“Aluno REPROVADO!”);
}
27
Estruturas de Controle de Fluxo – operador ?
if (condição){
instrução 1;
}else{
}
instrução 2;
 É equivalente a:
condição?instrução1:instrução2;
28
 Continuar
29
Estruturas de Controle de Fluxo – switch

Próprio para se testar uma variável em relação a valores
pré-estabelecidos.

Testa o conteúdo da variável
correspondente ao case;

break, faz com que o switch seja interrompido;

default é opcional;

Não aceita expressões.
e
executa
a
instrução
switch (variável)
{
case constante_1:
instrução 1;
break;
case constante_2:
instrução 2;
break;
...
default
instrução_padrão;
}
30
Estruturas de Controle de Fluxo – switch
switch (varNumero)
{
case 9:
printf ("O numero e igual a 9.");
break;
case 10:
printf ("O numero e igual a 10.");
break;
default:
printf ("O numero nao e nem 9 nem 10.");
}
31
Loops de Repetição
Loops de Repetição - while
Estrutura de repetição
Sintaxe
while(<condição>)
{
<instrução 1>
...
<instrução n>
}
33
Loops de Repetição - while
Exemplo
#include <stdio.h>
int main ()
{
int numero;
printf("Digite um numero: ");
printf("\nDigite '0' para finalizar.\n\n");
while (numero != 0 ){
scanf("%d", &numero);
printf("\n Voce digitou: %d \n Digite um novo numero: ", numero);
}
getchar();
return(0);
}
34
Loops de Repetição – do ... while...
do{
<instrução 1>
....
<instrução n>
}while(<condição>);
int i;
do {
printf ("Escolha a fruta pelo numero:");
printf ("(1) Mamao");
printf ("(2) Abacaxi");
printf ("(3) Laranja");
scanf("%d", &i);
} while ((i<1)||(i>3));
35
Loops de Repetição – for
Sintaxe
for (inicialização; condição; incremento) {
instrução;
}

Podemos omitir qualquer um dos elementos do for:
(inicialização; condição; incremento).
// int numero;
for (int numero=1; numero<=100; numero++) {
printf ("%d ", numero);
}
36
Comando - break

Faz com que a execução do programa continue na primeira
linha seguinte ao loop ou
bloco que está sendo
interrompido.

Utilizados para interromper os comandos: “switch”, “for”,
“while” e “do while”.
Exemplo
for(;;) {
printf("%d", count);
count++;
if(count==10) break;
}
37
Comando - continue
 Funciona apenas dentro de um loop;
 Quando o comando continue é encontrado, o loop pula
para a próxima iteração, sem o abandono do loop;
38
Comando - goto
 realiza um salto para um local determinado por um
rótulo.
 tende a tornar o código confuso
Sintaxe
nome_do_rótulo:
....
goto nome_do_rótulo;
Exemplo
início_do_loop:
if (condição)
{
intrução;
incremento;
goto início_do_loop;
}
39
Preparar...

Estrutura de repetição

Estrutura condicional

ifs aninhados

For

Variáveis Locais e Globais

break

Continue

Goto

loop infinito

MATRIZES e STRINGS

strcpy (string_destino,string_origem);

strcat (string_destino,string_origem);

strlen (string);

strcmp (string1,string2);

FUNÇÕES, return, void
40
Material de apoio
 Dev C++
 http://www.baixaki.com.br/download/dev-c-.htm
 http://mico.ead.cpdee.ufmg.br/cursos/C/c.html
41
Próxima Aula
[email protected]
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia de Computação – CECOMP
Download

Aula 6 - Univasf