INE 5201 - Introdução à Ciência da Computação


Tarefas Teóricas e de Programação

Material Didático

Prof. João Bosco Mangueira Sobral   

Contato: 
(
jbmsobral@gmail.com ou bosco.sobral@ufsc.br)

                             Departamento de Informática e Estatística - Sala 515

                                                     ATENDIMENTO

 Segundas-feiras, das 08:00 às 10:00 e das 18:30 às 20:00.

Quartas-feiras, das 08:00 às 09:00 e 18:30 às 20:00.



Plano de Ensino 2018.1    Turmas:  INE5201 - 03215  e  03216

Engenharia Química e Engenharia de Alimentos
--------------------------------------------------------------------------------------------

AULA 1  (26-02-2018) Modelo Didático de Computador (pdf)    (explicado em sala de aula)
Estruturas Lógicas para Algoritmos (.docx)


AULA 2   (05-03-2018)                    Mostrando as estruturas de raciocínio lógico (SE-ENTÃO, SE-ENTÃO-SENÃO, REPITA-ATÉ)

TAREFA PRÁTICA 1 -  Algoritmo TROCA  Entrega 19/03/2018

algoritmo "TROCA"
var A, B: inteiro
inicio
     leia (A, B)
     T <- A
     A <- B
     B <- T
     escreva (A, B)
fimalgoritmo

EXEMPLO  Aplicando Estruturas Lógicas)

Considere 5 pessoas, sendo fornecido sua ALTURA e sua IDADE. Fazer um algoritmo que calcule o numero de pessoas acima de 60 anos, e MEDIA das alturas das pessoas. Escreva o numero de pessoas acima de 60 e a média das alturas.

algoritmo "IDADES-ALTURAS"
var  IDADE, CON60 : inteiro
       ALTURA, SOMA_ALTURAS, MED_ALTURAS : real
inicio
       CON60 <- 0
       SOMA_ALTURAS <- 0,00
       CONT <- 0
       enquanto  CONT < 5  faca
             leia (IDADE, ALTURA)
             se IDADE > 60 entao
                 escreval ("PESSOA IDOSA = ", IDADE)
                 CON60 <- CON60 + 1
             senao
                 SOMA_ALTURAS  <-  SOMA_ALTURAS +  ALTURA
                 CON_ALTURAS <- CON_ALTURAS + 1
             fimse
             CONT <- CONT + 1
        fimenquanto
        escraval ("A soma das alturas = ", SOMA_ALTURAS)
        escreval ("O número de pessoas idosas = ", CON60)
        MED_ALTURAS <- SOMA_ALTURAS/CON_ALTURAS
        escreval("A média das alturas é = ", MED_ALTURAS)
fimalgoritmo


AULA 3  (12-03-2018)                         
                                      

Conhecendo o VISUALG 3.0 (Exemplos no arquivo Modelo Didático de Computador)
                                                                 
                                      VISUALG 3.0 Web Site (Windows)    Manual do VISUALG

Exemplos de declaração de tipos: inteiro, real, caractere (para variáveis ou constantes que assumem valores constituidos de caracteres alfanuméricos, com letras e números) e lógico (para variáveis ou constantes que assumem valores lógicos VERDADE/FALSO)

Exemplos: var  a : inteiro
                       valor1, valor2 : real
                        vet : vetor [1..10] de real
                        matriz : vetor [0..4,8..10] de inteiro
                        nome_do_aluno : caractere
                        sinalizador : logico
                        FLAG : inteiro   ou    FLAG : caractere   ou    FLAG : real    ou   FLAG : logico

                        Qualquer dúvida sobre o Visualg podeser tirada no manual disponibilizado nest página, no início dadisciplina.

Lista 1_Visualg  (Aplicando Estruturas Lógicas I - Algoritmos simples)   Entrega dia 23-04-2018, juntamente com a PROVA 1.
Pode ser entregue manuscrita ou como documento impresso, contendo um arquivo cujo conteúdo são os algoritmos simples das questões.

EXEMPLO VISUALG 3.0:   Você pode visualizar o ambiente VISUALG 3.0 no seu Windows, executando este exemplo de algoritmo. Tire suas conclusões.

