• Nenhum resultado encontrado

SSC INTRODUÇÃO À COMPUTAÇÃO PARA ENGENHARIA AMBIENTAL RESOLUÇÃO EXERCÍCIOS. Profa. Dra. Milena Guessi Margarido

N/A
N/A
Protected

Academic year: 2021

Share "SSC INTRODUÇÃO À COMPUTAÇÃO PARA ENGENHARIA AMBIENTAL RESOLUÇÃO EXERCÍCIOS. Profa. Dra. Milena Guessi Margarido"

Copied!
29
0
0

Texto

(1)

Profa. Dra. Milena Guessi Margarido

(milena@icmc.usp.br)

RESOLUÇÃO

EXERCÍCIOS

SSC 301 - INTRODUÇÃO À COMPUTAÇÃO PARA ENGENHARIA AMBIENTAL

(2)

PSEUDOCÓDIGO

algoritmo sequência de comandos fim algoritmo corpo principal repita se condição então interrompa fim se sequência de comandos fim repita repetição se condição

então sequência de comandos fim se

condição

condição composta se condição

então sequência de comandos senão sequência de comandos fim se

declare identificador numérico declare identificador lógico declare identificador literal

declarações leia variável escreva nome comandos E/S e ou não {conjunção} {disjunção} {negação} operadores lógicos + × − ÷ 𝑣𝑎𝑟𝑖á𝑣𝑒𝑙𝑋 √ expressões aritméticas = ≠ > < ≥ ≤ igual a diferente de maior que menor que maior ou igual a menor ou igual a expressões lógicas identificador ← expressão comando de atribuição

(3)

OPERADORES LÓGICOS

Definições A conjunção (e - ∧)de duas proposições (ou seja, uma variável lógica, uma relação ou uma expressão lógica composta) é

verdadeira se e somente se ambas as proposições são verdadeiras

A disjunção (ou - ∨) de duas proposições é verdadeira se e somente se pelo menos uma delas for verdadeira

A negação (não - ¬) de uma proposição é verdadeira se e o somente se a proposição é falsa.

(4)

TABELA VERDADE

CONJUNÇÃO

𝑷

𝑸

𝑷 ∧ 𝑸

V

V

V

V

F

F

F

V

F

F

F

F

(5)

TABELA VERDADE

DISJUNÇÃO

𝑷

𝑸

𝑷 ∨ 𝑸

V

V

V

V

F

V

F

V

V

F

F

F

(6)

TABELA VERDADE

NEGAÇÃO

𝑷

¬𝑷

V

F

(7)

EXEMPLO

• Implemente um programa em C que preencha dois vetores, X e

Y, com dez números inteiros cada. Calcule e mostre os seguintes vetores resultantes.

a) A união de X e Y, com todos os elementos de X e Y sem

repetições

b) A diferença entre X e Y, ou seja, os elementos de X que não

existem em Y, sem repetições

c) A soma entre X e Y, ou seja, a soma de cada elemento de X

com o elemento o elemento correspondente de Y

d) O produto de X e Y, ou seja, a multiplicação de cada elemento

(8)

SOLUÇÃO A

• Para X e Y:

• União =

• O que podemos observar nesse exemplo?

• É preciso remover os números repetidos dentro do próprio

vetor

• O vetor resultado deve ter no máximo 20 posições (se tiver

apenas números únicos em X e Y)

• Preenchemos o vetor resultado primeiro com elementos do

(9)

SOLUÇÃO A

Primeiro passo:

• Elaborar um algoritmo, semelhante a uma receita, sobre os

passos que o programa precisa executar para resolver o problema

• Exemplo:

• Criar um vetor resultado para guardar a união de X e Y

• Ler cada elemento do vetor X e adicionar no vetor resultado

apenas os elementos que ainda não existem no vetor união

• Ler cada elemento do vetor Y e adicionar no vetor resultado

apenas os elementos que ainda não existem no vetor união

(10)

SOLUÇÃO A

Segundo passo:

• Escrever em linguagem de pseucódigo o algoritmo para

(11)

algoritmo

declare X[10], Y[10], RESULT[20], PROX, I, J numérico

PROX ← 1 {qual a próxima posição que pode ser usada em RESULT} I ← 1 repita se I > 10 então interrompa fim se leia X[I] J ← 1 repita

se J = PROX ou RESULT[J] = X[I] então interrompa

fim se

