Mudanças entre as edições de "PRG29002-2020-2-Manha"
(27 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 8: | Linha 8: | ||
− | * | + | *TERÇA: 8h às 10h |
+ | *QUARTA: 13h30 às 15h30 | ||
=CONTEÚDO PROGRAMÁTICO= | =CONTEÚDO PROGRAMÁTICO= | ||
Linha 176: | Linha 177: | ||
*declarar e usar variáveis locais inteiras e reais; | *declarar e usar variáveis locais inteiras e reais; | ||
*usar de forma simplificada as funções de entrada e saída: scanf() e printf. | *usar de forma simplificada as funções de entrada e saída: scanf() e printf. | ||
+ | |||
+ | ==Exercício em Sala== | ||
+ | |||
+ | Implementar um programa C para resolver a expressão: <math>X=A*B+C*D*E+F^2</math>. Os valores de A,B,C,D e E são reais, e o valor de F é inteiro. Estes valores devem ser fornecidos como entrada do algoritmo mas você DEVE tentar usar o MENOR número possível de variáveis, ou seja, tente reaproveitar variáveis para armazenamento dos dados de entrada mantendo a coerência de tipos das variáveis. Você pode inclusive reaproveitar a variável usada para armazenar o valor de X. Imprima o valor de X no final do programa. | ||
==Material de Referência== | ==Material de Referência== | ||
*[https://wiki.sj.ifsc.edu.br/index.php/AULA_4_-_Programa%C3%A7%C3%A3o_1_-_Engenharia Aula de Introdução ao C] | *[https://wiki.sj.ifsc.edu.br/index.php/AULA_4_-_Programa%C3%A7%C3%A3o_1_-_Engenharia Aula de Introdução ao C] | ||
+ | |||
+ | |||
+ | =AULA 8 - Dia 4/12/2020= | ||
+ | |||
+ | Aula síncrona: meet.google.com/dtq-pdyr-iuv | ||
+ | |||
+ | ==Objetivos/Conteúdos== | ||
+ | |||
+ | Ao final deste tópico o aluno deverá: | ||
+ | |||
+ | *Utilizar os operadores relacionais e lógicos na programação C | ||
+ | *Conhecer um pouco mais sobre variáveis: tipo char; | ||
+ | *Utilizar o comando de decisão ''if else''; | ||
+ | *Utilizar comandos ''if else'' aninhados em pequenos programas C; | ||
+ | *Compreender e saber usar blocos (composição de instruções). | ||
+ | |||
+ | ==Material de Referência== | ||
+ | |||
+ | https://wiki.sj.ifsc.edu.br/index.php/AULA_5_-_Programa%C3%A7%C3%A3o_1_-_Engenharia | ||
+ | |||
+ | =AULA 9 - Dia 7/12/2020= | ||
+ | |||
+ | Aula síncrona: | ||
+ | |||
+ | ==Objetivos/Conteúdos== | ||
+ | |||
+ | Ao final deste tópico o aluno deverá: | ||
+ | |||
+ | |||
+ | *Conhecer um pouco mais sobre variáveis: tipo char; | ||
+ | *Utilizar comandos ''if else'' aninhados em pequenos programas C; | ||
+ | *Compreender e saber usar blocos (composição de instruções). | ||
+ | *Exercícios | ||
+ | |||
+ | ==Material de Referência== | ||
+ | |||
+ | https://wiki.sj.ifsc.edu.br/index.php/AULA_5_-_Programa%C3%A7%C3%A3o_1_-_Engenharia | ||
+ | |||
+ | =AULA 10 - Dia 11/12/2020= | ||
+ | |||
+ | Aula síncrona: | ||
+ | |||
+ | ==Objetivos/Conteúdos== | ||
+ | |||
+ | Ao final deste tópico o aluno deverá: | ||
+ | |||
+ | *conhecer a sintaxe e a semântica dos comandos de repetição do C: while, do while, for e goto. | ||
+ | *mapear estruturas simples de repetição especificadas em fluxogramas ou pseudo-código em estruturas em linguagem C. | ||
+ | |||
+ | ==Material de Referência== | ||
+ | |||
+ | https://wiki.sj.ifsc.edu.br/index.php/AULA_6_-_Programa%C3%A7%C3%A3o_1_-_Engenharia | ||
+ | |||
+ | =AULA 11 - Dia 14/12/2020= | ||
+ | |||
+ | Aula síncrona: | ||
+ | |||
+ | ==Objetivos/Conteúdos== | ||
+ | |||
+ | Ao final deste tópico o aluno deverá: | ||
+ | |||
+ | *conhecer a sintaxe e a semântica dos comandos de repetição do C: for e goto. | ||
+ | *mapear estruturas simples de repetição especificadas em fluxogramas ou pseudo-código em estruturas em linguagem C. | ||
+ | |||
+ | ==Material de Referência== | ||
+ | |||
+ | https://wiki.sj.ifsc.edu.br/index.php/AULA_6_-_Programa%C3%A7%C3%A3o_1_-_Engenharia | ||
+ | |||
+ | =AULA 12 - Dia 18/12/2020= | ||
+ | |||
+ | Aula síncrona: | ||
+ | |||
+ | ==Objetivos/Conteúdos== | ||
+ | |||
+ | Ao final deste tópico o aluno deverá: | ||
+ | |||
+ | *conhecer a sintaxe e a semântica dos comandos de repetição do C: goto. | ||
+ | *diferenciar os tipos int; | ||
+ | *mapear estruturas simples de repetição especificadas em fluxogramas ou pseudo-código em estruturas em linguagem C. | ||
+ | |||
+ | ==Material de Referência== | ||
+ | |||
+ | https://wiki.sj.ifsc.edu.br/index.php/AULA_6_-_Programa%C3%A7%C3%A3o_1_-_Engenharia | ||
+ | |||
+ | =AULA 13 - Dia 21/12/2020= | ||
+ | |||
+ | *Avaliação 1 | ||
+ | |||
+ | =AULA 14 - Dia 5/02/2021= | ||
+ | |||
+ | ==LINK PARA AULA SÍNCRONA== | ||
+ | |||
+ | Início previsto 8h. Estarei online a partir das 7h30. | ||
+ | |||
+ | https://conferenciaweb.rnp.br/webconf/programacao-1-engtelecom-ifsc-sao-jose | ||
+ | |||
+ | ==Objetivos== | ||
+ | |||
+ | Após esta aula o aluno deverá: | ||
+ | |||
+ | *Conceituar funções e parâmetros | ||
+ | *Explorar exemplo de menus e submenusfluxogramas ou pseudo-código em estruturas em linguagem C. | ||
+ | *Definir funções no C | ||
+ | |||
+ | ==LINK PARA AULA DA WIKI== | ||
+ | |||
+ | https://wiki.sj.ifsc.edu.br/index.php/Fun%C3%A7%C3%B5es_-_Programa%C3%A7%C3%A3o_1_-_Engenharia#FUN.C3.87.C3.95ES_no_C | ||
+ | |||
+ | =AULA 15 - Dia 8/02/2021= | ||
+ | |||
+ | ==LINK PARA AULA SÍNCRONA== | ||
+ | |||
+ | Início previsto 9h40. | ||
+ | |||
+ | https://conferenciaweb.rnp.br/webconf/programacao-1-engtelecom-ifsc-sao-jose | ||
+ | |||
+ | LINK PARA WIKI | ||
+ | https://wiki.sj.ifsc.edu.br/index.php/AULA_9_-_Programa%C3%A7%C3%A3o_1_-_Engenharia | ||
+ | |||
+ | ==Objetivos== | ||
+ | |||
+ | Após esta aula o aluno deverá: | ||
+ | |||
+ | |||
+ | *Revisão da aula anterior. | ||
+ | *Usar parâmetros e tipo de retorno | ||
+ | *Distinguir Variáveis locais x globais. | ||
+ | |||
+ | =AULA 16 - Dia 12/02/2021= | ||
+ | |||
+ | ==LINK PARA AULA SÍNCRONA== | ||
+ | |||
+ | https://conferenciaweb.rnp.br/webconf/programacao-1-engtelecom-ifsc-sao-jose | ||
+ | |||
+ | Início previsto 8h. | ||
+ | |||
+ | ==LINK PARA WIKI== | ||
+ | |||
+ | https://wiki.sj.ifsc.edu.br/index.php/AULA_9_-_Programa%C3%A7%C3%A3o_1_-_Engenharia | ||
+ | |||
+ | ==Objetivos== | ||
+ | |||
+ | Objetivos | ||
+ | O aluno deverá: | ||
+ | |||
+ | *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; | ||
+ | |||
+ | |||
+ | =AULA 17 - Dia 19/02/2021= | ||
+ | |||
+ | ==LINK PARA AULA SÍNCRONA== | ||
+ | |||
+ | https://conferenciaweb.rnp.br/webconf/programacao-1-engtelecom-ifsc-sao-jose | ||
+ | |||
+ | ==Link para Wiki desta Aula== | ||
+ | |||
+ | https://wiki.sj.ifsc.edu.br/index.php/AULA_10_-_Programa%C3%A7%C3%A3o_1_-_Engenharia | ||
+ | |||
+ | ==Objetivos== | ||
+ | |||
+ | Após esta aula o aluno deverá ser capaz de: | ||
+ | |||
+ | *Descrever como um caracter é representado no computador e como usar a tabela ASCII para verificar a representação de caracteres em binário, decimal; | ||
+ | *Reconhecer a utilidade de caracteres especiais tais como o NUL e o NEWLINE; | ||
+ | *Entender o que é uma string; | ||
+ | *Construir definições/declarações de vetores de char no C e iniciar estes vetores com strings; | ||
+ | *Construir código em C para processamento básico de strings armazenadas em vetores, usando indexação; | ||
+ | *Construir funções que recebem como parâmetro vetores de char e utilizar o passagem por referência (endereço); | ||
+ | |||
+ | =AULA 18 - Dia 22/02/2021= | ||
+ | |||
+ | ==LINK PARA AULA SÍNCRONA== | ||
+ | |||
+ | https://conferenciaweb.rnp.br/webconf/programacao-1-engtelecom-ifsc-sao-jose | ||
+ | |||
+ | ==Link para Wiki desta Aula== | ||
+ | |||
+ | https://wiki.sj.ifsc.edu.br/index.php/AULA_10_-_Programa%C3%A7%C3%A3o_1_-_Engenharia | ||
+ | |||
+ | ==Objetivos== | ||
+ | |||
+ | Após esta aula o aluno deverá ser capaz de: | ||
+ | |||
+ | *revisão da aula anterior; | ||
+ | *Construir funções que recebem como parâmetro vetores de char e utilizar o passagem por referência (endereço); | ||
+ | |||
+ | =AULA 19 - Dia 26/02/2021= | ||
+ | |||
+ | ==LINK PARA AULA SÍNCRONA== | ||
+ | |||
+ | https://conferenciaweb.rnp.br/webconf/programacao-1-engtelecom-ifsc-sao-jose | ||
+ | |||
+ | ==Link para Wiki desta Aula== | ||
+ | |||
+ | [https://wiki.sj.ifsc.edu.br/index.php/AULA_Exercicios_Strings_-_Programa%C3%A7%C3%A3o_1_-_Engenharia Funções da Biblioteca para Manipulação de strings] | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | =AULA 20 - Dia 01/03/2021= | ||
+ | |||
+ | ==LINK PARA AULA SÍNCRONA== | ||
+ | |||
+ | https://conferenciaweb.rnp.br/webconf/programacao-1-engtelecom-ifsc-sao-jose | ||
+ | |||
+ | ==Link para Wiki desta Aula== | ||
+ | |||
+ | https://wiki.sj.ifsc.edu.br/index.php/Programa%C3%A7%C3%A3o_1_-_Engenharia_-_Arrays_Multidimensionais | ||
+ | |||
+ | ==Objetivos da Aula== | ||
+ | |||
+ | *Definindo matrizes (arranjos multidomensionais) no C | ||
+ | *Funções com matrizes | ||
+ | *Exemplo: Batalha Naval | ||
+ | |||
+ | =AULA DIA 12/3/2021= | ||
+ | |||
+ | *Aula de Exercícios para prepação da avaliação II | ||
+ | |||
+ | ==Possíveis soluções tarefa 10== | ||
+ | |||
+ | ===Questão 1=== | ||
+ | |||
+ | ===Questão 1=== | ||
+ | |||
+ | <syntaxhighlight lang=c> | ||
+ | #include <stdio.h> | ||
+ | #include <string.h> | ||
+ | |||
+ | void str_cat(char str1[], char str2[]) | ||
+ | { | ||
+ | int final_string; | ||
+ | final_string = strlen(str1); | ||
+ | strcpy(&str1[final_string],str2); | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | char teste1[50]="alo", teste2[50]=" mundo"; | ||
+ | |||
+ | str_cat(teste1,teste2); | ||
+ | printf("%s\n", teste1); | ||
+ | str_cat(teste1," e alo Marte"); | ||
+ | printf("%s\n", teste1); | ||
+ | return 0; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ===Questão 2=== | ||
+ | |||
+ | <syntaxhighlight lang=c> | ||
+ | |||
+ | #include <stdio.h> | ||
+ | #define TAM_LINHA 5 | ||
+ | #define TAM_COL 5 | ||
+ | |||
+ | float media_linha(float mat[TAM_LINHA][TAM_COL], int i) | ||
+ | { | ||
+ | int k,j,cont=0; | ||
+ | float soma_ac=0, media_matriz, media_linha; | ||
+ | |||
+ | /* calculo media matriz */ | ||
+ | for(k=0;k<5;k++){ | ||
+ | for(j=0;j<5;j++) { | ||
+ | soma_ac = soma_ac + mat[k][j]; | ||
+ | } | ||
+ | } | ||
+ | media_matriz = soma_ac/(TAM_COL*TAM_LINHA); | ||
+ | printf("Valor da media é %f\n", media_matriz); | ||
+ | /* calculo media da linha dos elementos acima da media da matriz */ | ||
+ | soma_ac = 0; | ||
+ | for(k=0;k<5;k++){ | ||
+ | if (mat[i][k]>media_matriz) { | ||
+ | soma_ac = soma_ac + mat[i][j]; | ||
+ | cont++; | ||
+ | } | ||
+ | } | ||
+ | if (cont!=0) //Sugestão do aluno Lucas para contornar divisão por zero | ||
+ | media_linha = soma_ac/cont; | ||
+ | else { | ||
+ | printf("divisão por zero\n"); | ||
+ | media_linha = 0; // isto deveria estar no manual... | ||
+ | } | ||
+ | return media_linha; | ||
+ | /* */ | ||
+ | } | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | float x[5][5]= { | ||
+ | {4.5,6.7,8.0,11.3,4.3}, | ||
+ | {4.9,2.7,8.9,7.3,9.3}, | ||
+ | {2.5,6.7,2.9,3.3,4.3}, | ||
+ | {4.3,6.7,8.9,11.3,4.9}, | ||
+ | {1.5,6.7,2.5,11.3,4.3}, | ||
+ | }; | ||
+ | float med_linha; | ||
+ | med_linha = media_linha(x,3); | ||
+ | return 0; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | =AULA DIA 22/3/2021= | ||
+ | |||
+ | *Continuação de Estruturas - ver registro de aula no SIGAA | ||
+ | |||
+ | =AULA DIA 26/3/2021= | ||
+ | |||
+ | *Introdução a Ponteiros - Ver SIGAA | ||
+ | |||
+ | =AULA DIA 1/4/2021= | ||
+ | |||
+ | *Aula assíncrona | ||
+ | *Ponteiros para Estruturas e outros objetos. Ver SIGAA. | ||
+ | |||
+ | =AULA DIA 4/4/2021= | ||
+ | |||
+ | *Vetor de Ponteiros. Passagem de argumentos em linha de comando. Ver SIGAA. | ||
=SUPORTE DURANTE A SITUAÇÃO DE CRISE= | =SUPORTE DURANTE A SITUAÇÃO DE CRISE= |
Edição atual tal como às 17h49min de 4 de abril de 2021
PROFESSOR
- Eraldo Silveira e Silva
ATENDIMENTO PARALELO
- TERÇA: 8h às 10h
- QUARTA: 13h30 às 15h30
CONTEÚDO PROGRAMÁTICO
(copiado do SIGAA)
Conteudo Programático
PARTE 1 - Introdução a Lógica de Programação e a Programação C - 26H
- Conceito e representações de algoritmos: pseudocódigo e fluxograma
- Desenvolvimento de algoritmos simples usando fluxogramas e pseudocódigo
- Introdução a Programação C: ferramentas de desenvolvimento. Estrutura de programa. Entrada e saída de dados.
- Tipos de dados, constantes, variáveis e expressões. Operadores no C.
- Princípios de depuração de programas C e uso de IDE.
- Estruturas de controle de fluxo no C
PARTE 2 - 18H
- Funções no C. Biblioteca do C.
- Noções de programação estruturada e organização de programas com múltiplos arquivos.
- Arranjos unidimensionais de char, int e float/double.
- Strings e processamento de Strings.
- Arranjos multidimensionais
PARTE 3 - 18H
- Estruturas no C
- Ponteiros, aritmética de ponteiros e noções de alocação dinâmica
- Vetor de Ponteiros e Passagem de parâmetros em linha de comando
- Diretivas de pré-compilação e outros tópicos
- Operação com arquivos
PARTE 4 - 10H
- Desenvolvimento de Projeto (início previsto na PARTE 2)
Links Importantes
Bibliografia durante a pandemia
- As aulas da wiki em princípio, quando acompanhadas de aulas síncronas são suficientes;
- Existem materiais em protuguÊs de outras universidades:
- NÃO BAIXAR LIVROS DA INTERNET (a não ser livros abertos/gratuitos)!!!
Desenvolvimento das ANPs
- Dois encontros Síncronos semanais (1H cada encontro)
- Tarefa Semanal: Tarefa planejada para contemplar 4H de trabalho (2H equivalentes a sala de aula presencial e duas adicionais normalmente previstas)
- Observar que no estudo normal espera-se que além da sala de aula o aluno estude pelo menos 50% da carga sozinho....
AULA 1 - Dia 9/11/2020
Aula síncrona
Objetivos
- Apresentar o plano de ensino: ementa e conteúdo programático
- PARTE 1: Introdução a Lógica de Programação
- Conceito de Algoritmo e Representações de Algoritmos: Fluxograma, Pseudocódigo e através de linguagens computacionais.
- Construção de Fluxogramas e para problemas simples
- Noção de contantes, variáveis e expressões
Material de Referência
Aula Introdutória sobre Lógica de Programação
AULA 2 - Dia 13/11/2020
Aula síncrona: https://conferenciaweb.rnp.br/webconf/programacao-1-engtelecom-ifsc-sao-jose
Objetivos/Conteúdos
- PARTE 1: Introdução a Lógica de Programação
- Conceito de Algoritmo e Representações de Algoritmos: Fluxograma, Pseudocódigo e através de linguagens computacionais.
- Construção de Fluxogramas e Pseudcódigo para problemas simples
- Noção de constantes, variáveis e expressões
Material de Referência
Aula Introdutória sobre Lógica de Programação
AULA 3 - Dia 16/11/2020
Aula síncrona: https://conferenciaweb.rnp.br/webconf/programacao-1-engtelecom-ifsc-sao-jose
Objetivos/Conteúdos
- PARTE 1: Introdução a Lógica de Programação
- Noção de constantes, variáveis e expressões
- Estrutura de Decisão na Lógica de Programação
Material de Referência
Controle de Fluxo: Estrutura de Decisão
AULA 4 - Dia 20/11/2020
Aula síncrona: https://conferenciaweb.rnp.br/webconf/programacao-1-engtelecom-ifsc-sao-jose
Objetivos/Conteúdos
- PARTE 1: Introdução a Lógica de Programação
- Estruturas de Controle de Fluxo na Lógica de Programação
Material de Referência
https://wiki.sj.ifsc.edu.br/index.php/AULA_3_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
AULA 5 - Dia 23/11/2020
Aula síncrona: https://conferenciaweb.rnp.br/webconf/programacao-1-engtelecom-ifsc-sao-jose
Objetivos/Conteúdos
- PARTE 1: Introdução a Lógica de Programação
- Estruturas de Controle de Fluxo na Lógica de Programação
- (Continuação)
Material de Referência
https://wiki.sj.ifsc.edu.br/index.php/AULA_3_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
AULA 6 - Dia 27/11/2020
Aula síncrona: https://conferenciaweb.rnp.br/webconf/programacao-1-engtelecom-ifsc-sao-jose
Objetivos/Conteúdos
- PARTE 1: Introdução a Linguagem C
bjetivos
O aluno deverá ser capaz de:
- 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 de forma simplificada as funções de entrada e saída: scanf() e printf.
Material de Referência
AULA 7 - Dia 30/11/2020
Aula síncrona: https://conferenciaweb.rnp.br/webconf/programacao-1-engtelecom-ifsc-sao-jose
Objetivos/Conteúdos
- PARTE 1: Introdução a Linguagem C - Objetivos (continuação aula anterior)
O aluno deverá ser capaz de:
- compilar, executar pequenos programa em C usando o gcc;
- declarar e usar variáveis locais inteiras e reais;
- usar de forma simplificada as funções de entrada e saída: scanf() e printf.
Exercício em Sala
Implementar um programa C para resolver a expressão: . Os valores de A,B,C,D e E são reais, e o valor de F é inteiro. Estes valores devem ser fornecidos como entrada do algoritmo mas você DEVE tentar usar o MENOR número possível de variáveis, ou seja, tente reaproveitar variáveis para armazenamento dos dados de entrada mantendo a coerência de tipos das variáveis. Você pode inclusive reaproveitar a variável usada para armazenar o valor de X. Imprima o valor de X no final do programa.
Material de Referência
AULA 8 - Dia 4/12/2020
Aula síncrona: meet.google.com/dtq-pdyr-iuv
Objetivos/Conteúdos
Ao final deste tópico o aluno deverá:
- Utilizar os operadores relacionais e lógicos na programação C
- Conhecer um pouco mais sobre variáveis: tipo char;
- Utilizar o comando de decisão if else;
- Utilizar comandos if else aninhados em pequenos programas C;
- Compreender e saber usar blocos (composição de instruções).
Material de Referência
https://wiki.sj.ifsc.edu.br/index.php/AULA_5_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
AULA 9 - Dia 7/12/2020
Aula síncrona:
Objetivos/Conteúdos
Ao final deste tópico o aluno deverá:
- Conhecer um pouco mais sobre variáveis: tipo char;
- Utilizar comandos if else aninhados em pequenos programas C;
- Compreender e saber usar blocos (composição de instruções).
- Exercícios
Material de Referência
https://wiki.sj.ifsc.edu.br/index.php/AULA_5_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
AULA 10 - Dia 11/12/2020
Aula síncrona:
Objetivos/Conteúdos
Ao final deste tópico o aluno deverá:
- conhecer a sintaxe e a semântica dos comandos de repetição do C: while, do while, for e goto.
- mapear estruturas simples de repetição especificadas em fluxogramas ou pseudo-código em estruturas em linguagem C.
Material de Referência
https://wiki.sj.ifsc.edu.br/index.php/AULA_6_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
AULA 11 - Dia 14/12/2020
Aula síncrona:
Objetivos/Conteúdos
Ao final deste tópico o aluno deverá:
- conhecer a sintaxe e a semântica dos comandos de repetição do C: for e goto.
- mapear estruturas simples de repetição especificadas em fluxogramas ou pseudo-código em estruturas em linguagem C.
Material de Referência
https://wiki.sj.ifsc.edu.br/index.php/AULA_6_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
AULA 12 - Dia 18/12/2020
Aula síncrona:
Objetivos/Conteúdos
Ao final deste tópico o aluno deverá:
- conhecer a sintaxe e a semântica dos comandos de repetição do C: goto.
- diferenciar os tipos int;
- mapear estruturas simples de repetição especificadas em fluxogramas ou pseudo-código em estruturas em linguagem C.
Material de Referência
https://wiki.sj.ifsc.edu.br/index.php/AULA_6_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
AULA 13 - Dia 21/12/2020
- Avaliação 1
AULA 14 - Dia 5/02/2021
LINK PARA AULA SÍNCRONA
Início previsto 8h. Estarei online a partir das 7h30.
https://conferenciaweb.rnp.br/webconf/programacao-1-engtelecom-ifsc-sao-jose
Objetivos
Após esta aula o aluno deverá:
- Conceituar funções e parâmetros
- Explorar exemplo de menus e submenusfluxogramas ou pseudo-código em estruturas em linguagem C.
- Definir funções no C
LINK PARA AULA DA WIKI
AULA 15 - Dia 8/02/2021
LINK PARA AULA SÍNCRONA
Início previsto 9h40.
https://conferenciaweb.rnp.br/webconf/programacao-1-engtelecom-ifsc-sao-jose
LINK PARA WIKI https://wiki.sj.ifsc.edu.br/index.php/AULA_9_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
Objetivos
Após esta aula o aluno deverá:
- Revisão da aula anterior.
- Usar parâmetros e tipo de retorno
- Distinguir Variáveis locais x globais.
AULA 16 - Dia 12/02/2021
LINK PARA AULA SÍNCRONA
https://conferenciaweb.rnp.br/webconf/programacao-1-engtelecom-ifsc-sao-jose
Início previsto 8h.
LINK PARA WIKI
https://wiki.sj.ifsc.edu.br/index.php/AULA_9_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
Objetivos
Objetivos O aluno deverá:
- 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;
AULA 17 - Dia 19/02/2021
LINK PARA AULA SÍNCRONA
https://conferenciaweb.rnp.br/webconf/programacao-1-engtelecom-ifsc-sao-jose
Link para Wiki desta Aula
https://wiki.sj.ifsc.edu.br/index.php/AULA_10_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
Objetivos
Após esta aula o aluno deverá ser capaz de:
- Descrever como um caracter é representado no computador e como usar a tabela ASCII para verificar a representação de caracteres em binário, decimal;
- Reconhecer a utilidade de caracteres especiais tais como o NUL e o NEWLINE;
- Entender o que é uma string;
- Construir definições/declarações de vetores de char no C e iniciar estes vetores com strings;
- Construir código em C para processamento básico de strings armazenadas em vetores, usando indexação;
- Construir funções que recebem como parâmetro vetores de char e utilizar o passagem por referência (endereço);
AULA 18 - Dia 22/02/2021
LINK PARA AULA SÍNCRONA
https://conferenciaweb.rnp.br/webconf/programacao-1-engtelecom-ifsc-sao-jose
Link para Wiki desta Aula
https://wiki.sj.ifsc.edu.br/index.php/AULA_10_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
Objetivos
Após esta aula o aluno deverá ser capaz de:
- revisão da aula anterior;
- Construir funções que recebem como parâmetro vetores de char e utilizar o passagem por referência (endereço);
AULA 19 - Dia 26/02/2021
LINK PARA AULA SÍNCRONA
https://conferenciaweb.rnp.br/webconf/programacao-1-engtelecom-ifsc-sao-jose
Link para Wiki desta Aula
Funções da Biblioteca para Manipulação de strings
AULA 20 - Dia 01/03/2021
LINK PARA AULA SÍNCRONA
https://conferenciaweb.rnp.br/webconf/programacao-1-engtelecom-ifsc-sao-jose
Link para Wiki desta Aula
Objetivos da Aula
- Definindo matrizes (arranjos multidomensionais) no C
- Funções com matrizes
- Exemplo: Batalha Naval
AULA DIA 12/3/2021
- Aula de Exercícios para prepação da avaliação II
Possíveis soluções tarefa 10
Questão 1
Questão 1
#include <stdio.h>
#include <string.h>
void str_cat(char str1[], char str2[])
{
int final_string;
final_string = strlen(str1);
strcpy(&str1[final_string],str2);
return;
}
int main()
{
char teste1[50]="alo", teste2[50]=" mundo";
str_cat(teste1,teste2);
printf("%s\n", teste1);
str_cat(teste1," e alo Marte");
printf("%s\n", teste1);
return 0;
}
Questão 2
#include <stdio.h>
#define TAM_LINHA 5
#define TAM_COL 5
float media_linha(float mat[TAM_LINHA][TAM_COL], int i)
{
int k,j,cont=0;
float soma_ac=0, media_matriz, media_linha;
/* calculo media matriz */
for(k=0;k<5;k++){
for(j=0;j<5;j++) {
soma_ac = soma_ac + mat[k][j];
}
}
media_matriz = soma_ac/(TAM_COL*TAM_LINHA);
printf("Valor da media é %f\n", media_matriz);
/* calculo media da linha dos elementos acima da media da matriz */
soma_ac = 0;
for(k=0;k<5;k++){
if (mat[i][k]>media_matriz) {
soma_ac = soma_ac + mat[i][j];
cont++;
}
}
if (cont!=0) //Sugestão do aluno Lucas para contornar divisão por zero
media_linha = soma_ac/cont;
else {
printf("divisão por zero\n");
media_linha = 0; // isto deveria estar no manual...
}
return media_linha;
/* */
}
int main()
{
float x[5][5]= {
{4.5,6.7,8.0,11.3,4.3},
{4.9,2.7,8.9,7.3,9.3},
{2.5,6.7,2.9,3.3,4.3},
{4.3,6.7,8.9,11.3,4.9},
{1.5,6.7,2.5,11.3,4.3},
};
float med_linha;
med_linha = media_linha(x,3);
return 0;
}
AULA DIA 22/3/2021
- Continuação de Estruturas - ver registro de aula no SIGAA
AULA DIA 26/3/2021
- Introdução a Ponteiros - Ver SIGAA
AULA DIA 1/4/2021
- Aula assíncrona
- Ponteiros para Estruturas e outros objetos. Ver SIGAA.
AULA DIA 4/4/2021
- Vetor de Ponteiros. Passagem de argumentos em linha de comando. Ver SIGAA.
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 ou a mais recente. 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...