algoritmo "exemplo1"
// Um algoritmo de nome "exemplo1"

// declarar as variáveis do programa
var dinheiro : Real
sobrou : Real
custo_balas : Real

// aqui começa o programa
Inicio
// Atribuindo variáveis
dinheiro <- 3,00
sobrou <- dinheiro
custo_balas <- 2,00
// Escrevendo o conteudo entre ".."
escreval ("Ir ao mercado... ")

// Exemplo uma estrutura lógica se-entao-senao
se dinheiro > 0 entao
    escreval ("comprar balas" )
    sobrou <- dinheiro - custo_balas
senao
    escreval ("Nao comprar balas")
fimse

// Escreve o que está entre os parênteses o que contém a frase entre ".."
// e mais o valor da variável sobrou. O cursor muda de linha.
escreval("Sobrou em dinheiro : ",sobrou)
escreval("Ir para casa")
fimalgoritmo
                                                                                                 

TAREFA PRÁTICA 2 (Variáveis Simples, Estrutras Lógicas de seleção e repetição)    Entrega 19/03/2018

Considere a sua turma da disciplina de Introdução à Ciência da Computação que você faz parte. Use para os dados de entrada, para cada aluno: a sua matricula M (inteiro) e as notas das provas P1  (real) e P2 (real).  Suponha que existam 5 tarefas práticas TP1, ...., TP5. Entre com as notas das tarefas práticas TP1, ... TP5.  Para confirmar o que digitou, escreva as mensagens e as notas de entrada.
 Faça algoritmo que:

a) Leia o número N de alunos da turma. N deve ser fornecido via teclado. Suponha um valor de N inteiro. O algoritmo deve verificar se o aluno foi aprovado ou reprovado.

 

b)   Considere a média aritmética ponderada das provas de cada aluno:  MP = ( P1  +  P2 )/2.
Considere que  a média das tarefas práticas é MT = (0.20*TP1 + ... + 0.20*TP5), supondo 5 tarefas práticas. 
A média final MF = (0.4*MP + 0.6*MT)/2.0. 

Se  9.0 <= MF <= 10.0, então, o algoritmo deve escrever uma mensagem "ALUNO APROVADO". Escreva MF.
 
Se  7.5 <= MF < 9.0, então, o algoritmo deve escrever uma mensagem "ALUNO APROVADO". Escreva MF. 

Se  6.0 <=  MF < 7.5,  o algoritmo deve escrever uma mensagem "ALUNO APROVADO". Escrva MF.

Se  3.0 <= MF < 6.0 então o algoritmo deve escrever uma mensagem "ALUNO EM RECUPERAÇÂO".
O aluno deverá fazer outra prova para recuperação, Obtendo uma nota NR. Entre com esta nota NR, e a nota final será calculada como  MF = (MP + NR)/2.  Se 0.0 <= MF < 6.0, então, o algoritmo deve escrever uma mensagem "ALUNO REPROVADO".

Se 0.0 <= MF < 3.0, então, o algoritmo deve escrever uma mensagem "ALUNO REPROVADO".  

 

c)  O algoritmo deve fornecer ao final, a média aritmética MEDFINAL das notas MF dos alunos da turma. Deve escrever a mensagem identificando a média da turma, "A MEDIA DA TURMA É =  " .

         Submeta, individualmente, no Moodle.    

AULA 4 (19-03-2018)  

Estruturas Lógicas - Utilizando repetição com enquanto-faça e FLAG 

                     (a) Estrutura enquanto-faça.
                     (b) Programar usando variável FLAG.

                      Submeta, individualmente, seu programa no Moodle. 

TAREFA PRÁTICA 3 (Variáveis Simples, Estrutras Lógicas de seleção e repetição)

              Continuação da TAREFA 2.
 
                     (a) Inserir a programação dos conceitos e da média das notas MF da turma.

                     (b) Considerar e programar para 3 turmas existentes, usando FLAG para turma e um FLAG para alunos processados.

                     Submeta, individualmente, seu programa no Moodle. 
Entrega 27/03/2018

AULA 5 (26-03-2018)  

