prof. julio arakaki ([email protected])jarakaki/lic/jasoupuc.pdf · seleção múltipla de acordo...
TRANSCRIPT
“JaSouPUC”
Prof. Julio Arakaki ([email protected])
Ciência da Computação
https://www.pucsp.br/graduacao/ciencia-da-computacao09/02/2020 16:26 1
FCET - Faculdade de Ciências Exatas e Tecnologia
Computação
Os encontros em Lab...
• (10/02 13h30 15h00- Julio)(Linguagem C)
• Introdução, E/S, Variáveis, Operadores Aritméticos e Exercícios
• (11/02 13h30 15h00 - Julio)(Linguagem C)
• Operadores relacionais, Operadores lógicos, Condicionais, Repetição, Vetores e Exercícios
https://www.pucsp.br/graduacao/ciencia-da-computacao 216:26
Computação
https://www.pucsp.br/graduacao/ciencia-da-computacao 3
Algumas linguagens de programação
16:26
Computação
O processo de geração de um programa de computador:
•Fase de tradução: programa-fonte é transformado em um programa-objeto.
•Fase de ligação: junta o programa-objeto às instruções necessárias das bibliotecas para produzir o programa executável.
https://www.pucsp.br/graduacao/ciencia-da-computacao
Programa Fonte Compilador
Programa Objeto
LigadorPrograma Executável
Programa Objeto das Bibliotecas
IDE
Ambiente de desenvolvimento (IDE)
16:26 4
Computação
Code::Blocks
• Ambiente integrado de desenvolvimento (IDE - IntegratedDevelopment Environment)
• O Code::Blocks é um software livre (sob GNU General Public License) multiplataforma (Windows, Linux, Mac e etc..)
• Também pode ser usado para o desenvolvimento de programas em outras linguagens (Ex: Python)
• URL da ferramenta: http://www.codeblocks.org/
16:26 https://www.pucsp.br/graduacao/ciencia-da-computacao 5
Computação
Code::Blocks• Vamos utilizar a IDE para realizas as operações mais simples
• Criar um projeto, compilar, executar e depurar
16:26 https://www.pucsp.br/graduacao/ciencia-da-computacao 6
Computação
Code::Blocks• Para criar um projeto, deve-se selecionar a opção “File >> New >> Project “. Para construir o projeto, precisamos
basicamente colocar um nome e um diretório para armazenamento, assim como selecionar a linguagem (C ou C++) e o tipo de aplicação
• O tipo de aplicação mais adequado é chamado de “Console Application “, como mostra a figura abaixo
16:26 https://www.pucsp.br/graduacao/ciencia-da-computacao 7
Computação
Code::Blocks• Na sequência seleciona-se a linguagem de programação a ser utilizada no projeto. A IDE oferece por default as linguagens
C ou C++.
• Depois de selecionar a linguagem é necessário escolher um nome para o projeto e um diretório para armazenamento, como ilustrado a seguir.
16:26 https://www.pucsp.br/graduacao/ciencia-da-computacao 8
Computação
Características:
✓Propósito geral
✓Estruturada
✓Procedural / imperativa
✓Muito usada para desenvolver sistemas e aplicativos
✓Disponível para diferentes plataformas
✓Padronização ANSI (“American National Standards Institute”)✓ANSI C
https://www.pucsp.br/graduacao/ciencia-da-computacao
Linguagem C
16:26 9
Computação
Programação imperativa (wikipedia)✓ Na Ciência da Computação, programação imperativa é umparadigma de programação que descreve a computação como ações,enunciados ou comandos que mudam o estado (variáveis) de umprograma.
✓ Muito parecido com o comportamento imperativo das linguagensnaturais que expressam ordens, programas imperativos são uma
sequência de comandos para o computador executar.
https://www.pucsp.br/graduacao/ciencia-da-computacao
Linguagem C
16:26 10
Computação
Características:
✓Considerada de nível médio
✓C permite manipular bits, bytes e endereços de memória como uma linguagem de baixo nível
✓C possui construções e rotinas como linguagens de alto nível
✓C é mais utilizado por especialistas e profissionais da área da Computação
✓Uso primário para desenvolvimento de sistemas
https://www.pucsp.br/graduacao/ciencia-da-computacao
Linguagem C
16:26 11
Computação
Estrutura básica de um programa em C:
https://www.pucsp.br/graduacao/ciencia-da-computacao
#include <stdio.h>
void main(){
// chamada da funcao para saida (em console)
printf("\nBenvindo a \nPUC-SP");
}
Arquivo: benvindo.c
Dicas:- “comandos” devem sempre ser terminados por ; (ponto-e-virgula) - colchetes, chaves, parênteses e aspas: sempre em pares- Sempre salve o programa antes de compilar- Sempre compile o programa antes de executar
Linguagem C
16:26 12
Computação
https://www.pucsp.br/graduacao/ciencia-da-computacao
#include <stdio.h>
void main(){
// chamada da funcao para saida (em console)
printf("\nBenvindo a \nPUC-SP");
}
Arquivo: benvindo.c
Praticando...
16:26 13
1. “Implemente” um programa que mostre a mensagem na tela:
===============================================
Benvindo ao JaSouPUC!!
Curso: Ciencia da Computacao – turma 1º. 2020
===============================================
Computação
• Os nomes das variáveis devem conter apenas letras, dígitos e o símbolo _
• Os principais tipos são: int, float, double e char
• Exemplos:int n;
int quantidade_valores;
float x, y, somaValores;
char sexo;
char nome[40]; // Vetor de caracteres
https://www.pucsp.br/graduacao/ciencia-da-computacao
C diferencia letras maiúsculas de minúsculas!int n, N;
n é diferente de N
Tipos, Variáveis e Declarações
16:26 14
Computação
• Função printfprintf ("formatos", var1, var2,...)
Exemplos:
int i, j;
float x;
char c;
char nome[20];
printf("%d", i);
printf("%d, %f", j, x);
printf("%c", c);
printf("%s", nome);
https://www.pucsp.br/graduacao/ciencia-da-computacao
Saída de Dados
16:26 15
Computação
https://www.pucsp.br/graduacao/ciencia-da-computacao
Praticando...
16:26 16
2. “Implemente” um programa que calcule a média entre 2 números.
3. Reescreva o programa 2 utilizando variáveis.
Computação
• Atribui o valor da direita à variável da esquerda
• O valor pode ser:• uma constante,• uma variável ou • uma expressão
• Exemplosx = 4; --> lemos x recebe 4
y = x + 2;
y = y + 4;
valor = 2.5;
sexo = 'F’;
https://www.pucsp.br/graduacao/ciencia-da-computacao
Comando de atribuição
16:26 17
Computação
• Função scanfscanf ("formatos", &var1, &var2,...)
Exemplos:
int i, j;
float x;
char c;
char nome[50];
scanf("%d", &i);
scanf("%d %f", &j, &x);
scanf("%c", &c);
scanf("%s", nome);
https://www.pucsp.br/graduacao/ciencia-da-computacao
Entrada de Dados
16:26 18
Computação
https://www.pucsp.br/graduacao/ciencia-da-computacao
Praticando...
16:26 19
4. “Implemente” um programa que calcule a média entre 2 números. O programa deverá solicitar (pelo teclado) o nome do aluno, as notas 1 e 2, calcular a media e mostrar os dados.
Computação
https://www.pucsp.br/graduacao/ciencia-da-computacao
Decrementa em 1 o valor de xx----
Incrementa em 1 o valor de xx++++
Resto da divisão de x por yx % y %
Divide x por yx / y /
Multiplica x e yx * y*
Subtrai y de xx – y -
Soma x e yx + y+
ComentárioExemploOperador
Operadores Matemáticos
16:26 20
Computação
https://www.pucsp.br/graduacao/ciencia-da-computacao
Equivale a x = x % yx %= y%=
Equivale a x = x / yx /= y /=
Equivale a x = x * yx *= y *=
Equivale a x = x – yx -= y-=
Equivale a x = x + yx += y +=
Atribui o valor de y a xx = y=
ComentárioExemploOperador
Operadores de Atribuição
16:26 21
Computação
Exercícios1. Crie um programa que leia o dia, mês e ano do nascimento
de uma pessoa e imprima a quantidade de anos que ela tem.
2. Crie um programa para calcular e imprimir o IMC de uma pessoa. O peso, a altura e o nome da pessoa deverá ser fornecido pelo teclado.
https://www.pucsp.br/graduacao/ciencia-da-computacao 2216:26
Computação
https://www.pucsp.br/graduacao/ciencia-da-computacao
Tangente de xtan(x)tan
Raiz quadrada de xsqrt(x)sqrt
Seno de xsin(x)sin
Calcula x elevado à potência ypow(x, y)pow
Logaritmo decimal de xlog10(x)log10
Logaritmo natural de xlog(x)log
Arredonda o número deal para baixo; floor(3.2) é 3floor(x)floor
Valor absoluto de xfabs(x)fabs
e elevado à potencia xexp(x)exp
Cosseno de x (x em radianos)cos(x)cos
Arredonda o número real para cima; ceil(3.2) é 4ceil(x)ceil
ComentárioExemploFunção
#include <math.h>Funções Matemáticas
16:26 23
Computação
https://www.pucsp.br/graduacao/ciencia-da-computacao
O conteúdo de x é maior que o de yx > y>
O conteúdo de x é menor que o de yx < y <
O conteúdo de x é maior ou igual ao de yx >= y >=
O conteúdo de x é menor ou igual ao de yx <= y<=
O conteúdo de x é diferente do de yx != y !=
O conteúdo de x é igual ao de yx == y==
ComentárioExemploOperador
Operadores Relacionais
16:26 24
Computação
• && (E - and): retorna verdadeiro se ambos os operandos são verdadeiros e falso nos demais casos.Exemplo:
if (a>2 && b<3)
• || (OU - or): retorna verdadeiro se um ou ambos os operandos são verdadeiros e falso se ambos são falsos.Exemplo:
if (a>1 || b<2)
• ! (NÃO - not): usada com apenas um operando. Retorna verdadeiro se o operando é falso e vice-versa.Exemplo:
if (!var )
https://www.pucsp.br/graduacao/ciencia-da-computacao
Operadores Lógicos
16:26 25
Computação
https://www.pucsp.br/graduacao/ciencia-da-computacao
Estruturas de Controle
Estrutura
Sequencial
Estrutura
com desvio condicionalEstrutura
Iterativa
16:26 26
Computação
https://www.pucsp.br/graduacao/ciencia-da-computacao
Seleção Unidirecional
Todas as linguagens imperativas incluem um seletor unidirecional. O seletor unidirecional do C, chamado instrução lógica if, tem a
forma:
if (<expressão booleana>) <instrução>
Neste caso apenas um comando está sujeito à condição do
comando if.
16:26 27
Computação
https://www.pucsp.br/graduacao/ciencia-da-computacao
Seleção UnidirecionalOutra forma de se vincular mais de uma instrução em um comando de seleção é
utilizar instruções compostas
Abaixo está descrita a sintaxe para uma seleção bidirecional em C/C++:
if (<expressão booleana>) {
{<instrução>}
} else {
{<instrução>}
}
Caso o resultado da expressão booleana seja verdade a 1ª instrução será
executada e a 2ª instrução não. E caso seja falsa a 1ª não será executada e a 2ª
sim.
No lugar destas instruções poderiam ser colocadas instruções compostas para que
mais de um comando estivesse vinculado ao comando if em cada situação.
16:26 28
Computação
https://www.pucsp.br/graduacao/ciencia-da-computacao
Seleção Bidirecional
#include <stdio.h>
void main() {
int x, totPAR=0, totIMPAR=0;
...
printf(“Entre com um numero:”);
scanf(“%d”,&x);
if ((x % 2) == 0){
printf(“O numero e par!”);
totPAR += x;
} else {
printf(“O numero e ímpar!”);
totIMPAR += x;
}
...
printf(“Total par:%d, total impar:%d”,totPAR,totIMPAR);
}
Veja um exemplo de utilização de uma seleção Bidirecional e instruções
compostas:
16:26 29
Computação
https://www.pucsp.br/graduacao/ciencia-da-computacao
Seleção MúltiplaDe acordo com o resultado da expressão (inteira), uma das instruções será
executada. Se o resultado for 1, a primeira instrução é executada, se for 2 a
segunda e assim por diante.
A seleção múltipla em C tem a seguinte forma:
switch (<expressão>) {
{case <expressão constante 1>:{<instrução 1> }}
default:
{<instrução> }
}
16:26 30
Computação
https://www.pucsp.br/graduacao/ciencia-da-computacao
Seleção MúltiplaUm problema com esta estrutura é que os blocos de instruções em cada “case” iniciam
sua execução e terminam ao final do switch, então neste caso deveremos utilizar o
comando break que desviará a execução do código para a próxima instrução depois do fim do bloco.
Introduzindo o comando break ao final de cada bloco de instruções do
comando switch teremos como resultado:
switch (<expressão>) {
case <expressão constante>:{<instrução> };break;
default:
<instrução>
}
16:26 31
Computação
...
switch (num){
case 9:
printf ("\n\nO numero e igual a 9.\n");
break;
case 10:
printf ("\n\nO numero e igual a 10.\n");
break;
case 11:
printf ("\n\nO numero e igual a 11.\n");
break;
default:
printf ("\n\nO numero nao e nem 9 nem 10 nem 11.\n");
}
...
https://www.pucsp.br/graduacao/ciencia-da-computacao
Exemplo
16:26 32
Computação
Exercícios1. Crie um programa para verificar se um número é par ou impar.2. Crie um programa que leia duas notas de um aluno pelo teclado e
imprima a média aritmética entre estas notas. Além disso, deverá imprimir uma mensagem indicando que o aluno foi aprovado (media >= 5) ou reprovado (media < 5)
3. Crie um programa para calcular e imprimir o IMC de uma pessoa e msgs de acordo com a tabela a seguir. O peso, a altura e o nome da pessoa deverá ser fornecido pelo teclado.
https://www.pucsp.br/graduacao/ciencia-da-computacao 33
Abaixo de 17 Muito abaixo do peso
Entre 17 e 18,49 Abaixo do peso
Entre 18,5 e 24,99 Peso normal
Entre 25 e 29,99 Acima do peso
Entre 30 e 34,99 Obesidade I
Entre 35 e 39,99 Obesidade II (severa)
Acima de 40 Obesidade III (mórbida
16:26
Computação
Exercícios4. O adivinho. Criar um programa que simule o adivinho.
https://www.pucsp.br/graduacao/ciencia-da-computacao 3416:26
Computação
O ADIVINHO – solução matemática
• Justificativa (matemática)• A, B pertencem ao conjunto {0,1,2,3,4,5,6,7,8,9}
• C = (2 x A + 3) x 5 + B C = 10A + 15 + B C – 15 = 10A + B
• Seja D = C- 15
• Como A e B são números de 1 algarismo, o último algarismo de D é igual a B (unidades) e o primeiro algarismo de D é igual a A (dezenas).
• Observe que o maior valor possível de D é igual a 99.
• Se A= 9 e B = 9 então C = 114 e D = 114-15 = 99.
https://www.pucsp.br/graduacao/ciencia-da-computacao 3516:26
Instruções Iterativas
https://www.pucsp.br/graduacao/ciencia-da-computacao16:26 36
Computação
Instruções Iterativas lógicas com pré-teste
Pré-teste
https://www.pucsp.br/graduacao/ciencia-da-computacao
Estruturas de Controle
16:26 37
Computação
Instruções Iterativas lógicas com pós-teste
Pós-teste
https://www.pucsp.br/graduacao/ciencia-da-computacao
Estruturas de Controle
16:26 38
Computação
Instruções Iterativas com contagem
inicia,
controla e
incrementa o
contador
https://www.pucsp.br/graduacao/ciencia-da-computacao
Estruturas de Controle
16:26 39
Computação
Uma instrução iterativa de controle de contagem tem uma variável de laço, na qual o valor
da contagem é mantido. Ela também possui alguns meios de especificar os valores inicial e
terminal da variável de laço e a diferença entre seus valores seqüenciais, freqüentemente
chamados stepsize, As especificações iniciais, as terminais e os stepsize de um laço são
chamados de parâmetros do laço.
https://www.pucsp.br/graduacao/ciencia-da-computacao
Estruturas de Controle
16:26 40
Laços Controlados por Contador
Computação
Na linguagem C ou C++ a forma geral é:
for (<expressão1>; <expressão2>; <expressão3>)
<corpo do laço>
O corpo do laço pode ser: uma instrução única; uma instrução composta ou uma instrução
nula.
A primeira expressão é avaliada uma única vez quando se inicia o loop. Normalmente é
utilizada para inicializações.
A segunda expressão é o controle do laço avaliada antes de cada execução do corpo do
mesmo.
A terceira expressão é executada depois da execução do corpo do laço. Normalmente
utilizada para incrementos de variáveis.
Laços Controlados por Contador
https://www.pucsp.br/graduacao/ciencia-da-computacao
Estruturas de Controle
16:26 41
Computação
Exemplo típico da utilização do laço de contagem:
for (indice = 0; indice <= 10; indice++)
soma = soma + lista [indice];
Pode-se utilizar instruções múltiplas no caso da linguagem C e C++. Veja o exemplo:
for ( cont1 = 0, cont2=0.0;
cont1 <= 10 && cont2 <= 100.0;
soma = ++cont1 + cont2, cont2 *= 2.5);
Laços Controlados por Contador
https://www.pucsp.br/graduacao/ciencia-da-computacao
Estruturas de Controle
16:26 42
Computação
https://www.pucsp.br/graduacao/ciencia-da-computacao
Praticando...
16:26 43
5. “Implemente” um programa que calcule a área dos círculos com o raio variando da seguinte forma: 1, 3, 5, .. , 20 .
6. Altere o programa 6 de tal forma que os valores de inicio, fim e o incremento do raio sejam fornecidos pelo usuário.
Computação
Muitas vezes não sabemos exatamente a quantidade de vezes que um
determinado laço será executada, portanto, a utilização de laços
controlados por contador não são os mais adequados.
Nestes casos, são utilizados os laços controlados logicamente. A
continuidade da repetição do laço depende de uma expressão lógica.
https://www.pucsp.br/graduacao/ciencia-da-computacao
Estruturas de Controle
16:26 44
Laços Controlados Logicamente
Computação
Questões de projeto
✓O controle deverá ser de pré ou pós teste?
✓O laço controlado logicamente deverá ser uma forma especial de laço de contagem
ou uma instrução lógica independente?
Exemplos:while (<expressão>)
<corpo do laço>
oudo
<corpo do laço>
while (<expressão>)
Laços Controlados Logicamente
Uma instrução lógica
independente seria o caso
de que a expressão lógica
do laço não depende de
uma variável contadora.
https://www.pucsp.br/graduacao/ciencia-da-computacao
Estruturas de Controle
16:26 45
Computação
https://www.pucsp.br/graduacao/ciencia-da-computacao
Praticando...
16:26 46
7. Implemente o programa 6 utilizando while
8. Implemente o programa 6 utilizando do .. while
Computação
Localização do controle do laço
Quando devemos colocar o controle do laço no início ou no final do corpo? Ao
colocar o controle no início, o teste será efetuado antes da execução do corpo, e por
isso mesmo, corre o risco de não ser executado nenhuma vez. No caso de colocar o
controle na base, o corpo do laço será executado pelo menos uma vez.
Existem situações em que é conveniente para o programador posicionar o controle
do laço no interior do corpo ao invés de no início ou na base. Por isso, algumas
linguagens oferecem essa capacidade.
https://www.pucsp.br/graduacao/ciencia-da-computacao
Estruturas de Controle
16:26 47
Laços Controlados Logicamente
Computação
O C e o C++ possuem o comando continue que desvia a execução do programa
da sua localização dentro do corpo do laço até o final do corpo. Este comando não
encerra a execução do loop.
No caso do comando break a execução do código também é desviada para o
final do corpo do laço, porém, o laço será terminado.
https://www.pucsp.br/graduacao/ciencia-da-computacao
Estruturas de Controle
16:26 48
Laços Controlados Logicamente
Computação
Os exemplos abaixo ilustram a utilização do continue e do break. No primeiro caso um valor negativo que seja lido a partir da função leProximo será ignorado e portanto, não
acumulado na variável soma. No segundo caso um valor negativo encerra o loop.
...
while (soma < 1000) {
leProximo(valor);
if (valor<0) continue;
soma+=valor;
}
...
...
while (soma < 1000) {
leProximo(valor);
if (valor<0) break;
soma+=valor;
}
...
https://www.pucsp.br/graduacao/ciencia-da-computacao
Estruturas de Controle
16:26 49
Laços Controlados Logicamente
Computação
Exercícios1. Construa um programa que calcule o resultado da seguinte série:
y = 1/x +1/(x+1) + 1/(x+2) + 1/(x+3) + ... + 1/(x+1000)
x deverá ser fornecido pelo usuário.
2. Altere o programa 2 do slide 36 de tal forma que sejam lidas duas notas de cada aluno,calculadas as médias de cada aluno e no final seja apresentada a média geral da sala. Aquantidade de alunos deverá ser fornecida pelo usuário.
3. (desafio) Um determinado material radioativo perde metade de sua massa a cada 50segundos. Dada a massa inicial, em gramas, fazer um programa em C que calcule o temponecessário para que essa massa se torne menor que 0,5 grama. O programa em C deveescrever a massa inicial, a massa final e o tempo calculado em horas, minutos e segundos.
https://www.pucsp.br/graduacao/ciencia-da-computacao 5016:26