Engenharias: Eletrônica, Elétrica, Mecânica,
Alimentos, Quimíca, Sanitária
========================================================================================================
AULA 1 (11-03-2019)
Modelo Didático de Computador (pdf) (explicado em sala de aula) Mostrando as estruturas de raciocínio lógico: (SE-ENTÃO, SE-ENTÃO-SENÃO, REPITA-ATÉ, ENQUANTO-FAÇA, CONTADORES, REPETIÇÃO COM O USO DE CONTADORES REPETIÇÃO COM O USO DE FLAG) ACUMULADORES DE SOMA ) |
TAREFA 1a -
Algoritmo TROCA
algoritmo "TROCA"
.......
inicio
leia (A, B)
T <- A
A <- B
B <- T
escreva (A, B)
fimalgoritmo
TAREFA 1b - Algoritmo AVALIAÇÂO para 1 turma.
Considere a sua turma da disciplina de Introdução à
Ciência da Computação que você faz parte.
dados de
entrada, para cada
aluno: a sua matricula M (inteiro) e as notas das provas P1
(real) e P2 (real). Suponha que existam
3 tarefas práticas TP1, TP2, TP3. Entre com as notas
das tarefas práticas TP1, TP2,TP3.
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.30*TP1 + 0.30TP2 +
0.40*TP3), supondo 5 tarefas práticas.
A média final MF = (0.7*MP + 0.3*MT)
<Fazer a lógica da aprovação de cada aluno, de
acordo com o explicado na aula>
c) O algoritmo deve fornecer ao final, a média MEDFINAL das notas MF dos alunos da turma. Deve escrever a mensagem identificando a média da turma, "A MEDIA DA TURMA É = " .
TAREFA 1c - Algoritmo AVALIAÇÂO para 3
turmas.
Utilizar o mesmo código e fazer o programa C. Processar o código para
3 turmas (0, 1, 2, -1), sendo -1 o valor que deve ser digitado para FLAG.
========================================================================================================
AULA 2 (18-03-2019)
TAREFA T2 - Algoritmo IDADES e
ALTURAS
Considere
40 pessoas, sendo fornecido sua ALTURA e sua IDADE. Fazer um algoritmo que
calcule o numero de pessoas acima de 21 anos, e MEDIA das
alturas das pessoas dessas pessoas. Escreva o numero de pessoas acima de 60 e a média das
alturas.
Tarefa feita em aula: Vale 10% para a Nota P1, para
quem esteve na sala de aula.
========================================================================================================
AULA 3 (25-03-2019)
TAREFA T3
-
Algoritmo UPA (Fazer em casa e levar as dúvidas para a
sala de aula)
Os dados de entrada de pacientes numa UPA infectados por uma virose relatam:
NOME, CORISA, RESFRIADO, GRIPE,
PNEUMONIA. Para processar no computador o número
de infectados em cada situação, foram atribuídos os valores 0 (zero) ou 1 (um),
dependendo dos sintomas apresentados quando do diagnóstico médico. Ou seja, um
paciente com apenas CORISA e RESFRIADO tem o
seguinte registro: 1, 1, 0, 0. Um outro paciente no estado GRIPE pode apresentar
o seguinte registro: 0, 0, 1, 0. Um paciente registrando PNEUMONIA terá o
seguinte registro: 0, 0, 0, 1. Um paciente com GRIPE
e PNEUMONIA poderá ter o seu registro como, por exemplo: 0, 0,
1, 1. E assim por diante. Fazer um algoritmo que informe à direção do UPA o
seguinte:
(A) Quantos pacientes tiveram apenas CORISA ou
RESFRIADO.
(B) Quantos pacientes foram registrados como PENUMONIA.
(C) Quantos pacientes tiveram apenas GRIPE.
(D) Quantos pacientes tiveram CORISA e
RESFRIADO:
(E) Quantos pacientes tiveram GRIPE ou PNEUMONIA.
========================================================================================================
Operadores
Lógicos (Portas Lógicas)
=====================================================================================
AULA 4 (01-04-2019) -
INTRODUZINDO A LINGUAGEM DE PROGRAMAÇÃO C
Treinamento em Linguagem C
(Victorine Viviane Mikzhari)
Linguagem C - Básico -
Curso Básico de Linguagem C
( Blog por Ricardo Lüders )
ou
Curso Básico de Linguagem C (página da disciplina)
Livro - C Completo e Total ( Herbert Schildt )
Programar em C (Wikibooks)
Introdução à Linguagem C com Dev-C++ (com nossa ferramenta de aula)
Deitel - C Como Programar (Você pode utilizar o livro do
Deitel para programar na linguagem C.)
UTILIZANDO AMBIENTE DEV-C++
Dev-C++ Web Site
Download
DEV-C++
USANDO O LABORATÓRIO VIRTUAL DE
PROGRAMAÇÃO (VPL-MOODLE)
Para a Linguagem C, entre com um arquivo <nome_arquivo>.c (ponto
c)
Para executar MatLab, entre com um <nome_arquivo>.m
(ponto m)
=====================================================================================================
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.
======================================================================================================
TIPOS DE VARIÁVEIS EM C
Exemplos de declaração de tipos: inteiro,
real,
caractere (para
variáveis ou constantes que assumem valores com caracteres
alfanuméricos, com letras e números) e
lógico (para variáveis ou
constantes que assumem valores lógicos VERDADE/FALSO).
As palavras em negrito são reservadas à linguagem algorítmica.
var a:
inteiro
valor1, valor2:
real
vet : vetor [1..10] de real
matriz: vetor [0..4, 8..10] de inteiro
nome_aluno:
caractere
sinalizador:
logico
FLAG : inteiro ou FLAG:
caractere ou FLAG:
real ou FLAG:
logico
Aprenda sobre
Variáveis em C
Em C, as declarações de tipo ficam como
segue:
Declarações de Tipos
em C
float valor1, valor2; // float toma 4
bytes.
double valor3, valor4; // double toma 8 bytes.
char C; C é uma variável que armazenará 1 só
caractere.
char FLAG; // FLAG assume um caractere.
float FLAG; // FLAG assume um valor float real de
4 bytes.
char nome_aluno[32]; // pode armazenar nmes até
32 caracteres; tamanho de vetores de caracteres pode ser determinado por
você.
char NOME_CLIENTE[61]; //
cria a variável nome_cliente como um vetor de char com capacidade de
armazenamento de 61 caracteres.
bool LOGICA; // declara uma variável booleana (o mesmo que lógica) de nome
LOGICA, que só assume valores lógicos V (verdade) ou (F) falso;
Veja mais exemplos:
int
inteiro
=
0;
//
variável tipo inteiro.
float
pontoflutuante
=
3.14;
//
variável tipo ponto flutuante com precisão simples.
double
pontoflutuante2
=
3.1415;
//
variável tipo ponto flutuante com precisão dupla.
char
caracter =
'a';
//
variável tipo caracter.
bool
logico;
//
variável tipo lógico.
Dimensionando vetores e matrizes.
int VETOR[5];
// declara um vetor de inteiros, chamado VETOR, de 5 posições, tendo cada
elemento um inteiro de 4 bytes.
float V[30]; // declara um vetor chamado V de 30
reais de ponto flutuante (números com ponto decimal).
int MATRIZ[5][3]; // declara uma matriz de
inteiros, chamada MATRIZ, de 5 linhas e 3 colunas.
float M[4][4]; // // declara uma matriz de reais
em ponto flutuante, chamada M, de 4 linhas e 4 colunas.
Para aprender mais veja os links:
String
em C - vetor de caracteres
Bytes, Numeros e Caracteres
Exemplo1- Atribuição
de variáveis e constantes, impressão de resultados
#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"); // Caso necessário, de acordo
com seu ambiente de programação
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");
// Caso necessário, de acordo com seu ambiente de
programação
return 0;
}
10 Exemplos Básicos de Programas em C (Estude estes programas em C)
Estrutras lógicas em C -
A
Linguagem C (página da disciplina) Função de leitura scanf()
página 14
Função de escrita printf() páginas 9, 11, 12, 13
Estruturas lógicas em C páginas 15, 16, 17,
18, 19, 20
Ver as páginas 6 e 7 para os:
operadores aritméticos ( + - * / **, % ),
operadores lógicos ( &&, || , ! ),
operadores relacionais ( < , > , >= , <= , == , != )
TAREFA T4
- Implementar em Linguagem de progração os algoritmos T1a, T1b, T1c,
T2 e T3
========================================================================================================
AULA 5 (08-04-2019)
Exemplos de Algoritmos - Variáveis Indexadas
(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.
(d) Ordem Crescente e Decrescente.
TAREFA T5a -
Sequência de Fibonacci
Dada a sequência - 1 1 2 3 5 8 ... gerar o termo de ordem 29.
Estudar os algoritmos e implemntá-los em C:
TAREFA T5b - ORDEM CRESCENTE
Ordem Crescente
TAREFA T5c - ORDEN DECRESCENTE
Ordem Decrescente
TAREFA T5d - ORDEM ALFABETICA
Ordem Alfabetica
TAREFA T5e - Algoritmo - Funções time(), srandi(), rand() para Geração de Números Aleatórios
Implemente em C, um jogo de adivinhação, solicitando ao usuário um número até que o mesmo seja igual ao gerado randomicamente pelo sistema. A cada entrada do usuário, o sistema deve informar se o número é maior ou menor do que o “escolhido” pelo sistema. Estude o algoritmo seguinte e implemente em C
algoritmo "GERADOR DE ALEATÓRIOS - FUNÇÃO randi()"
var
n1: Inteiro
sort : Inteiro
inicio
// Seção de Comandos
escreval ("...........*** ..... SORTEIO .....*** ............")
escreval ("")
// SERÁ GERADO UM NÚMERO ALEATÓRIO ENTRE 0 E 20, E O RESULTADO É ATRIBUIDO à VARIAVEL sort
sort <- randi(20)
repita
escreva ("Digite o termo inicial: ")
leia (n1)
se(sort < n1) entao
escreval ("O número sorteado é menor")
senao
se (sort > n1) entao
escreval ("O número sorteado é maior")
fimse
fimse
ate (n1 = sort)
escreval (" ")
escreval (" ..\O/.. PARABÉNS, VOCÊ ACERTOU! ..\O/.. ")
fimalgoritmo
Para implementar em C, veja o exemplo de como gerar de numeros aleatóriosem
C. Abra o seguntie link :
Gerar Numeros Aleatorios em C
Implemente o algoritmo seguinte em C, usando as funções
time(),
srand(), rand() e aprende e teste a função getch().
=============================================================================================
AULA 6 (15-04-2019)
TAREFA
T6a - Temperaturas
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
Sugestão: Usar a função aleatória time(), srand(),
rand(), como na TAREFA T5e,
para gerar temperaturas aleatórias:
TAREFA T6b- Matricula de Aluno
Suponha que uma escola utilize, como código de matrícula, um número inteiro
no formato AASDDDD, 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.
========================================================================================================
AULA 7 (22-04-2019)
TAREFAS T7 -
Matrizes - Implementar os itens de (a) a
(d) em C.
(a) Lendo matriz.
(b) Escrevendo matriz.
(c) Operando uma linha da matriz.
(d) Operando uma coluna da matriz.
(c) Diagonal principal de matrizes quadradas.
(d) Diagonal secundária de matrizes quadradas.
(e) Gerando vetor-linha a partir de uma matriz.
(feito em aula)
(f) Gerando vetor-linha a partir de uma matriz.
====================================================================================================================
AULA 8 (29/04/2019)
TAREFA T8 - Prova 1
=======================================================================================================
AULA 9 (06/05/2018)
TAREFAS T9 -
Estudando o
comando Switch-Case em C. Você pode utilizá-lo no programa seguinte.
Dadas duas matrizes A(4,4) e B(4,4), calcular uma matriz C(4,4),
conforme a figura abaixo: (feito em aula)
========================================================================================================
AULA 10 (13/05/2019)
TAREFAS T10 (a) e (b)
(a) Multiplicação de matriz por vetor.
(Tarefa de sala de aula.)
(b) Multiplicação de matrizes.
Exemplo de algoritmo para multiplicação de matrizes
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
========================================================================================================
AULA 11 (20-05-2019)
TAREFA
T11 - 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:
========================================================================================================
AULA 12 (27-05-2019)
Funções Matemáticas
Funções em C
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.
O conteúdo seguinte poderá ser visto no link abaixo:
1. Funções definidas pelo programador (exemplos
no que segue)
2. Passagem por Valor
3. Escopo de Variáveis
4. Passagem por Referência
5. Ponteiros ou Apontadores
6. Erros comuns com funções
EXEMPLOS DE DECLARAÇÕES DE FUNÇÕES E SUAS CHAMADAS
Outros Exemplos
#include <stdio.h>
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);
}
======================= Outro Exemplo
==================================
#include
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;
}
========================================================================================================
AULA 13 (03-06-2019)
Funções e Passagem de Vetores (por nome e por referência)
Bibiliografia
1 Exemplo de Passagem de Vetor por Nome (testado)
#include <stdio.h>
void ZeraVet(float V[10], int qtd)
{
int i;
for(i=0;i<qtd;i++)
V[i] = 0.0;
}
int main()
{
int i;
float Vet[10];
ZeraVet(Vet,10); // Passa o
nome do vetor como parâmetro
for(i=0;i<10;i++)
printf("%d ", Vet[i]); // todos
os elementos terão valor 0, por causa do formato %d.
system("pause");
return 0;
}
2. Exemplo de Passagem de Vetor por Referência
(testado)
#include <stdio.h>
void ZeraVet2(float *V, int qtd)
{
int i;
for(i=0;i<qtd;i++)
V[i] = 0;
}
int main()
{
int i;
float Vet[10];
ZeraVet2(Vet,10); //
Passa o vetor como referência. Note que não
precisa o símbolo & antes do nome do vetor Vet.
for(i=0;i<10;i++)
printf("%f ",
Vet[i]); // todos os elementos terão valor 0.000000
system("pause");
return 0;
}
========================================================================================================
AULA 14 (10-06-2019)
Exemplo sobre Funções em C, com passagem por
valor
Programas para a Prova 2
(1) Integração + Geração de matriz
Programas para a Prova 2 (2) Passagem por Referência e Ponteiros
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.
Programa para calcular o quadrado de um número complexo dado:
/* Declarando a função */
void complexo2 (float *r, float *t)
{
float real;
real = (*r * *r) - (*t * *t);
*t = 2 * *r * *t;
*r = real;
}
/* Programa principal */
#include <stdio.h>
#include <stdlib.h>
/* definicao do prototipo da função declarada */
void complexo2 (float *r, float *t);
int main ()
{
float a, b;
printf ("Entre com um numero complexo (2 numeros inteiros): ");
scanf("%f %f", &a, &b);
complexo2 ( &a, &b);
printf("O quadrado do número complexo é %f + i %f\n", a, b);
system("pause");
return 0;
}
Para declarar uma variável do tipo ponteiro utilizamos a seguinte estrutura:
tipo *nome;
O asterisco ('*') é a indicação que a variável nome é um apontador, e o endereço apontado é interpretado como um valor do tipo tipo. Portanto, os parâmetros de entrada da função complexo2 são na verdade apontadores. O uso de variáveis de tipo apontador é bastante simples:
int x,y; /* duas variáveis inteiras */ int *px,*py; /* dois apontadores para inteiros */ x = 1; /* atribui à variável x o valor 1. */ y = 2; /* atribui à variável y o valor 2. */ px= &x; /* atribui ao apontador px o endereco da variavel x. */ py= &y; /* atribui ao apontador py o endereco da variavel y. */O significado das atribuições acima é o seguinte. O operador '&' é um operador unário (de dereferência) que retorna o endereço de seu operando. Assim, podemos manipular o endereço apontado por uma variável de tipo ponteiro.
Um outro operador importante é o operador '*' (operador unário de referência) que devolve o valor contido em uma posição de memória apontada por uma variável de tipo ponteiro.
Por exemplo:
int x,y; int *px,*py; x = 1; /* atribui à variável x o valor 1. */ y = 2; /* atribui à variável y o valor 2. */ px= &x; /* atribui ao ponteiro px o endereco da variavel x. */ py= &y; /* atribui ao ponteiro py o endereco da variavel y. */ printf("O endereco de x eh %d e o valor de x eh %d",px,*px);onde o *px significa, literalmente, o valor da posição de memória apontado por px.
void Troca(int *px, int *py); /* Prototipo. */ int main() { int x=4,y=7; /** Ao chamar a funcao passamos o endereco * das variaveis x e y como parametro. */ Troca(&x,&y); printf("Troca: x vale %d e y vale %d",x,y); Troca(&x,&y); printf("Destroca: x vale %d e y vale %d",x,y); system("pause"); return 0; } void Troca(int *px, int *py) /* Troca os valores das variaveis apontadas por px e py. */ { int n; n= *py; *py= *px; *px= n; }Ao examinarmos a função Troca, verificamos que houve manipulação nos valores das posições cujos endereços foram passados como parâmetro. Deste modo é que conseguimos implementar funções cuja ação é estendida a mais de uma variável (ou seja, retorna mais de um valor).
========================================================================================================
AULA 15 (17-06-2019)
Vamos ver mais um exemplo, usando agora a função Troca em um programa para ordenar 3 inteiros em ordem crescente, como abaixo:
#include <stdio.h> #include <stdlib.h> /* prototipo */ void Troca(int *px, int *py); int main () { int a, b, c; printf ("Digite 3 numeros inteiros: "); scanf("%d %d %d", &a, &b, &c); if (a > b) Troca (&a, &b); if (b > c) Troca (&b, &c); if (a > b) Troca (&a, &b); printf("Em ordem crescente: %d %d %d\n", a, b, c); system("pause"); return 0; }
Por exemplo, para a seqüência 3 2 1, teríamos:
a | b | c | |
início: | 3 | 2 | 1 |
1o if : | 2 | 3 | 1 |
2o if : | 2 | 1 | 3 |
3o if : | 1 | 2 | 3 |
e portanto a saída seria
Em ordem crescente: 1 2 3
======================================================================================================