(a) Dimensionando vetores, matrizes

(a) Sequência de Fibonacci (operações aritméticas com índices).

(b) Encontrando o maior elemento de um conjunto.

(c) Encontrando o menor elemento de um conjunto.

TAREFA PRÁTICA T4a
Faça um algoritmo para ler e armazenar em um vetor a temperatura média de todos os dias do ano.
Calcular e escrever:
a) Menor temperatura do ano
b) Maior temperatura do ano
c) Temperatura média anual
d) O número de dias no ano em que a temperatura foi inferior a média anual

Postar, individualmente, no Moodle até 27/03/2018


Exemplo:  ORDEM CRESCENTE
              Ordem Crescente                 

Exemplo:  ORDEN DECRESCENTE          Ordem Decrescente


TAREFA PRÁTICA 5a  (Variáveis Indexadas)

 Exemplo:  ORDEM ALFABETICA      Ordem Alfabetica    

                           Submeter individualmente no Moodle

AULA 6 (02-04-2018)                                   

(a) Dimensionando matrizes

  (b) Leitura de matrizes

(c) Escrita de matrizes

(d) Operando sobre linhas e colunas

(e) Soma de Matrizes (explicação)

(f) Multiplicação Matrix x Vetor  (explicação)

(g) Multiplicação Matriz x Matriz  (explicação)

 

Leitura e Escrita de Matriz Formatada

#include <stdio.h>
#define DIM 3
// Teste a escrita de uma matriz[3][3]
int main()
{
    int matriz[DIM][DIM];
    int linha, coluna;

    // lendo na Matriz
    for (linha = 0 ; linha < DIM ; linha++)
         for (coluna = 0 ; coluna < DIM ; coluna++)
        {
             printf("Elemento [%d][%d]: ", linha+1, coluna+1);
             scanf("%d", &matriz[linha][coluna]);
        }

    // imprimindo a matriz na tela
    for(linha = 0 ; linha < DIM ; linha++)
   {
        for(coluna = 0 ; coluna < DIM ; coluna++)
             printf("%5d", matriz[linha][coluna]);
        printf("\n"); //após cada linha ser impressa, um salto de linha
    }

     system("pause");
    return 0;
}

=================================================================================================

UTILIZANDO AMBIENTE  DEV-C++        Dev-C++ Web Site          Download  DEV-C++   

Introdução ao Dev-C++ (com nossa ferramenta de aula)

Curso Básico de Linguagem C   ( Blog por Ricardo Lüders )     

Curso Básico de Linguagem C (página da disciplina)

Livro - C Completo e Total ( Herbert Schildt )

Programar em C (Wikibooks)

A Linguagem C  (apostila da UTFPR - página da disciplina)

Deitel - C Como Programar   (Você pode utilizar o livro do Deitel para consultar e programar exemplos na linguagem C.)

O que são as Diretivas de Pré-Processamento:      #include <stdio.h>     #include <stdlib.h>   

Explicação  return 0  em C
Isso serve para que o programa diga a quem (uma rotina do sistema) o chamou (chamou o main() ) que ele retornou sem erro. Na linguagem C o zero significa false e o um significa true. Assim, supondo que eu tenha um programa que chame uma rotina em C. Essa rotina executa e no final ela me retorna um número. Para o meu programa que chamou, com essa rotina, eu posso fazer uma lógica baseada nesse retorno. Se retornou zero, eu sei que foi tudo bem e, marco como sucesso. Se retornar 1, eu sei que deu erro. Então posso notificar ao sistema ou chamar alguma outra rotina. Na teoria, qualquer número retornado diferente de zero é um retorno não esperado, ou seja, um erro e poderá ser tratado, se for o caso.

#include <stdio.h>
#include <stdlib.h>
... ...

 <tipo>  main() {

.... ....


// Evita que a janela do prompt do Windows se feche. 
system("pause"); 
return 0
}

10 Exemplos Básicos de Programas em C

Exemplo1 - Atribuição e Saída de Dados

#include<stdio.h>
#include <stdlib.h>

