Mudanças entre as edições de "PRG29002 - Programação I - Eng.Telecom 2019-2"
(38 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 57: | Linha 57: | ||
==07/08/2019: Lógica de Programação - Estruturas de Repetição== | ==07/08/2019: Lógica de Programação - Estruturas de Repetição== | ||
− | ==Objetivos== | + | ===Objetivos=== |
*Introdução a Fluxograma e pseudocódigo. | *Introdução a Fluxograma e pseudocódigo. | ||
*Estruturas de Decisão | *Estruturas de Decisão | ||
− | ==Material de Referência== | + | ===Material de Referência=== |
[[AULA 3 - Programação 1 - Engenharia | Lógica de Programação: Estruturas de Repetição]] | [[AULA 3 - Programação 1 - Engenharia | Lógica de Programação: Estruturas de Repetição]] | ||
Linha 68: | Linha 68: | ||
==08/08/2019: Lógica de Programação - Estruturas de Repetição (cont)== | ==08/08/2019: Lógica de Programação - Estruturas de Repetição (cont)== | ||
− | ==Objetivos== | + | ===Objetivos=== |
*Introdução a Fluxograma e pseudocódigo. | *Introdução a Fluxograma e pseudocódigo. | ||
Linha 92: | Linha 92: | ||
==Objetivos== | ==Objetivos== | ||
− | + | *descrever o processo de compilação; | |
− | + | *diferenciar código fonte, objeto e executável; | |
− | + | *compilar, executar pequenos programa em C usando o gcc; | |
− | + | *declarar e usar variáveis locais inteiras e reais; | |
− | + | *usar as funções de entrada e saída: ''scanf()'' e ''printf()''. | |
− | |||
− | |||
==Material de Referência== | ==Material de Referência== | ||
Linha 122: | Linha 120: | ||
==Objetivos== | ==Objetivos== | ||
− | + | *Utilizar os operadores relacionais e lógicos na programação C | |
− | + | *um pouco mais sobre variáveis: tipo char | |
− | + | *Utilizar o comando de decisão if else | |
− | + | *Utilizar o comando switch | |
− | |||
==Material e Referência== | ==Material e Referência== | ||
Linha 136: | Linha 133: | ||
==Objetivos== | ==Objetivos== | ||
− | + | *Utilizar os operadores relacionais e lógicos na programação C | |
− | + | *um pouco mais sobre variáveis: tipo char | |
− | + | *Utilizar o comando de decisão if else | |
− | + | *Utilizar o comando switch | |
− | |||
==Material e Referência== | ==Material e Referência== | ||
Linha 197: | Linha 193: | ||
==19/09/2019: Conceito de Funções e Parâmetros== | ==19/09/2019: Conceito de Funções e Parâmetros== | ||
− | ==25/09/2019: | + | ===Objetivos=== |
+ | *Funções e parâmetros | ||
+ | *Variáveis Locais e Globais | ||
+ | |||
+ | ===Material e Referência=== | ||
+ | [https://wiki.sj.ifsc.edu.br/index.php/AULA_8_-_Programa%C3%A7%C3%A3o_1_-_Engenharia Funções] | ||
+ | |||
+ | ==25/09/2019: Funções== | ||
+ | |||
+ | ===Objetivos=== | ||
+ | *Resoluções de exercícios sobre Funções. | ||
+ | |||
+ | ===Material e Referência=== | ||
+ | [https://wiki.sj.ifsc.edu.br/index.php/AULA_8_-_Programa%C3%A7%C3%A3o_1_-_Engenharia Funções] | ||
==26/09/2019: Vetores== | ==26/09/2019: Vetores== | ||
− | ==02/10/2019: Arranjos Multidimensionais== | + | ===Objetivos=== |
+ | *Compreender o conceito de vetores; | ||
+ | *Definir e inicializar vetores do tipo int, float e double no C; | ||
+ | *Passar vetores como parâmetro sem usar o conceito de ponteiros; | ||
+ | |||
+ | ===Material e Referência=== | ||
+ | [https://wiki.sj.ifsc.edu.br/index.php/AULA_9_-_Programa%C3%A7%C3%A3o_1_-_Engenharia Vetores] | ||
+ | |||
+ | ==02/10/2019: Arranjos Vetores (strings)== | ||
+ | |||
+ | ===Objetivos=== | ||
+ | *Vetores de char e strings; | ||
+ | *Processamento de Strings. | ||
+ | |||
+ | ===Material e Referência=== | ||
+ | [https://wiki.sj.ifsc.edu.br/index.php/AULA_10_-_Programação_1_-_Engenharia Strings] | ||
+ | |||
+ | ==03/10/2019: Vetores == | ||
+ | *Resolução de exercícios (1 - 11). | ||
+ | |||
+ | ==09/10/2019: Arranjos Multidimensionais == | ||
+ | |||
+ | ===Objetivos=== | ||
+ | *Definindo matrizes no C; | ||
+ | *Operações com matrizes e passagem de parâmetros tipo matriz; | ||
+ | *Matrizes com caracteres; | ||
+ | *Exercícios. | ||
+ | |||
+ | ===Material e Referência=== | ||
+ | [https://wiki.sj.ifsc.edu.br/index.php/AULA_12_-_Programa%C3%A7%C3%A3o_1_-_Engenharia Matrizes] | ||
+ | |||
+ | ==10/10/2019: Arranjos Multidimensionais == | ||
+ | |||
+ | ===Objetivos=== | ||
+ | *Matrizes com caracteres (strings); | ||
+ | *Exercícios. | ||
+ | |||
+ | ===Material e Referência=== | ||
+ | [https://wiki.sj.ifsc.edu.br/index.php/AULA_12_-_Programa%C3%A7%C3%A3o_1_-_Engenharia Matrizes] | ||
+ | |||
+ | ==16/10/2019: Resolução de Exercícios: vetores e matrizes== | ||
+ | |||
+ | ===Objetivos=== | ||
+ | *Resolução de [http://tele.sj.ifsc.edu.br/~tisemp/PRG/avaliacao_2.pdf Exercícios de preparação] | ||
+ | |||
+ | ===Questão 1=== | ||
+ | |||
+ | Implementar uma função C que recebe dois vetores de char como parâmetro. No primeiro vetor se encontra uma string qualquer. A função deve copiar esta string para o segundo vetor. A função deve retornar a quantidade de espaços em branco eliminados. Segue o esqueleto e uma saída para a situação colocada no main. | ||
+ | |||
+ | <syntaxhighlight lang=c> | ||
+ | #include <stdio.h> | ||
+ | int eliminar_espaco(char x[], char y[]) | ||
+ | { | ||
+ | } | ||
+ | |||
+ | main() | ||
+ | { | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | {{collapse top | solução}} | ||
+ | <syntaxhighlight lang=c> | ||
+ | //desenvolvido pelo aluno: Jeferson Jair (2019-1) | ||
+ | |||
+ | #include <stdio.h> | ||
+ | |||
+ | int contar_espaco(char x[], char y[]){ | ||
+ | |||
+ | int i, cont=0; | ||
+ | |||
+ | for(i=0; x[i]!=0 ;i++){ | ||
+ | y[i]=x[i]; | ||
+ | if(x[i]==' ') | ||
+ | cont++; | ||
+ | } | ||
+ | y[i++]=0; | ||
+ | return cont; | ||
+ | } | ||
+ | |||
+ | int main(){ | ||
+ | |||
+ | char a[40] = "Instituto Federal do Santa Catarina"; | ||
+ | char b[40]; | ||
+ | |||
+ | printf("String b = %s com um total de %d espaços\n", b, contar_espaco(a,b)); | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | solução}} | ||
+ | <syntaxhighlight lang=c> | ||
+ | #include <stdio.h> | ||
+ | |||
+ | int eliminar_espaco(char x[], char y[]) | ||
+ | { | ||
+ | int i, /* index do vetor fonte */ | ||
+ | j, /* index do vetor de destino */ | ||
+ | cont; | ||
+ | |||
+ | i=0; | ||
+ | j=0; | ||
+ | cont=0; | ||
+ | while(x[i]!='\0') { | ||
+ | if (x[i]==' ') { | ||
+ | cont++; /* contar ocorrências do espaço */ | ||
+ | } else { | ||
+ | y[j]=x[i]; /* copiar normalmente */ | ||
+ | j++; /* incrementar para avançar o index de y após a cópia */ | ||
+ | } | ||
+ | i++; /* sempre avançar o index de x */ | ||
+ | } | ||
+ | y[j]='\0'; | ||
+ | return cont; /* retornar a contagem de espaços */ | ||
+ | } | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | char vetor1[100]=" Instituto Federal de Santa Catarina ", | ||
+ | vetor2[100]; | ||
+ | |||
+ | int espacos; | ||
+ | |||
+ | espacos = eliminar_espaco(vetor1, vetor2); | ||
+ | |||
+ | printf("vetor final = %s - total espaços = %d\n", vetor2, espacos); | ||
+ | return 0; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | ===Questão 2=== | ||
+ | |||
+ | Implementar uma função que recebe um vetor de inteiros e sua dimensão como parâmetros. A função deve retornar a média de TODOS os números ímpares NÃO NEGATIVOS contidos no vetor. Uma demonstração do uso da função deve ser apresentado no programa principal (função main) usando variáveis inicializadas (NÃO USAR scanf) | ||
+ | |||
+ | {{collapse top | solução}} | ||
+ | <syntaxhighlight lang=c> | ||
+ | #include <stdio.h> | ||
+ | |||
+ | float media_num_impar(int x[], int len) | ||
+ | { | ||
+ | int i,soma,cont; | ||
+ | |||
+ | soma=0; | ||
+ | cont=0; | ||
+ | for (i=0;i<len;i++){ | ||
+ | if (x[i]>0 && x[i]%2==1) { | ||
+ | soma = soma + x[i]; | ||
+ | cont++; | ||
+ | } | ||
+ | } | ||
+ | return (float)soma/cont; /* aqui teria um problema de truncamento se não houver casting*/ | ||
+ | } | ||
+ | |||
+ | main() | ||
+ | { | ||
+ | int alfa[5]={-5,-3,7,10,11}; | ||
+ | float media; | ||
+ | |||
+ | media = media_num_impar(alfa, 5); | ||
+ | printf("media ímpares não negativos do vetor = %f\n", media); | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | ===Questão 3=== | ||
+ | |||
+ | Implementar uma função que recebe uma matriz de floats 5x5 como parâmetro. A função deve computar a média de todos os números que fazem parte de linhas PARES e colunas ÍMPARES (considerando sempre que a primeira linha é a 0 e a primeira coluna é 0). Uma demonstração do uso da função deve ser apresentado no programa principal (função main) usando variáveis inicializadas (NÃO USAR scanf) | ||
+ | |||
+ | {{collapse top|solução}} | ||
+ | <syntaxhighlight lang=c> | ||
+ | #include <stdio.h> | ||
+ | |||
+ | #define TAM 5 | ||
+ | |||
+ | float media_lin_col(float vet[TAM][TAM]) | ||
+ | { | ||
+ | int i,j; | ||
+ | float media_soma=0; | ||
+ | int cont=0; | ||
+ | |||
+ | for (i=0;i<TAM;i++) | ||
+ | for (j=0;j<TAM;j++) { | ||
+ | if((i%2==0)&&(j%2==1)) { | ||
+ | media_soma = media_soma + vet[i][j]; | ||
+ | cont++; | ||
+ | } | ||
+ | } | ||
+ | media_soma = media_soma/cont; | ||
+ | return media_soma; | ||
+ | } | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | float x[TAM][TAM] = { 1 ,2, 3, 4 ,5, | ||
+ | 1 ,2, 3, 4 ,5, | ||
+ | 1 ,2, 3, 4 ,5, | ||
+ | 1 ,2, 3, 4 ,5, | ||
+ | 1 ,2, 3, 4 ,5, | ||
+ | }; | ||
+ | |||
+ | float media; | ||
+ | |||
+ | media = media_lin_col(x); | ||
+ | printf("Média: %.2f\n", media); | ||
+ | return 0; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | ==17/10/2019: Exercícios de revisão== | ||
+ | |||
+ | ==23/10/2019: Estruturas== | ||
+ | |||
+ | ===Objetivos=== | ||
+ | *Definição de estruturas; | ||
+ | *Estruturas como parâmetros; | ||
+ | *Inicialização de estruturas; | ||
+ | *Cópia de estruturas; | ||
+ | *Exercícios com estruturas. | ||
+ | |||
+ | ===Material e Referência=== | ||
+ | [https://wiki.sj.ifsc.edu.br/index.php/AULA_13_-_Programa%C3%A7%C3%A3o_1_-_Engenharia Estruturas] | ||
+ | |||
+ | ==24/10/2019: Avaliação 2== | ||
+ | |||
+ | ==30/10/2019: Correção Avaliação 2== | ||
+ | *Vista de Prova: [http://tele.sj.ifsc.edu.br/~tisemp/PRG/avaliacao_2.pdf Avaliação 2] | ||
+ | |||
+ | {{collapse top | Exercício 1}} | ||
+ | <syntaxhighlight lang=c> | ||
+ | #include <stdio.h> | ||
+ | |||
+ | int str_copy_invert(char origem[], char destino[]){ | ||
+ | int i=0,j=0,tam=0; | ||
+ | |||
+ | while(origem[i]!=0){ | ||
+ | tam++; | ||
+ | i++; | ||
+ | } | ||
+ | |||
+ | for(i=(tam-1);i>=0;i--){ | ||
+ | destino[j] = origem[i]; | ||
+ | j++; | ||
+ | } | ||
+ | destino[j] = 0; | ||
+ | return tam; | ||
+ | } | ||
+ | |||
+ | int main(){ | ||
+ | char vet[10]="IFSC-SC", vet1[10]; | ||
+ | int contador; | ||
+ | |||
+ | contador=str_copy_invert(vet,vet1); | ||
+ | |||
+ | printf("A string invertida eh: %s e possui %d caracteres\n",vet1, contador); | ||
+ | return 0; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Exercício 2}} | ||
+ | <syntaxhighlight lang=c> | ||
+ | //Solução: Rhenzo Hideki | ||
+ | #include <stdio.h> | ||
+ | |||
+ | float func_media(int aux1[10]) | ||
+ | { | ||
+ | float media_local=0,j=0; | ||
+ | for (int i = 0; i < 10 ; i++) { | ||
+ | if (aux1[i] <= 26 && aux1[i] >= -5) { | ||
+ | media_local = aux1[i] + media_local; | ||
+ | j++; | ||
+ | } | ||
+ | } | ||
+ | return(media_local/j); | ||
+ | } | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | int vetor[10]={8,25,13,45,-15,-1,6,2,-19,70}; | ||
+ | float media; | ||
+ | |||
+ | media=func_media(vetor); | ||
+ | |||
+ | printf("A media do vetor dos valores entre -5 e 26 é: %f\n",media); | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Exercício 3}} | ||
+ | <syntaxhighlight lang=c> | ||
+ | //Solução: Vilian Nicoladeli | ||
+ | #include <stdio.h> | ||
+ | |||
+ | #define tam 4 | ||
+ | int linha = 0, coluna = 0; | ||
+ | |||
+ | int prod_matriz (int mat_copy [tam][tam]){ | ||
+ | |||
+ | int i = 0, j = 0, produto = 0; | ||
+ | |||
+ | for(i = 0; i < tam; i++) { | ||
+ | if(mat_copy [i] [1] == 0) | ||
+ | coluna++; | ||
+ | for (j = 0; j < tam; j++) { | ||
+ | if (mat_copy[i][j] == 0) | ||
+ | linha++; | ||
+ | } | ||
+ | } | ||
+ | linha = linha / tam; | ||
+ | coluna = coluna / tam; | ||
+ | produto = linha * coluna; | ||
− | + | return produto; | |
+ | } | ||
− | + | int main (){ | |
− | == | + | int mat [tam][tam] = {1, 0, 2, 3, |
+ | 4, 0, 5, 6, | ||
+ | 0, 0, 0, 0, | ||
+ | 0, 0, 0, 0}; | ||
+ | int produto = 0; | ||
− | = | + | produto = prod_matriz(mat); |
+ | printf("Produto de %d linhas nulas e %d colunas nulas é de: %d\n", linha, coluna, produto); | ||
+ | return 0; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
− | == | + | ==31/10/2019: Estruturas (cont')== |
− | == | + | ===Objetivos=== |
+ | *Definição de estruturas; | ||
+ | *Estruturas como parâmetros; | ||
+ | *Inicialização de estruturas; | ||
+ | *Cópia de estruturas; | ||
+ | *Exercícios com estruturas. | ||
− | == | + | ===Material e Referência=== |
+ | [https://wiki.sj.ifsc.edu.br/index.php/AULA_13_-_Programa%C3%A7%C3%A3o_1_-_Engenharia Estruturas] | ||
− | == | + | ==06/11/2019: Ponteiros== |
− | == | + | ===Objetivos=== |
+ | iniciação ao uso de ponteiros no C. | ||
− | == | + | ===Material e Referência=== |
+ | [https://wiki.sj.ifsc.edu.br/index.php/AULA_17_-_Programa%C3%A7%C3%A3o_1_-_Engenharia Ponteiros] | ||
− | ==06/11/2019: | + | ==06/11/2019: Apresentação do Projeto da Disciplina== |
− | == | + | ===Objetivos=== |
+ | *Exercícios Ponteiros em C. | ||
− | == | + | ===Material e Referência=== |
+ | [https://wiki.sj.ifsc.edu.br/index.php/AULA_17_-_Programa%C3%A7%C3%A3o_1_-_Engenharia Ponteiros] | ||
− | + | [https://wiki.sj.ifsc.edu.br/index.php/AULA_Proposta_de_Projetos_-_Programa%C3%A7%C3%A3o_1_-_Engenharia Proposta e Requisitos para os Projetos da Disciplina.] | |
− | ==21/11/2019: | + | ==13/11/2019: Vetor de Ponteiros== |
+ | |||
+ | ===Objetivos=== | ||
+ | *Vetor de ponteiros; | ||
+ | *argc e argv; | ||
+ | *ponteiros para qualquer coisa; | ||
+ | *ponteiros para estruturas. | ||
+ | |||
+ | ===Material e Referência=== | ||
+ | [https://wiki.sj.ifsc.edu.br/index.php/AULA_19_-_Programa%C3%A7%C3%A3o_1_-_Engenharia Vetor de Ponteiros e Ponteiro Para Estruturas.] | ||
+ | |||
+ | ==14/11/2019: Acesso ao Sistema de Arquivos - parte 1== | ||
+ | |||
+ | ==20/11/2019: Acesso ao Sistema de Arquivos - parte 2== | ||
+ | |||
+ | ==21/11/2019: '''AVALIAÇÃO 3'''== | ||
==27/11/2019: Desenvolvimento do Projeto== | ==27/11/2019: Desenvolvimento do Projeto== | ||
Linha 241: | Linha 599: | ||
==05/12/2019: ''Apresentação do Projeto''== | ==05/12/2019: ''Apresentação do Projeto''== | ||
− | ==11/12/2019: ''' | + | ==11/12/2019: Correção Avaliação 3== |
+ | *Vista de Prova: [http://tele.sj.ifsc.edu.br/~tisemp/PRG/avaliacao_3.pdf Avaliação 3] | ||
+ | |||
+ | {{collapse top | Exercício 1}} | ||
+ | <syntaxhighlight lang=c> | ||
+ | #include <stdio.h> | ||
+ | #include <stdlib.h> | ||
+ | |||
+ | void calculadora (float *num1, float *num2,char *op){ | ||
+ | float a1,a2; | ||
+ | char p; | ||
+ | |||
+ | p=*op; | ||
+ | a1=*num1; | ||
+ | a2=*num2; | ||
+ | |||
+ | switch (p) | ||
+ | { | ||
+ | case '+': | ||
+ | printf("resultado: %.2f ",(a1+a2)); | ||
+ | break; | ||
+ | |||
+ | case '-': | ||
+ | printf("resultado: %.2f ",(a1-a2)); | ||
+ | break; | ||
+ | |||
+ | case '*': | ||
+ | printf("resultado: %.2f ",(a1*a2)); | ||
+ | break; | ||
+ | |||
+ | case '/': | ||
+ | if (num2!=0){ | ||
+ | printf("resultado: %.2f ",(a1/a2)); | ||
+ | } else { | ||
+ | printf("Invalido \n"); | ||
+ | } | ||
+ | break; | ||
+ | |||
+ | default: | ||
+ | printf("Invalido \n"); | ||
+ | break; | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | void main (int argc,char *argv[4]){ | ||
+ | |||
+ | float num1 , num2; | ||
+ | |||
+ | num1=atof(argv[1]); | ||
+ | num2=atof(argv[3]); | ||
+ | |||
+ | calculadora(&num1,&num2,argv[2]); | ||
+ | } | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Exercício 2}} | ||
+ | <syntaxhighlight lang=c> | ||
+ | #include <stdio.h> | ||
+ | |||
+ | struct ret{ | ||
+ | float a; | ||
+ | float b; | ||
+ | }z1,z2,z3; | ||
+ | |||
+ | void soma( struct ret *a1,struct ret *a2, struct ret *a3) { | ||
+ | a3->a=a1->a+a2->a; | ||
+ | a3->b=a1->b+a2->b; | ||
+ | |||
+ | } | ||
+ | |||
+ | int main (){ | ||
+ | z1.a=1; | ||
+ | z1.b=5; | ||
+ | |||
+ | z2.a=1; | ||
+ | z2.b=2; | ||
+ | |||
+ | soma(&z1,&z2,&z3); | ||
+ | |||
+ | printf("Z3 = %.2f + j%.2f ",z3.a,z3.b); | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Exercício 3}} | ||
+ | <syntaxhighlight lang=c> | ||
+ | #include <stdio.h> | ||
+ | int str_copy(char *fonte, char *destino){ | ||
+ | int i=0,j=0; | ||
+ | while(fonte[i]!=0){ | ||
+ | if (fonte[i]>97&&fonte[i]<123) { | ||
+ | destino[i] = fonte[i] - 32; | ||
+ | } else{ | ||
+ | destino[i] = fonte[i]; | ||
+ | } | ||
+ | i++; | ||
+ | j++; | ||
+ | } | ||
+ | destino[j++]=0; | ||
+ | return i; | ||
+ | } | ||
+ | |||
+ | void main(){ | ||
+ | char alfa[10] = "ifsc-sje"; | ||
+ | char beta[10]; | ||
+ | int tamanho; | ||
+ | |||
+ | tamanho=str_copy(alfa,beta); | ||
+ | printf("tamanho:%d\nbeta:%s",tamanho,beta); | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
− | ==12/12/2019: | + | ==12/12/2019: Recuperações Finais== |
Edição atual tal como às 15h16min de 25 de julho de 2023
PROFESSOR
Professor: Tiago Semprebom
Email: tisemp@ifsc.edu.br
diretório web:: tele.sj.ifsc.edu.br/~tisemp
IMPORTANTE: o direito de recuperar uma avaliação em que se faltou somente existe mediante justificativa reconhecida pela coordenação. Assim, deve-se protocolar a justificativa no prazo de 48 horas, contando da data e horário da avaliação, e aguardar o parecer da coordenação. O não cumprimento desse procedimento implica a impossibilidade de fazer a recuperação, e assim a reprovação na disciplina.
ATENDIMENTO PARALELO
SEGUNDA: 17h:00 às 18h00 QUINTA: 14h:00 às 15h:00.
LOCAL: Sala 2 de Professores de Telecomunicações.
MONITORIA
- Aluno(a): Fulano de Tal
- e-mail: xxxxxxxxx@aluno.ifsc.edu.br
- Horários:
Segunda-feira: 13:30 - 15:30
Terça-feira: 13:30 - 16:30
Quarta-feira: 13:00 - 16:00
Quinta-feira: 16:00 - 17:30
Sexta-feira: 11:30 - 14:00
- Local de Atendimento: Sala de monitoria (ao lado do banheiro masculino do térreo).
Links Interessantes
- https://www.w3resource.com/c-programming-exercises
- Lógica de Programação, de Paulo Sérgio de Moraes
Aulas
31/07/2019: Introdução a algoritmos
Objetivos
- Apresentação do Plano de Ensino;
- Introdução a Fluxograma e pseudocódigo.
Material de Referência
Aula Introdutória sobre Lógica de Programação
01/08/2019: Lógica de Programação - Estruturas de Decisão
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
07/08/2019: Lógica de Programação - Estruturas de Repetição
Objetivos
- Introdução a Fluxograma e pseudocódigo.
- Estruturas de Decisão
Material de Referência
Lógica de Programação: Estruturas de Repetição
08/08/2019: Lógica de Programação - Estruturas de Repetição (cont)
Objetivos
- Introdução a Fluxograma e pseudocódigo.
- Estruturas de Decisão
Material de Referência
Lógica de Programação: Estruturas de Repetição
14/08/2019: Lógica de Programação - Estruturas de Repetição (cont)
Objetivos
- Estruturas de Decisão
- Resolução de Exercícios
Material de Referência
Lógica de Programação: Estruturas de Repetição
15/08/2019: Introdução a Programação C
Objetivos
- descrever o processo de compilação;
- diferenciar código fonte, objeto e executável;
- compilar, executar pequenos programa em C usando o gcc;
- declarar e usar variáveis locais inteiras e reais;
- usar as funções de entrada e saída: scanf() e printf().
Material de Referência
TAREFA
- Estudar AULA 2 e 3 de Apostila de C - UFMG
21/08/2019: Introdução a Linguagem C (exercícios)
Objetivos
Exercícios: Introdução a Linguagem C
Material e Referência
22/08/2019: Estruturas de Decisão
Objetivos
- Utilizar os operadores relacionais e lógicos na programação C
- um pouco mais sobre variáveis: tipo char
- Utilizar o comando de decisão if else
- Utilizar o comando switch
Material e Referência
28/08/2019: Estruturas de Decisão
Objetivos
- Utilizar os operadores relacionais e lógicos na programação C
- um pouco mais sobre variáveis: tipo char
- Utilizar o comando de decisão if else
- Utilizar o comando switch
Material e Referência
29/08/2019: Estruturas de Repetição
Objetivos
- Estruturas de Repetição
Material e Referência
04/09/2019: Estruturas de Repetição
Objetivos
- Estruturas de Repetição (continuação)
Material e Referência
05/09/2019: Estruturas de Repetição
Objetivos
- Estruturas de Repetição (resolução de exercícios)
Material e Referência
11/09/2019: Revisão para Avaliação
- Resolução de exercícios.
Material e Referência
12/09/2019: AVALIAÇÃO 1
18/09/2019: Vista de prova (Avaliação 1)
Objetivos
- Correção dos exercícios Avaliação 1;
- Uso de IDE (CLion).
Material e Referência
19/09/2019: Conceito de Funções e Parâmetros
Objetivos
- Funções e parâmetros
- Variáveis Locais e Globais
Material e Referência
25/09/2019: Funções
Objetivos
- Resoluções de exercícios sobre Funções.
Material e Referência
26/09/2019: Vetores
Objetivos
- Compreender o conceito de vetores;
- Definir e inicializar vetores do tipo int, float e double no C;
- Passar vetores como parâmetro sem usar o conceito de ponteiros;
Material e Referência
02/10/2019: Arranjos Vetores (strings)
Objetivos
- Vetores de char e strings;
- Processamento de Strings.
Material e Referência
03/10/2019: Vetores
- Resolução de exercícios (1 - 11).
09/10/2019: Arranjos Multidimensionais
Objetivos
- Definindo matrizes no C;
- Operações com matrizes e passagem de parâmetros tipo matriz;
- Matrizes com caracteres;
- Exercícios.
Material e Referência
10/10/2019: Arranjos Multidimensionais
Objetivos
- Matrizes com caracteres (strings);
- Exercícios.
Material e Referência
16/10/2019: Resolução de Exercícios: vetores e matrizes
Objetivos
- Resolução de Exercícios de preparação
Questão 1
Implementar uma função C que recebe dois vetores de char como parâmetro. No primeiro vetor se encontra uma string qualquer. A função deve copiar esta string para o segundo vetor. A função deve retornar a quantidade de espaços em branco eliminados. Segue o esqueleto e uma saída para a situação colocada no main.
#include <stdio.h>
int eliminar_espaco(char x[], char y[])
{
}
main()
{
}
solução |
---|
//desenvolvido pelo aluno: Jeferson Jair (2019-1)
#include <stdio.h>
int contar_espaco(char x[], char y[]){
int i, cont=0;
for(i=0; x[i]!=0 ;i++){
y[i]=x[i];
if(x[i]==' ')
cont++;
}
y[i++]=0;
return cont;
}
int main(){
char a[40] = "Instituto Federal do Santa Catarina";
char b[40];
printf("String b = %s com um total de %d espaços\n", b, contar_espaco(a,b));
return 0;
}
|
solução |
---|
#include <stdio.h>
int eliminar_espaco(char x[], char y[])
{
int i, /* index do vetor fonte */
j, /* index do vetor de destino */
cont;
i=0;
j=0;
cont=0;
while(x[i]!='\0') {
if (x[i]==' ') {
cont++; /* contar ocorrências do espaço */
} else {
y[j]=x[i]; /* copiar normalmente */
j++; /* incrementar para avançar o index de y após a cópia */
}
i++; /* sempre avançar o index de x */
}
y[j]='\0';
return cont; /* retornar a contagem de espaços */
}
int main()
{
char vetor1[100]=" Instituto Federal de Santa Catarina ",
vetor2[100];
int espacos;
espacos = eliminar_espaco(vetor1, vetor2);
printf("vetor final = %s - total espaços = %d\n", vetor2, espacos);
return 0;
}
|
Questão 2
Implementar uma função que recebe um vetor de inteiros e sua dimensão como parâmetros. A função deve retornar a média de TODOS os números ímpares NÃO NEGATIVOS contidos no vetor. Uma demonstração do uso da função deve ser apresentado no programa principal (função main) usando variáveis inicializadas (NÃO USAR scanf)
solução |
---|
#include <stdio.h>
float media_num_impar(int x[], int len)
{
int i,soma,cont;
soma=0;
cont=0;
for (i=0;i<len;i++){
if (x[i]>0 && x[i]%2==1) {
soma = soma + x[i];
cont++;
}
}
return (float)soma/cont; /* aqui teria um problema de truncamento se não houver casting*/
}
main()
{
int alfa[5]={-5,-3,7,10,11};
float media;
media = media_num_impar(alfa, 5);
printf("media ímpares não negativos do vetor = %f\n", media);
}
|
Questão 3
Implementar uma função que recebe uma matriz de floats 5x5 como parâmetro. A função deve computar a média de todos os números que fazem parte de linhas PARES e colunas ÍMPARES (considerando sempre que a primeira linha é a 0 e a primeira coluna é 0). Uma demonstração do uso da função deve ser apresentado no programa principal (função main) usando variáveis inicializadas (NÃO USAR scanf)
solução |
---|
#include <stdio.h>
#define TAM 5
float media_lin_col(float vet[TAM][TAM])
{
int i,j;
float media_soma=0;
int cont=0;
for (i=0;i<TAM;i++)
for (j=0;j<TAM;j++) {
if((i%2==0)&&(j%2==1)) {
media_soma = media_soma + vet[i][j];
cont++;
}
}
media_soma = media_soma/cont;
return media_soma;
}
int main()
{
float x[TAM][TAM] = { 1 ,2, 3, 4 ,5,
1 ,2, 3, 4 ,5,
1 ,2, 3, 4 ,5,
1 ,2, 3, 4 ,5,
1 ,2, 3, 4 ,5,
};
float media;
media = media_lin_col(x);
printf("Média: %.2f\n", media);
return 0;
}
|
17/10/2019: Exercícios de revisão
23/10/2019: Estruturas
Objetivos
- Definição de estruturas;
- Estruturas como parâmetros;
- Inicialização de estruturas;
- Cópia de estruturas;
- Exercícios com estruturas.
Material e Referência
24/10/2019: Avaliação 2
30/10/2019: Correção Avaliação 2
- Vista de Prova: Avaliação 2
Exercício 1 |
---|
#include <stdio.h>
int str_copy_invert(char origem[], char destino[]){
int i=0,j=0,tam=0;
while(origem[i]!=0){
tam++;
i++;
}
for(i=(tam-1);i>=0;i--){
destino[j] = origem[i];
j++;
}
destino[j] = 0;
return tam;
}
int main(){
char vet[10]="IFSC-SC", vet1[10];
int contador;
contador=str_copy_invert(vet,vet1);
printf("A string invertida eh: %s e possui %d caracteres\n",vet1, contador);
return 0;
}
|
Exercício 2 |
---|
//Solução: Rhenzo Hideki
#include <stdio.h>
float func_media(int aux1[10])
{
float media_local=0,j=0;
for (int i = 0; i < 10 ; i++) {
if (aux1[i] <= 26 && aux1[i] >= -5) {
media_local = aux1[i] + media_local;
j++;
}
}
return(media_local/j);
}
int main()
{
int vetor[10]={8,25,13,45,-15,-1,6,2,-19,70};
float media;
media=func_media(vetor);
printf("A media do vetor dos valores entre -5 e 26 é: %f\n",media);
return 0;
}
|
Exercício 3 |
---|
//Solução: Vilian Nicoladeli
#include <stdio.h>
#define tam 4
int linha = 0, coluna = 0;
int prod_matriz (int mat_copy [tam][tam]){
int i = 0, j = 0, produto = 0;
for(i = 0; i < tam; i++) {
if(mat_copy [i] [1] == 0)
coluna++;
for (j = 0; j < tam; j++) {
if (mat_copy[i][j] == 0)
linha++;
}
}
linha = linha / tam;
coluna = coluna / tam;
produto = linha * coluna;
return produto;
}
int main (){
int mat [tam][tam] = {1, 0, 2, 3,
4, 0, 5, 6,
0, 0, 0, 0,
0, 0, 0, 0};
int produto = 0;
produto = prod_matriz(mat);
printf("Produto de %d linhas nulas e %d colunas nulas é de: %d\n", linha, coluna, produto);
return 0;
}
|
31/10/2019: Estruturas (cont')
Objetivos
- Definição de estruturas;
- Estruturas como parâmetros;
- Inicialização de estruturas;
- Cópia de estruturas;
- Exercícios com estruturas.
Material e Referência
06/11/2019: Ponteiros
Objetivos
iniciação ao uso de ponteiros no C.
Material e Referência
06/11/2019: Apresentação do Projeto da Disciplina
Objetivos
- Exercícios Ponteiros em C.
Material e Referência
Proposta e Requisitos para os Projetos da Disciplina.
13/11/2019: Vetor de Ponteiros
Objetivos
- Vetor de ponteiros;
- argc e argv;
- ponteiros para qualquer coisa;
- ponteiros para estruturas.
Material e Referência
Vetor de Ponteiros e Ponteiro Para Estruturas.
14/11/2019: Acesso ao Sistema de Arquivos - parte 1
20/11/2019: Acesso ao Sistema de Arquivos - parte 2
21/11/2019: AVALIAÇÃO 3
27/11/2019: Desenvolvimento do Projeto
28/11/2019: Desenvolvimento do Projeto
04/12/2019: Apresentação do Projeto
05/12/2019: Apresentação do Projeto
11/12/2019: Correção Avaliação 3
- Vista de Prova: Avaliação 3
Exercício 1 |
---|
#include <stdio.h>
#include <stdlib.h>
void calculadora (float *num1, float *num2,char *op){
float a1,a2;
char p;
p=*op;
a1=*num1;
a2=*num2;
switch (p)
{
case '+':
printf("resultado: %.2f ",(a1+a2));
break;
case '-':
printf("resultado: %.2f ",(a1-a2));
break;
case '*':
printf("resultado: %.2f ",(a1*a2));
break;
case '/':
if (num2!=0){
printf("resultado: %.2f ",(a1/a2));
} else {
printf("Invalido \n");
}
break;
default:
printf("Invalido \n");
break;
}
}
void main (int argc,char *argv[4]){
float num1 , num2;
num1=atof(argv[1]);
num2=atof(argv[3]);
calculadora(&num1,&num2,argv[2]);
}
|
Exercício 2 |
---|
#include <stdio.h>
struct ret{
float a;
float b;
}z1,z2,z3;
void soma( struct ret *a1,struct ret *a2, struct ret *a3) {
a3->a=a1->a+a2->a;
a3->b=a1->b+a2->b;
}
int main (){
z1.a=1;
z1.b=5;
z2.a=1;
z2.b=2;
soma(&z1,&z2,&z3);
printf("Z3 = %.2f + j%.2f ",z3.a,z3.b);
}
|
Exercício 3 |
---|
#include <stdio.h>
int str_copy(char *fonte, char *destino){
int i=0,j=0;
while(fonte[i]!=0){
if (fonte[i]>97&&fonte[i]<123) {
destino[i] = fonte[i] - 32;
} else{
destino[i] = fonte[i];
}
i++;
j++;
}
destino[j++]=0;
return i;
}
void main(){
char alfa[10] = "ifsc-sje";
char beta[10];
int tamanho;
tamanho=str_copy(alfa,beta);
printf("tamanho:%d\nbeta:%s",tamanho,beta);
}
|