se RESULT[J] ≠ X[I] {enquanto não encontra X[I] em RESULT[J]} então J ← J + 1

fim se fim repita se J = PROX

então RESULT[J] ← X[I] PROX ← PROX + 1 fim se I ← I + 1 fim repita imprime RESULT[1]..RESULT[PROX] fim algoritmo repete para Y

Condição de parada: percorreu todos os

elementos do vetor resultado (então J=PROX) ou se x[i] foi encontrado (então J<PROX)

Se eu consegui percorrer todo o vetor resultado é porque o elemento x[i] ainda não se encontra nele, logo eu posso

inserir esse valor no fim do vetor resultado e atualizar o valor de prox

(12)

SOLUÇÃO A

Terceiro passo: • Implementar!

(13)

#include <stdio.h> //biblioteca para E/S int main() {

int x[5]={}, y[5]={}, result[10]={}, prox, i, j; prox=0; //result começa sem nenhum elemento

for (i=0;i<5;i++) { printf("\nDigite x[%d]: ", i); scanf("%d",&x[i]); for (j=0;j<prox;j++) { if (x[i]==result[j]){ printf("encontrado"); break; } } if (j==prox) { printf("inserido"); result[prox]=x[i]; prox++; } } //Imprimir resultado

printf("\ni: %d, j: %d, prox: %d result: ", i, j, prox); for (i=0;i<prox;i++){ printf("%d,",result[i]); } return 0; } repete para Y

(14)

DISCUSSÃO DA SOLUÇÃO

• Existem variações para a resolução do exercício anterior! Você

consegue pensar em outras soluções?

• Ler o n-ésimo elemento de X e Y simultaneamente • Diferentes tipos de repetição (while ou do)

• Qual a melhor solução? Depende....

• Normalmente, preferimos a solução que precisa de menos

passos

• Ou podemos preferir a solução que é mais clara

(15)

SOLUÇÃO B

• Para X e Y:

• Diferença =

• O que podemos observar nesse exemplo?

• Preciso saber X e Y para poder determinar o vetor resultado • O vetor resultado pode ter no máximo 10 posições (se

(16)

algoritmo

declare X[10], Y[10], RESULT[20], PROX, I, J, R numérico

PROX ← 1 {qual a próxima posição que pode ser usada em RESULT} I ← 1 repita se I > 10 então interrompa fim se leia X[I] fim repita I ← 1 repita se I > 10 então interrompa fim se J ← 1 repita se X[I]=Y[I] então interrompa fim se J ← J + 1 fim repita .... I ← I + 1 fim repita imprime RESULT[1]..RESULT[PROX] fim algoritmo

Condição de parada: x[i] também existe em y

Se eu consigo percorrer todo o vetor y sem

encontrar x[i], então x[i] é diferente, mas antes de inserir x[i] no vetor resultado também preciso verificar se ele é único

repete para Y

Três iteradores porque estou percorrendo três vetores no

(17)

se J=10 então R ← 1 repita se R>PROX então interrompa fim se se RESULT[R] ≠ X[I] então R ← R + 1 fim repita

se R=PROX então RESULT[J] ← X[I] PROX ← PROX + 1

fim se fim se

Se x[i] não existe em y

Se eu também consigo percorrer todo o vetor resultado sem encontrar x[i], então eu posso inserir x[i] no vetor resultado e atualizar o valor de prox

(18)

Tente modificar a

implementação do

exemplo A com base

no pseudocódigo visto

(19)

#include <stdio.h> //biblioteca para E/S int main() {

int x[5]={}, y[5]={}, result[5]={}, prox, i, j, r; prox=0; //result começa sem nenhum elemento

for (i=0;i<5;i++) {

printf("Digite x[%d]: ", i); scanf("%d",&x[i]);

}

for (i=0;i<5;i++) {

printf("Digite y[%d]: ", i); scanf("%d",&y[i]); } for (i=0;i<5;i++){ for (j=0;j<5;j++) { if (x[i]==y[j]){ break; } } if (j==5) {

printf("x[%d] nao existe em y\n",i); for (r=0;r<prox;r++){ if (x[i]==result[r]){ break; } } if (r==prox){ printf("x[%d] inserido\n",i); result[prox]=x[i]; prox++; } } } //Imprimir resultado

printf("i: %d, j: %d, prox: %d result: ", i, j, prox); for (i=0;i<prox;i++){

printf("%d,",result[i]); }

return 0; }

(20)