int main(void)
{ int N=2;
char Letra ='a';
float X = 2.5;
double Z=3.5e-10;
printf("O primeiro valor impresso eh uma constante decimal %d \n",15);
printf("O valor da primeira variavel declarada e inicializada eh %d \n",N);
printf("O valor da segunda variavel declarada e inicializada eh %c \n",Letra);
printf("O valor da primeira variavel de ponto flutuante (prec. Simples) eh %f \n",X);
printf("O valor da segunda variavel de ponto flutuante (prec. Dupla) eh %f \n",Z);
printf("O valor da segunda variavel de ponto flutuante (prec. Dupla) eh %.11f \n",Z);
printf("O valor da expressão que soma 4 ao valor de N eh %d\n", N+4);
printf("As variaveis utilizadas (declaradas e inicializadas) foram N=%d, Letra=%c, X=%f, Z=%.11f \n", N,Letra,X,Z);
system("pause");
return 0;
} 

Exemplo2 - Declaração, Entrada por teclado, Saida de Dados

#include <stdio.h>
#include <stdlib.h>

int main (void)
{
//declaração de variáveis do tipo inteiro
int a, b, soma;
printf("Digite um numero inteiro: ");
scanf("%d", &a); //recebe um inteiro e armazena na variável a
printf("Digite um numero inteiro: ");
scanf("%d", &b); //recebe um inteiro e armazena na variável b
soma = a + b;
//Efetua adição de a com b e armazena na variável soma
printf("O valor da soma = %d\n", soma); //Mostra mensagem com o resultado
system ("pause");
return(0);
}

Exemplo3 - Função e Recursão

#include <stdio.h>

#include <stdlib.h>

int fat (int n) 
{
int res = 1;
while (n > 1) {
res = res * n;
n--;
}
return res;
}

int main () 
{
int n, res;
printf("Entre com o valor de n: ");
scanf("%d", &n);
res = fat(n+1) / (n+1);
printf("Fatorial de %d = %d\n", n, res );
system("pause");
return 0;
}

Exemplo1 - Atribuição e Saída de Dados

#include<stdio.h>
#include <stdlib.h>

int main(void)
{ int N=2;
char Letra ='a';
float X = 2.5;
double Z=3.5e-10;
printf("O primeiro valor impresso eh uma constante decimal %d \n",15);
printf("O valor da primeira variavel declarada e inicializada eh %d \n",N);
printf("O valor da segunda variavel declarada e inicializada eh %c \n",Letra);
printf("O valor da primeira variavel de ponto flutuante (prec. Simples) eh %f \n",X);
printf("O valor da segunda variavel de ponto flutuante (prec. Dupla) eh %f \n",Z);
printf("O valor da segunda variavel de ponto flutuante (prec. Dupla) eh %.11f \n",Z);
printf("O valor da expressão que soma 4 ao valor de N eh %d\n", N+4);
printf("As variaveis utilizadas (declaradas e inicializadas) foram N=%d, Letra=%c, X=%f, Z=%.11f \n", N,Letra,X,Z);
system("pause");
return 0;
} 

Exemplo2 - Declaração, Entrada por teclado, Saida de Dados

#include <stdio.h>
#include <stdlib.h>

int main (void)
{
//declaração de variáveis do tipo inteiro
int a, b, soma;
printf("Digite um numero inteiro: ");
scanf("%d", &a); //recebe um inteiro e armazena na variável a
printf("Digite um numero inteiro: ");
scanf("%d", &b); //recebe um inteiro e armazena na variável b
soma = a + b;
//Efetua adição de a com b e armazena na variável soma
printf("O valor da soma = %d\n", soma); //Mostra mensagem com o resultado
system ("pause");
return(0);
}

Exemplo3 - Função e Recursão

#include <stdio.h>

#include <stdlib.h>

int fat (int n) 
{
int res = 1;
while (n > 1) {
res = res * n;
n--;
}
return res;
}

int main () 
{
int n, res;
printf("Entre com o valor de n: ");
scanf("%d", &n);
res = fat(n+1) / (n+1);
printf("Fatorial de %d = %d\n", n, res );
system("pause");
return 0;
}

Tarefa Prática T5b - Matrícula de aluno

