Mudanças entre as edições de "PRG29002 - Programação I - Eng.Telecom 2016-1"
Ir para navegação
Ir para pesquisar
Linha 77: | Linha 77: | ||
*[[Media:2.6 Programacao PRG29002 - Operadores e precedências.pdf|2.7: Operadores e precedências]] | *[[Media:2.6 Programacao PRG29002 - Operadores e precedências.pdf|2.7: Operadores e precedências]] | ||
*[[Media:2.8 Programacao PRG29002 - Exercicios Vetores.pdf|2.8 Exercicios Vetores]] | *[[Media:2.8 Programacao PRG29002 - Exercicios Vetores.pdf|2.8 Exercicios Vetores]] | ||
− | {{collapse top | Variáveis locais e Globais | + | {{collapse top | Variáveis locais e Globais}} |
*Se variáveis são declaradas dentro de uma função, então a visibilidade (ESCOPO) destas variáveis é LOCAL. Nenhuma outra função tem acesso a estas variáveis. Uma variável pode ser GLOBAL, ou seja, declarada FORA das funções. Neste caso a variável é VISTA por todas as funções. | *Se variáveis são declaradas dentro de uma função, então a visibilidade (ESCOPO) destas variáveis é LOCAL. Nenhuma outra função tem acesso a estas variáveis. Uma variável pode ser GLOBAL, ou seja, declarada FORA das funções. Neste caso a variável é VISTA por todas as funções. | ||
**Neste exemplo, a variável ''media'' é declarada como GLOBAL. Ela é MODIFICADA diretamente pela função ''media_nums()'' e impressa pela função ''main()'' | **Neste exemplo, a variável ''media'' é declarada como GLOBAL. Ela é MODIFICADA diretamente pela função ''media_nums()'' e impressa pela função ''main()'' | ||
Linha 133: | Linha 133: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
+ | {{collapse top | Gerando números pseudo-aleatórios}} | ||
*Computadores executam instruções, portanto, não são realmente capazes de criar números aleatoriamente. Porém existem artifícios de se criar números que variam conforme determinadas condições como sequencias variáveis associadas a data e hora atual por exemplo, a isso chamamos de números pseudo aleatórios. Para conseguir este recurso em C podemos utilizar a função rand() da stblib associada a função srand que configura uma semente de aleatoriedade a função rand, o resultado pode ser conferido no código a seguir: <syntaxhighlight lang=c> | *Computadores executam instruções, portanto, não são realmente capazes de criar números aleatoriamente. Porém existem artifícios de se criar números que variam conforme determinadas condições como sequencias variáveis associadas a data e hora atual por exemplo, a isso chamamos de números pseudo aleatórios. Para conseguir este recurso em C podemos utilizar a função rand() da stblib associada a função srand que configura uma semente de aleatoriedade a função rand, o resultado pode ser conferido no código a seguir: <syntaxhighlight lang=c> | ||
#include <stdlib.h> | #include <stdlib.h> | ||
Linha 155: | Linha 157: | ||
**Para representações de outros caracteres pode ser necessário acessar a extensão da tabela ASCII, podendo-se obter 'Ç' e caracteres acentuados | **Para representações de outros caracteres pode ser necessário acessar a extensão da tabela ASCII, podendo-se obter 'Ç' e caracteres acentuados | ||
**A tabela que está sendo apresentada esta em acordo com o padrão ISO 8859-1 e Microsoft® Windows Latin-1, outros caracteres podem ainda ser obtidos se alterado o padrão de codificação | **A tabela que está sendo apresentada esta em acordo com o padrão ISO 8859-1 e Microsoft® Windows Latin-1, outros caracteres podem ainda ser obtidos se alterado o padrão de codificação | ||
+ | {{collapse bottom}} | ||
+ | {{collapse top | Dicas para resolução dos exercícios da lista 7}} | ||
*Dicas para resolução dos exercícios da lista | *Dicas para resolução dos exercícios da lista | ||
*#Uma forma de resolver é criando dois vetores de inteiros (ex.: l1[26] e l2[26]). Então, recebidas as palavras 1 e 2, inicia-se a decomposição da palavra 1. Em um laço, para cada 'A' ou 'a' encontrado incrementamos uma vez o l1[0], para cada 'B' ou 'b' incrementamos l1[1] e assim por diante. O mesmo será feito com a palavra 2 em outro laço. Na prática, se a letra que está sendo analisada for maiúscula (pela tabela ASCII de 65 a 90, o índice de "lx" que deve ser incrementado é letra-65, e se form minúscula é letra-97). O resultado será dois vetores contendo a quantidade de vezes que a letra se repetiu. Um terceiro laço compara l1[0] com l2[0] e assim por diante. Havendo qualquer divergência, NÃO é um anagrama. Para simplificar solicite ao usuário para digitar palavras sem acentos (algoritmos com tratamento de palavras acentuadas terão bônus). | *#Uma forma de resolver é criando dois vetores de inteiros (ex.: l1[26] e l2[26]). Então, recebidas as palavras 1 e 2, inicia-se a decomposição da palavra 1. Em um laço, para cada 'A' ou 'a' encontrado incrementamos uma vez o l1[0], para cada 'B' ou 'b' incrementamos l1[1] e assim por diante. O mesmo será feito com a palavra 2 em outro laço. Na prática, se a letra que está sendo analisada for maiúscula (pela tabela ASCII de 65 a 90, o índice de "lx" que deve ser incrementado é letra-65, e se form minúscula é letra-97). O resultado será dois vetores contendo a quantidade de vezes que a letra se repetiu. Um terceiro laço compara l1[0] com l2[0] e assim por diante. Havendo qualquer divergência, NÃO é um anagrama. Para simplificar solicite ao usuário para digitar palavras sem acentos (algoritmos com tratamento de palavras acentuadas terão bônus). |
Edição das 17h26min de 1 de junho de 2016
Professor da Disciplina: Cleber Jorge Amaral
e-mail: cleber.amaral@ifsc.edu.br
Critérios e instrumentos de avaliação
- Conceito => Somatório(Nota)/QtNotas
- Esta é uma previsão, eventuais mudanças serão comunicadas no decorrer das atividades
- Nota[1]: Nota da Avaliação 1 (a definir data e formato)
- Nota[2]: Nota da Avaliação 2 (a definir data, formato e necessidade desta segunda avaliação)
- Nota[3]: Média das notas das Listas de exercícios
- Nota[4]: Nota do Projeto final
- Frequência
- Mínimo 75%
Datas importantes
- 13/04/2016
- Lista de exercícios 1: Entregar por e-mail ou manuscrito
- Desafio 1 (projeto de cafeteira): Entregar por e-mail ou manuscrito a Narrativa, Fluxograma e Pseudocódigo
- 20/04/2016
- Lista de exercícios 2: Entregar por e-mail (seguir instruções) ou manuscrito
- Lista de exercícios 3: Entregar por e-mail (seguir instruções) ou manuscrito
- O estudante deve entregar na forma de fluxograma cada desafio que resolvemos na aula de 13/04 na forma de pseudocódigo, e devem ser entregues na forma de pseudocódigo os fluxogramas que fizemos em sala -
- Os títulos dos algoritmos são citados na mídia 1.3 (link abaixo) mas os detalhes foram trabalhados em sala e fotografados pelos próprios alunos
- 27/04/2016
- Lista de exercícios 4: Entregar por e-mail (seguir instruções) ou manuscrito
- 11/05/2016
- Lista de exercícios 5: Entregar por e-mail (seguir instruções)
- 17/05/2016
- Prova 1: Algoritmos e lógica utilizando pseudocódigo e fluxogramas
- 25/05/2016
- Lista de exercícios 6: Entregar via moodle
- 28/05/2016
- Desafio 2 (jogo da velha): Entregar via moodle
- 22/06/2016
- Prova 2: Prática
Material de aula
Inauguração
- 0.0: Ementa da disciplina
- Ementa da disciplina na wiki: Engenharia de Telecomunicações 2ª Fase
Introdução aos Algoritmos e Pseudocódigo
- 1.0: Introdução aos algoritmos
- 1.1: Algoritmos continuação
- 1.2: Algoritmos - repetição e subrotinas
- 1.3: Algoritmos - fixação
- 1.4 Algoritmos - Preparação para avaliação
Programação em C
- 2.0: Introdução ao C
- 2.1: Introdução - continuação
- 2.2: Condicionais no C
- 2.3: Estruturas de repetição no C
- 2.4: Funções no C
- 2.5: Funçoes no C - continuação
- 2.6 Vetores em C
Exercicios complementares - Vetores |
---|
Exemplo: Para os vetores x[]={1,1,3,4,5} e y[]={1,2,3,3,5} temos três elementos iguais (nas posições 0, 2 e 4). |
Variáveis locais e Globais |
---|
|
Gerando números pseudo-aleatórios |
---|
|
Dicas para resolução dos exercícios da lista 7 |
---|
|
Referências importantes
Ferramentas úteis
- VisualG3: Uma IDE para desenvolvimento de programas em pseudocódigo (freeware), permite editar e compilar programas utilizando uma sintaxe própria de pseudocódigo muito parecida com a que trabalhamos em sala. Muito útil para verificar o funcionamento real dos algoritmos.
- LibreOffice: O LibreOffice é um programa gratuito (freeware) e de código aberto (opensource). Além de editor de textos, planilhas e apresentações tem a ferramenta Draw que permite a criação de fluxogramas.
- VirtualBox: O Oracle VirtualBox é um programa gratuito (freeware) que permite criar e instanciar máquinas virtuais. O uso de máquinas virtuais é bastante interessante quando desejamos ter diferentes sistemas operacionais em um computador bem como quando se está realizando ensaios e deseja-se isolar estes experimentos do sistema principal.
- Ubuntu: O Ubuntu é uma distribuição linux (freeware e opensource) bastante estável e com uma comunidade bastante ativa que está sempre atualizando o sistema e presente nos foruns e redes sociais para dirimir dúvidas.
- LinuxMint: O LinuxMint é uma distribuição linux (freeware e opensource) bastante estável e confortável aos usuários windows, pois traz um gerenciador de janelas configurado de uma forma mais natural para estes usuários e vem com um conjunto de programas pré-instalados que consegue atender a maior parte das demandas inicias.
Orientações para entrega dos trabalhos
- As listas podem ser entregues por email (para cleber.amaral@ifsc.edu.br) até a meia noite do prazo (ou manuscrito em sala caso especificado).
- Assunto do e-mail: "PRG29002 - xxx" onde xxx é "lista de exercicios 1", "desafio 1", etc.
- Nome do arquivo anexo: "seu nome completo/ demais colegas do grupo" - "lista de exercícios 1", "desafio 1", etc.
- Formato do arquivo em anexo: PDF (cada lista num único arquivo feito em editor de texto, exportado para PDF).
- Regra válida a partir de 14/04 (isento apenas trabalhos "lista 1")
- Para os trabalhos não entregues no prazo (não justificados) temos a penalidade de 1 ponto por dia de atraso
- Excepcionalmente para as lista1 e lista7 com até 6 dias de atraso terá desconto de 1 ponto apenas, seguindo a regra acima para entregas deste trabalho após este prazo
- Desafios não tem extensão de prazo, não adianta enviar se o prazo se esgotou
- Para o desafio1 o sistema de desconto por dia de atraso foi utilizado, este ficou como exceção
Eventos da área de desenvolvimento
- Maio de 2016 - Florianópolis TDC2016
- Outubro de 2016 - Rio de Janeiro QConRio2016
Horário de Monitoria
Sites úteis
- cplusplus.com: Traz tutoriais, artigos e descrições de funções C e C++
- codechef.com: Permite a edição, compilação e testes online de códigos em várias linguagens inclusive ANSI C
- codecademy.com: Tem cursos gratuitos de programação, bastante didáticos em inclusive em português. Porém não tem curso de C, uma alternativa interessante para quem quiser aprender uma outra linguagem que tem boa aceitação inclusive para desenvolvimento de sistemas embarcados é o Python
- kaggle.com: Site tem publicado centenas de algoritmos em diversas linguagens para resolver os mais variados problemas. Tem também competições de algoritmos
Turma Conceitos Numéricos
Conceitos Individuais - Avaliações principais
Matrícula | A1 |
151002039-0 | 6 |
152000674-8 | 0 |
151001400-4 | 0 |
152000542-3 | 8 |
152001576-3 | 9 |
151006902-0 | 3 |
151005163-5 | 10 |
151005591-6 | 4 |
151003419-6 | 0 |
152000616-0 | 0 |
152000226-2 | 8 |
152000502-4 | 4 |
152001502-0 | 5 |
151001656-2 | 4 |
152000293-9 | 7 |
152000120-7 | 6 |
152006025-4 | 8 |
152000331-5 | 5 |
Consolidação - Avaliações principais
Conceito | A1 |
10 | 5% |
9 | 5% |
8 | 16% |
7 | 5% |
6 | 11% |
<=5 / Ausentes | 55% |
Conceitos Individuais - Avaliações secundárias
Matrícula | L1 | D1 | L2 | L3 | L4 | L5 | T7 | T8 |
151002039-0 | 10 | 0 | 0 | 0 | 8 | 0 | ||
152000674-8 | 0 | 0 | 0 | 0 | 0 | 0 | ||
151001400-4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
152000542-3 | 10 | 0 | 8 | 10 | 10 | 9 | ||
152001576-3 | 6 | 0 | 3 | 0 | 9 | 10 | ||
151006902-0 | 0 | 10 | 0 | 0 | 0 | 0 | ||
151005163-5 | 0 | 0 | 0 | 0 | 0 | 0 | ||
151005591-6 | 10 | 0 | 9 | 9 | 0 | 0 | ||
151003419-6 | 8 | 0 | 3 | 10 | 6 | 0 | ||
152000616-0 | 10 | 0 | 0 | 0 | 8 | 0 | ||
152000226-2 | 6 | 10 | 0 | 0 | 0 | 0 | ||
152000502-4 | 10 | 10 | 7 | 4 | 9 | 5 | ||
152001502-0 | 10 | 0 | 10 | 10 | 8 | 8 | ||
151001656-2 | 10 | 10 | 6 | 9 | 9 | 9 | ||
152000293-9 | 10 | 0 | 4 | 0 | 9 | 10 | ||
152000120-7 | 10 | 0 | 7 | 10 | 9 | 4 | ||
152006025-4 | 10 | 0 | 5 | 10 | 7 | 0 | ||
152000331-5 | 8 | 0 | 3 | 9 | 10 | 10 |
Turma Conceitos por Letras
Conceitos Individuais - Avaliações principais
Matrícula | A1 |
142003344-1 | D |
141005012-2 | 0 |
142001814-0 | D |
142001213-4 | D |
142002143-5 | B |
142001834-5 | 0 |
142003393-0 | 0 |
142001425-0 | 0 |
132005743-8 | D |
121003322-4 | X |
Consolidação - Avaliações principais
Conceito | A1 |
A | 0% |
B | 10% |
C | 0% |
D | 40% |
Ausentes | 50% |
Conceitos Individuais - Avaliações secundárias
Matrícula | L1 | D1 | L2 | L3 | L4 | L5 | T7 | T8 |
142003344-1 | C | A | X | X | X | X | ||
141005012-2 | X | X | X | X | X | X | ||
142001814-0 | A | X | C | C | C | X | ||
142001213-4 | C | A | X | X | X | B | ||
142002143-5 | C | X | X | X | B | C | ||
142001834-5 | X | X | X | X | X | X | ||
142003393-0 | X | X | X | X | X | X | ||
142001425-0 | X | X | X | X | X | X | ||
132005743-8 | X | X | X | X | X | X | ||
121003322-4 | X | C | X | X | X | X |
Critério de conversão Numérico x Letra
- A: 9,0 a 10,0
- B: 7,5 a 8,9
- C: 6,0 a 7,4
- D: 0,0 a 5,9