SOLUÇÃO C

• Para X e Y:

• Soma =

• O que podemos observar nesse exemplo?

• Preciso saber X e Y para poder determinar o vetor resultado

(21)

algoritmo

declare X[10], Y[10], RESULT[10], I numérico I ← 1 repita se I > 10 então interrompa fim se leia X[I] fim repita I ← 1 repita se I > 10 então interrompa fim se leia Y[I]

RESULT[I] ← X[I] + Y[I] fim repita

imprime RESULT[1]..RESULT[10] fim algoritmo

(22)

Faça as alterações

necessárias na

implementação

anterior para o

pseudocódigo do

slide anterior

(23)

SOLUÇÃO D

• Para X e Y:

• Produto =

• O que podemos observar nesse exemplo? • Idem C

(24)

algoritmo

declare X[10], Y[10], RESULT[10], I numérico I ← 1 repita se I > 10 então interrompa fim se leia X[I] fim repita I ← 1 repita se I > 10 então interrompa fim se leia Y[I]

RESULT[I] ← X[I] × Y[I] fim repita

imprime RESULT[1]..RESULT[10] fim algoritmo

(25)

Faça as alterações

necessárias na

implementação

anterior para o

pseudocódigo do

slide anterior

(26)

EXERCÍCIO 1

• Escreva um programa que preencha uma matriz NOTAS de

dimensão 10x3 com as notas de 10 alunos em três provas de uma mesma disciplina. Determine em qual prova cada aluno

obteve a menor nota. Imprima um relatório informando em qual prova cada aluno obteve a menor nota e também o número

total de alunos que tiraram a sua menor nota na prova 1, na prova 2, ou na prova 3.

• Dica para declaração de matrizes:

• declare NOTAS [1:10,1:3] {linha,coluna} • int notas [10][3]={}

(27)

EXERCÍCIO 1

• Dica para declaração de matrizes:

• declare NOTAS [1:10,1:3] {linha,coluna} • int notas [10][3]={}

(28)

EXERCÍCIO 2

• A tabela dada a seguir contém vários itens que estão estocados em vários

armazéns de uma companhia e o custo de cada um dos produtos armazenados. Faça um programa que:

28 PRODUTO ARMAZÉM 1 2 3 1 (UNID.) 1200 3700 3737 2 (UNID.) 1400 4210 4224 3 (UNID.) 2000 2240 2444 CUSTO ($) 260,00 420,00 330,00 • Lê o estoque inicial

• Determine e imprime quantos

itens estão armazenados em cada armazém

• Determina qual armazém tem

o maior estoque do produto 2

• Calcula o custo total de:

• Cada produto em cada

armazém

• Estoque de cada armazém

• Cada produto em todos os

(29)

EXERCÍCIO 3

• Em um frigorífico existem 90 bois. Cada boi traz preso em seu

pescoço um cartão contendo seu número de identificação e seu peso.

• Desenvolva o código em C de um programa que escreve o

número e peso do boi mais gordo e do boi mais magro.

Referências

Documentos relacionados

Presidente: Profa Dra Ivone Evangelista Cabral - EEAN/UFRJ 1ª Examinadora: Profa Dra Elizabeth Teixeira - CBS/UEPA 2ª Examinadora Profa Dra Ana Inês Sousa - EEAN/UFRJ Suplente:

O banco instável tenta mobilizar fundos (depósitos garantidos e não garantidos) aumentando a sua taxa de juro. Os depositantes garantidos serão menos sensíveis à probabilidade

Great Britain, London: Dorling Kindersley Limited, 2011.

O objetivo deste trabalho é a avaliação da qualidade das águas do Rio Mossoró em três pontos de coleta próximos ao muaicfpio de Mossoró/RN: Barragem do Genésio

As disposições previstas nesta cláusula não excluem o disposto no Anexo VIII (Fiscalização Técnica e Administrativa) da Instrução Normativa SLTI/MP nº 05, de 2017. A

Esses resultados foram confrontados com os de outros modelos encontrados na literatura, por meio da comparação dos R 2 s ajustados dos modelos, pela aplicação do teste

2008 (Tabela 1), foi determinado em função das interações humanas e as características naturais da praia conforme a seguir: a) no ambiente praial foi considerado a presença

Verdade, pois basta que uma proposição seja F para a conjunção ser F. b) Se os valores lógicos de duas proposições forem falsos, então a disjunção entre elas têm valor lógico