Suponha que uma escola utilize, como código de matrícula, um número inteiro
no formato AASDDD, onde:
    • Os dois primeiros dígitos, representados pela letra A, são os dois últimos
       algarismos do ano da matrícula;
    • O terceiro dígito, representado pela letra S, vale 1 ou 2, conforme o aluno
       tenha se matriculado no 1º ou 2º semestre;
    • Os quatro últimos dígitos, representados pela letra D, correspondem à ordem
       da matrícula do aluno, no semestre e no ano em questão.
Crie um algoritmo que leia o número de matrícula de um aluno e imprima o ano
e o semestre em que ele foi matriculado.

TAREFA 6a - Algoritmo para multiplicação de matrizes  - Programar em C

TAREFA 6b - Ler matrizes A e B. Gera Matriz (+ - * /)  (PROVA 2)

TAREFA 6c - Integração de função com método dos retângulos (PROVA 2)

Antes, esboce no papel a multiplicação de matrizes genéricas

programa multiplica_matrizes; 
   matriz mat1, mat2, mat3; 
   inteiro linha, coluna, i, acumula; 
   "leia mat1"; 
   "leia mat2"; 
   "verifique se mat1 é compativel com mat2"; 
   para linha de 1 até "numero de linhas de mat1" faça 
     para coluna de 1 até "numero de colunas de mat2" faça 
       acumula=0; 
       para i de 1 até "numero de colunas de mat1" faça 
         acumula=acumula+mat1[linha][i]*mat2[i][coluna]; 
       fimpara; 
       mat3[linha][coluna]=acumula; 
     fimpara; 
   fimpara; 
   imprima mat3; 
fim programa;


Mais  Vetores e Matrizes

 

PROVA 1 (ENTREGAR SEGUNDA-FEIRA, 07/05/2018)

 
Funções Definidas pelo Programador

===============================================================================
A linguagem de programação C permite que os parâmetros sejam passados para as funções de duas maneiras, por valor e por referência. Na passagem por valor, como o próprio nome diz, uma expressão pode ser utilizada na chamada. O valor da expressão é calculada, e o valor resultante é passado para a execução da função.

https://www.ime.usp.br/~elo/IntroducaoComputacao/Funcoes%20passagem%20de%20parametros.htm

Passagem por Valor

É a forma mais comum utilizada para passagem de parâmetros.

Por exemplo, considere a família de funções trigonométricas, como seno, cosseno, etc. A função seno, por exemplo, recebe o valor de um ângulo (um número real) e devolve o seno desse ângulo. Se tivermos as funções seno e cosseno, podemos facilmente definir uma função tangente. 

Por exemplo, considere que nós temos disponíveis os seguintes protótipos para as funções seno e cosseno:

float seno (float angulo);
float cosseno (float angulo);

Conhecendo esses protótipos, podemos escrever a função tangente da seguinte forma:

float tangente (float angulo) 
{
   float s, c;
   s = seno(angulo);
   c = cosseno(angulo);
   return s/c;
}

=================== Exemplo pg. 48 ====================================
#include <stdio.h>   /* este arquivo contém o protótipo da função printf*/

void test_num(int); /* protótipo da função test_num*/

void main(void) {

        char L='A';

        float x=2.5f;
        int A=2,  B=3;
        printf( "imprimindo %d, %c, %f e %i", 10, L, x, A+B );
        test_num(A);
        test_num(B);
}
void test_num(int X)

{
        if (X%2==0) printf("%i é par", X);
        else printf("%i é impar", X);
}

======================= Exemplo pg.49 ==================================
#include
 <stdio.h>   /* este arquivo contém o protótipo da função printf*/

int MDC(int,int);   /* protótipo da função MDC*/

void main(void) {

         int v1, v2, MaxDivCom;

         scanf("%i %i",&v1,&v2);

         MaxDivCom = MDC(v1,v2);

         printf("O maximo divisor comum entre %i e %i e´ %i", v1,v2,MaxDivCom);

 }

int MDC(int u, int v)  /*início da definição da função MDC*/ {

int temp;

while(v!=0) {

        temp = u%v;

        u =v;

        v = temp;

        }

        return(u);  /* Este comando return(u) equivale a fazer MCD = u */

}

