Mudanças entre as edições de "PRG29002-2020-1-Manha"
Linha 643: | Linha 643: | ||
*Introdução Ponteiros no C | *Introdução Ponteiros no C | ||
+ | *Exercícios - Questionário A3.1 - SIGA A | ||
==Material de Referência== | ==Material de Referência== |
Edição das 15h23min de 14 de agosto de 2020
PROFESSOR
- Eraldo Silveira e Silva
ATENDIMENTO PARALELO
SEGUNDA: 14h30 às 15h30 QUARTA: 10h às 11h
LOCAL: Sala 1 de Professores de Telecomunicações ou em algum dos laboratórios de TELE/CAD
MONITORIA
- Aluna:
- Horários:
Links Interessantes
AULA 1 - Dia 11/02/2020
Objetivos
- Apresentar o plano de ensino
- Discutir a forma de avaliação
- Introdução a Lógica de Programação
Material de Referência
Aula Introdutória sobre Lógica de Programação
AULA 2 - 13/02/2012
Objetivos
- Introdução a Fluxograma e pseudocódigo.
- Estruturas de Decisão
Material de Referência
Lógica de Programação: Estruturas de Decisão
AULA 3 - 18/02/2020
Objetivos
- Floxograma: Estruturas de Repetição
Material de Referência
AULA 4 - 20/02/2020
Objetivos
- Exercícios de Lógica de Porogramação.
Exercício Proposto 1
- Faça um fluxograma para entrar com N números e com um número de referência (REF). Mostrar quantos números estão abaixo desta referência.
Exercício Proposto 2
- Faça um fluxograma para entrar com N números e com dois números de referência (REF1 e REF2). Mostrar a média dos números que estão entre estas referÊncias (inclusive). OBS: Considere que REF2 sempre será maior que REF1, para simplificar a solução. OBS2: LEMBRAR que não pode ser realizada uma divisão por ZERO. Proteger esta operação com uma estrutura de decisão.
Exercício Proposto 3
- Faça um fluxograma para calcular a média de uma prova realizada com N alunos. N será fornecido no início do algoritmo. Mostrar quantos alunos estão com nota acima de 6. Mostrar também quantos alunos precisam recuperar esta prova (abaixo ou igual a 5). OBS: Considere que as notas das provas são números inteiros de 0 a 10.
Exercício Proposto 4
- Modificar o exercício anterior para que seja também mostrada a maior nota da prova. SUGESTÂO: criar uma variável auxiliar MAIOR e iniciá-la com ZERO. Comparar cada nota com o valor desta variável. Se ela form maior, substituir o valor de MAIOR pela nota.
Material de Referência
AULA 5 27/02/2020
Objetivos
- Exercícios de Lógica de Programação.
Exercício Proposto 1
Faça um fluxograma para computar a média de números fornecidos como entrada. Caso o número fornecido seja ZERO o sistema deve fazer o cálculo da média, mostrá-la e encerrar.
Exercício Proposto 2
Modifique a solução para o exercício anterior de forma que o sistema ignore entradas que estejam na faixa OU . (recordar notação de intervalos aqui: https://www.infoescola.com/matematica/intervalo/)
Exercício Proposto 3
Considere um sistema de controle de acesso que abre uma porta através de uma senha alfanumérica. Ao ser ligado o sistema pergunta qual a senha desejada para ser utilizada. O usuário deve fornecer a senha que deseja usar e na sequência um código fornecido na caixa do produto, de forma a validar o processo. Se o código fornecido for errado então ele será perguntado novamente até que seja fornecido corretamente.
Na sequência, o sistema abre a porta normalmente para a senha colocada. Entretanto, se em algum momento o usuário errar por 3 vezes, o sistema é bloqueado fornecendo uma mensagem "ENTRE COM O CÒDIGO DO PRODUTO" para desbloquear, permanecendo no aguardo para o fornecimento deste código. . Se fornecido corretamente o sistema é desbloqueado e volta a funcionar normalmente, caso contrário volta a perguntar pelo CÓDIGO do produto.
Exercício Proposto 4
A fórmula de um termo de uma PG (progressão Geométrica) é dado por:
- ou
Sem usar fórmulas de SOMA de termos faça um fluxograma para calcular a média dos 10 primeiros termos, dado e . Supor que não são fornecidos "ZEROS" para estes valores.
Exercício Proposto 5
Flexibilize a solução do problema anterior para computar a média dos N primeiros termos, onde N é inicialmente fornecido.
Exercício Proposto 6
Elabore um fluxograma para receber como entrada dois números (suponha inteiro positivos). Computar o fatorial do maior número.
AULA 6 03/03/2020
Objetivos
- Introdução a Programação C
Material de Referência
https://wiki.sj.ifsc.edu.br/index.php/AULA_4_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
AULA 7 05/03/2020
Objetivos
- Introdução a Programação C
- Declaração de Variáveis
- Comandos de Decisão
Material de Referência
https://wiki.sj.ifsc.edu.br/index.php/AULA_4_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
https://wiki.sj.ifsc.edu.br/index.php/AULA_5_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
AULA 8 09/03/2020
Objetivos
- Introdução a Programação C
- Declaração de Variáveis
- Comandos de Decisão (continuação)
Material de Referência
https://wiki.sj.ifsc.edu.br/index.php/AULA_4_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
https://wiki.sj.ifsc.edu.br/index.php/AULA_5_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
AULA 9 12/03/2020
Objetivos
- Comandos de Decisão (continuação)
- variável tipo char e discussão sobre a sujeira do teclado
Material de Referência
https://wiki.sj.ifsc.edu.br/index.php/AULA_4_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
https://wiki.sj.ifsc.edu.br/index.php/AULA_5_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
AULA 11 26/03/2020
Objetivos
- Comandos de repetição while e do while
Material de Referência
https://wiki.sj.ifsc.edu.br/index.php/AULA_6_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
AULA 12 31/03/2020
Objetivos
- Comandos de repetição while e do while
- Comando for
Material de Referência
https://wiki.sj.ifsc.edu.br/index.php/AULA_6_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
AULA 13 2/04/2020
Objetivos
- Comando for
Material de Referência
https://wiki.sj.ifsc.edu.br/index.php/AULA_6_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
AULA VIRTUAL 14 7/04/2020
Objetivos
- Revisão de comandos de repetição
- Variações do exercício de sorteio do while()
- Exercícios 5 6 da wiki nível inicial
Material de Referência
https://wiki.sj.ifsc.edu.br/index.php/AULA_6_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
AULA VIRTUAL 14 7/04/2020
Objetivos
- Exercícios
Exercício para resolução em sala - Extra Wiki
- Exercícios 1 e 2 de nível médio da wiki: aula de comandos de repetição.
- Implemente um programa para geração de 6 números da megasena (de 1 a 60). Note que os números não podem se repetir.
Não usar vetor. Armazenar os valores gerados em variáveis de nome num1, num2,...num6. OBS: como ainda não aprendemos vetores teremos que a cada geração verificar se não coincide com o número anterior.Uma seugestão seria:
int main() {
int i,num1,num2,num3,num4,num5,num6;
/* gerar primeiro número e armazenar em num1 */
for (i=2;i<=6;i++) { /* gerar próximos 5 números */
switch (i) {
2: /*fazer um loop com do while ou while para gerar num2 confrontando com num1 */
break;
3: /*fazer um loop com do while ou while para gerar num3 confrontando com num1 e num2 */
: etc
}
}
}
AULA VIRTUAL 15 14/04/2020
Objetivos
- Funções
Material de Referência
AULA VIRTUAL 16 23/04/2020
Objetivos
- Explicação do Exercício
- Funções (continuação)
- Conceito de Função
- Como definir e declarar função;
- O papel da função em implementar sub-problemas
- Exercício
Material de Referência
- Explicação do Exercício 1 da Tarefa 4
- Explicação do Exercício 2 da Tarefa 4
- Vídeo da Aula da Manhã - O que é função no C
- Funções
AULA VIRTUAL (Esta aula não terá encontro síncrono) 28/04/2020
Objetivos
- Funções (continuação) - Ver os vídeos dos exercícios abaixo.
- Conceito de Função
- Como definir e declarar função;
AULA VIRTUAL 30/04/2020
Objetivos
- Continuação Funções
- Conceito de Variáveis Globais e Locais;
- Inicialização de Variáveis
- Exercícios
Material de Referência
AULA/reunião VIRTUAL 19/05/2020
Objetivos
- Discutir como encaminhar a matéria
Revisão da Matéria - até dia 29/05
- assistir vídeos/aulas wiki revisão - links a serem colocados como tarefas no siga a;
- assistir vídeos explicativos tarefa A1.1
- fazer dois exercícios a serem entregues dia 29/05
Instalação do CLion
semana que vem...
Revisão de Funções
semana que vem
AULA/reunião VIRTUAL 21/05/2020
Objetivos
- Revisão Comando if else: exercício Maior entre 3 números
- Resolução Exercício 1 da Tarefa A1.1
Comando if-else - Problema Maior
AULA VIRTUAL Síncrona 26/05/2020
Objetivos
- Revisão Comandos de Repetição
- Resolução Exercício 1 da Tarefa A1.2
Material de Referência
https://wiki.sj.ifsc.edu.br/index.php/AULA_6_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
AULA VIRTUAL Síncrona 2/06/2020
Objetivos
- Introdução a arrays unidimensionais no C
- Arrays de inteiros e de floats
- Exercício de ler 5 números e computar quantos estão acima da média.
Material de Referência
AULA VIRTUAL Síncrona 4/06/2020
Objetivos
- Introdução a arrays unidimensionais no C (Continuação)
- Arrays de inteiros e de floats
- Exercício de ler 5 números e computar quantos estão acima da média.
Exercício
Implementar uma função que recebe um vetor de float com tamanho 10 como parâmetro. A função deve retornar a média dos números armazenados no vetor. Teste a função no "main". Crie um vetor local inicializado.
Material de Referência
/*
Implementar uma função que recebe um
vetor de float com tamanho 10 como parâmetro.
A função deve retornar a média dos números positivos armazenados no vetor.
Teste a função no "main". Crie um vetor local inicializado.
Problema: divisão por zero...
*/
#include <stdio.h>
float calcular_media_positivos(float vetor[10])
{
int i,cont=0;
float soma_ac, media;
for(i=0;i<10;i=i+1){
if(vetor[i]>0) {
soma_ac = soma_ac + vetor[i];
cont = cont + 1;
}
}
media = soma_ac/cont;
return(media);
}
int main()
{
float alfa[10] = {3.5,2.7,9.7,8.5,2,9,4.7,3,2,3};
float beta[10] = {6.5,8.7,3.7,8.5,1,9,4.7,3,2,3};
float media_final;
media_final = (calcular_media_positivos(alfa) + calcular_media_positivos(beta))/2;
printf("media = %f\n", media_final);
}
AULA VIRTUAL Síncrona 9/06/2020
Objetivos
- Arrays unidimensionais no C (Continuação)
- Arrays de char e Strings NULL terminadas
Material de Referência
Exercício de Base da Aula
- Fazer um programa para computar o número de caracteres de uma cadeia (string) lida pelo teclado.Use o comando while;
- Fazer uma variação para um array iniciado;
- Fazer uma variação implementando uma função que retorna o número de caracteres.
AULA VIRTUAL Síncrona 16/06/2020
Objetivos
- Arrays de char e Strings NULL terminadas (Continuação)
Material de Referência
Exercício de Base da Aula
- Implementar um programa C para criar um array de char iniciado com um nome do time de futebol de sua preferência. O programa deve "printar" o nome do time, o número de caracteres do nome e o número de ocorrência de vogais.
- Implementar uma função para para capitalizar uma string inserida pelo teclado. A função deve retornar o número de caracteres que foram capitalizados.
- Implementar uma função para concatenar duas strings que estão armazenadas em dois vetores separados. Criar um terceiro vetor para comportar a concatenação.
AULA VIRTUAL Síncrona 18/06/2020
Objetivos
- Funções da Biblioteca para Operação com Strings
- Exercícios de Operação sobre strings
Exercícios 1 em Sala Virtual
Elaborar uma função C para computar o tamanho de uma string conforme esqueleto mostrado baixo.
#include <stdio.h>
int str_len(char str [])
{
//retorna o tamanho da string armazenada em str[]
}
int main()
{
char x[100] = "IFSC-";
char y[100] = "Telecom SJ";
int tam;
tam = str_len(x);
printf("x - > %s com tamanho %d\n", x, tam);
tam = str_len(y);
printf("y - > %s com tamanho %d\n", y, tam);
return 0;
}
Exercícios 2 em Sala Virtual
Construir um função para concatenar duas strings conforme esqueleto mostrado abaixo. A funçã deve retornar o tamanho total da string concatenada.
#include <stdio.h>
#include <string.h>
int str_cat(char str1 [],char str2 [])
{
//retorna o tamanho da string armazenada em str[]
}
int main()
{
char x[100] = "IFSC-";
char y[100] = "Telecom SJ";
int tam;
tam = str_cat(x,y);
printf("x - > %s com tamanho %d\n", x, tam);
return 0;
}
Material de Referência
AULA VIRTUAL Síncrona 23/06/2020
Objetivos
- Exercício de Comparação de Strings
- Introdução a arranjos multidimensionais no C
EXERCÍCIO DE COMPARAÇÃO ENTRE DUAS STRINGS
- Vídeo - Análise do Problema de Comparação de Strings
- Vídeo - Uma solução para o Problema de Comparação de Strings
Introdução a Arranjos Multidimensionais - Wiki desta aula
Exercício em Sala
- Implementar um programa para calcular a média de todos elementos da matriz C (exemplo inicial da wiki).
- Fazer uma função que recebe duas matrizes 2x3 como parâmetros e retorna a média entre todos elementos da matriz soma destas matrizes.
AULA VIRTUAL Síncrona 25/06/2020
Objetivos
- Exemplo Arranjo Multidimensional: Batalha Naval
- Arranjos Multidimensionais
AULA VIRTUAL Síncrona 2/07/2020
Objetivos
- Arranjo Multidimensional: Vetor de Strings
Referência para eta aula
Exercício em sala
Implementar um programa para "abrir uma porta" para um usuário que se encontra em uma tabela de usuários. Faça uma versão com (i) uma função implementada por você para comparar strings (ii) a função strcmp() da biblioteca
AULA VIRTUAL Síncrona 7/07/2020
Objetivos
- Arranjo Multidimensional: Exercício de Vetor de Strings
Exercício (ver Arranjos Multidimensionais)
- Implementar controle de acesso para múltiplos usuários e com senha associada a cada um deles.
- Implementar um contador de acesso para cada usuário.
AULA VIRTUAL Síncrona 9/07/2020
Objetivos
- Arranjo Multidimensional: Exercício de Vetor de Strings - (continuação)
Exercício (ver Arranjos Multidimensionais)
- Implementar controle de acesso para múltiplos usuários e com senha associada a cada um deles.
- Implementar um contador de acesso para cada usuário.
AULA VIRTUAL Síncrona 4/08/2020
Objetivos
- Estruturas: Parte 1
Referências
AULA VIRTUAL Síncrona 6/08/2020
Objetivos
- Estruturas: Parte 1
Referências
AULA VIRTUAL Síncrona 11/08/2020
Objetivos
- Exercícios sobre Estruturas- Questionário A3.1 - SIGA A
AULA VIRTUAL Síncrona 13/08/2020
Objetivos
- Introdução Ponteiros no C
- Exercícios - Questionário A3.1 - SIGA A
Material de Referência
https://wiki.sj.ifsc.edu.br/index.php/AULA_17_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
SUPORTE DURANTE A SITUAÇÂO DE CRISE
Instalando o Linux na VirtualBox
Conforme comentando em aula, o Linux pode ser instalado sobre uma máquina VIRTUAL em um sistema (hospedeiro) Windows ou Linux. Pode-se selecionar (ver condições de uso) uma distribuição gratuita do Linux e de uma Máquina Virtual. Ver abaixo procedimento para instalação. SEMPRE salve seus dados antes de qualquer operação sobre o sistema Windows ou Linux ou MacOS. NÃO recomendo DUAL BOOT pois pode (ainda que com baixa probabilidade) danificar o sistema hospedeiro.
- Fazer Download do arquivo ISO em [2] versão Ubuntu 18.04.3 LTS. Escolher a opção Desktop. Confira se o seu PC é 64 bits (os mais novos são).
- Instalar a VirtualBox (já está instalada no nosso Lab). Baixar de [3] e selecionar para a máquina hospedeira alvo. Selecione o sistema hospedeiro (o seu sistema) correto.
- O procedimento abaixo é para instalação de uma máquina virtual sobre o hospedeiro Linux Ubuntu mas para o Windows é bastante similar. Se tiver dúvidas pesquise no google como fazer a instalação sobre o Windows. Note que o VirtualBox é instalado como aplicativo tanto no Windows como Ubuntu.
Caso a distribuição que tenha instalado não possua o GCC, pode instalá-lo usando na linha de comando (para a familília Debian/Ubuntu):
$ sudo apt install g++
Note que $ é o prompt (não faz parte do comando).
Compilador C no Android
Eu instalei e testei sem problemas (mas não posso garantir nada)) no meu Android, o compilador C "Coding C" (a partir do Play Store). Para testar pequenos programas pode ser uma solução interessante. Ele permite compilar offline, ou seja, não precisa usar a rede.
DevC++ no Windows
Como comentei em aula, em situação normal não recomendo usar um compilador C sobre o Windows diretamente. Como estamos em situação emergencial, uma opção seria instalar o DevC++diretamente no Ubuntu.
Vi um tutorial em : http://linguagemc.com.br/tutorial-de-instalacao-do-dev-c/ Não testei...