====================Exemplo4 - Função e Passagem de vetor como parâmetro============

 #include <stdio.h>

#define TAM_MAX 10

void ImprimeVet (int Tam, int Vet[TAM_MAX])
{
int i;
for (i=0; i< Tam; i++)
{
printf("%d\n", Vet[i]);
}
}

int main()
{
int Notas[TAM_MAX];

ImprimeVet(TAM_MAX, Notas); // Passa o vetor 'Notas' como
// parâmetro

system("pause");
return 0;

}

=========================================================================

Escopo de Variáveis (Globais e Locais) ver pag. 50

Escopo de variáveis

O escopo de uma variável é definido pelas regiões (blocos) onde a variável pode ser utilizada. Por exemplo, as variáveis declaradas no início do corpo da função main podem ser utilizadas em qualquer lugar dentro da função main, porém apenas DENTRO da main, ou seja, não podem ser utilizadas em outra função. Variáveis declaradas no mesmo escopo precisam ter nomes diferentes, mas nomes podem ser "reaproveitados" em outros escopos. Vejamos o exemplo abaixo:

#include <stdio.h>
#include <stdlib.h>

int fat (int n) 
{
   int res = 1;
   while (n > 1) {
      res = res * n;
      n--;
   }
   return res;
}

int main () 
{
   int n, res;
   printf("Entre com o valor de n: ");
   scanf("%d", &n);
   res = fat(n+1) / (n+1);
   printf("Fatorial de %d = %d\n", n, res );
   system("pause");
   return 0;
}
Observe que a função main e fat possuem ambas variáveis com o nome res, e que main possui uma variável chamada n, que é o nome do parâmetro da função fat. Procure não se confundir, pois apesar do mesmo nome, elas são variáveis diferentes. Para a função fat, o parâmetro n funciona como uma variável local (ou seja, válida dentro da função apenas), juntamente com a variável res. A diferença é que o parâmetro n recebe seu valor no instante da chamada. Vamos simular esse programa para a entrada 2.

O programa sempre inicia sua execução pela função main, que solicita a entrada de um valor para n. A linha res = fat(n+1)/(n+1); chama a função fat. Como n=2 (entrada do programa), então o valor 3 é passado para a função, ou seja, esse valor é atribuido ao parâmetro n e a função fat começa a executar seu corpo. O fatorial de 3 é calculado e o valor 6 é atribuido à variável res. Observe que o parâmetro n é utilizado como variável, o que é permitido pela linguagem C. Esse parâmetro é decrementado até 1, porém, como são variáveis diferentes, o valor de n dentro de main continua sendo 2. Ao terminar o chamado, a função fat devolve o valor 6 ao lugar onde foi chamado dentro da função main, e o programa continua para calcular o valor da expressão fat(n+1)/(n+1). Como o valor de n continua 2, o resultado da divisão é ..... . Esse valor é atribuído à variável res. O último printf imprime o valor de n e res, que correspondem aos valores 2 e 2, respectivamente.

 
AULA 7 (09-04-2018)        

EQA-023

AULA 8 (16-04-2018)
        

EQA023

AULA 9 (23-04-/2018)   

Prova 1

AULA 10 (30-04-2018) 

Sala EQA023
Entrega da Prova de Recuperação

LIICTC sala 8

AULA 11 (07-05-2018)

LIICTC sala 8

AULA 12 (14-05-2018)

LIICTC sala 8

AULA 13 (21-05-2018)

Não houve.   Paralisação do Caminhoneiros

TAREFA 7 - Entregar até 24/06/2018
Fazer um programa MatLab ou na linguagem C , para calcular as raízes de uma equação do segundo grau 
A.X**2 + B.X + C = 0, onde DELTA = B**2-4.A.C. Veja o caso DELTA > 0, com duas raízes reais iguais; veja o caso DELTA < 0, com duas raízes reais iguais; veja o caso DELTA < 0, duas raízes complexas. Executar para três equações.

AULA 14 (28-05-2018)

TAREFA 8a e 8b   Lista Mais Funções  - A entrega desta lista até 25/06, executada e mostrada funcionando. Vale até  0,50 caso apenas 1 programa seja efeito, e vale até 1,0 na media final no Moodle para aqueles que fizerem os dois programas. Trata-se de exercícios sobre funções, mostrando como se calcula raízes de equações algébricas ou transcendentes. A matéria será vista na próxima disciplina de Cálculo Numérico. O programa já está feito em MatLab, bastando entender e executar. Pode ser feita em C ou qualquer linguagem que desejem.

Para a obtenção dos pontos acima, usar o Laboratório Virtual de Programação do Moodle.

AULA 15 (04-06-2018)

Aula 1 - Alunos da Eng. Quimica, Alimentos e Sanitária.  (14:00-15:00)   MatLab
(4 capítulos podem ser obtidos na fotocópia do Hall do CTC, em nome do Prof. Bosco (INE 5201)

Aula 2 - Alunos da Eng. Mecânica, Elétrica e Eletrônica.  (15:00-16:00)   Linguagem C (Ponteiros)


AULA 16 (11-06-2018)

Atendimento - Das 14:00 às 16:00,  Sala de Aula  EQA-023

Atendimento  - Após 16:00 até 19:00   Sala 515-INE

TAREFA 9a -  Definição de funções e Matrizes - Entregar 24/06/2018  (Eng. Quimica, Eng. Alimentos, Eng. Sanitária)

(a)  Escreva uma função que lê, linha a linha, uma matriz real Amxn

 (b) Escreva uma função que calcula a soma dos elementos da linha i de uma matriz real Amxn.

(c)  Escreva uma função que calcula o produto dos elementos da coluna j de uma matriz real Amxn.


TAREFA 9b
- Ponteiros em C - Eng. Mecânica, Elétrica e Eletrônica
Estudar e executar todos os exemplos sobre Apontadores / Ponteiros / Pointers da turma 02202A
Bibliografia:   
http://www.inf.pucrs.br/~pinho/PRGSWB/Ponteiros/ponteiros.html   (Prof. Márcio Sarroglia Pinho)

Na página da turma 02202A, todos os exemplos estão corrigidos.


AULA 17 (18-06-2018)

TAREFA 10a  -   Entregar até 02/07/2018  (Eng. Quimica, Eng. Alimentos, Eng. Sanitária)
Faça uma função MAX que recebe como entrada um inteiro n, uma matriz inteira Anxn e devolve três inteiros: k, Lin e Col. O inteiro k é um maior elemento de A e é igual a A[Lin,Col]. 
        Exemplo:  

 

TAREFA 10b -  Passagem de parâmetros por referência -  Entregar até 02/07/2018  (Eng. Elétrica, Eng. Eletrônica, Eng. Mecânica)  
Sempre que possível é recomendável utilizar a forma de passagem por valor, para evitar "efeitos colaterais", mas há situações onde esses efeitos são desejáveis, por exemplo, quando desejamos criar uma função que retorne mais de um valor. As funções que vimos até agora (incluindo as predefinidas, seno, cosseno, potencia, exponencial, ...) só devolvem um valor. Mas outras funções, que trabalhem com, por exemplo, números complexos da forma (a + bi), precisam retornar 2 valores (a e b). Por exemplo, tente escrever uma função que retorne o quadrado de um número complexo. Fazer uma função para retornar a parte real, e a parte imaginária. C permite criar uma função que retorne os dois valores simultaneamente. Use ponteiros.


Representação de Números (Inteiros, Reais de Ponto Flutuante, Em forma de potência)  (todos os alunos)

Outros Paradigmas de Programação  (Eng. Mecânica, Eng. Elétrica e Eng. Eletrônica) 

AULA 18 (25-06-2018)   Prova 2 

Questões sobre as tarefas práticas propostas.

Para Eng. Sanitária (Funções e MatLab)
Para Eng. Mecânica, Elétrica e Eletrônica (Funções e Ponteiros)

 

AULA 19 (02-07-2018)  Prova de Recuperação

 

AULA 20 (09-07-2018) Resultados Finais

 

=================================================================================================