Mudanças entre as edições de "PRG29002 - Programação I - Eng.Telecom 2016-2"
Linha 328: | Linha 328: | ||
**O uso de nomes auto-explicativos facilita a compreensão e manutencão futura | **O uso de nomes auto-explicativos facilita a compreensão e manutencão futura | ||
**É comum variar maiúsculas e minúsculas para facilitar a leitura como “QtMedidas”, “ValorMedio” | **É comum variar maiúsculas e minúsculas para facilitar a leitura como “QtMedidas”, “ValorMedio” | ||
+ | |||
+ | *Variáveis | ||
+ | *Por uma questão de eficiência de uso de memória e processamento o C possui diversos tipos de variáveis, vamos agora trabalhar com alguns deles que servirão para praticamente todas as nossas necessidades | ||
+ | **char: ocupa 1 byte na memória e varia de -127 a +127 | ||
+ | **int: ocupa 4 bytes e varia de -2.147.483.648 a +2.147.483.647 | ||
+ | **double: ocupa 8 bytes e possui dez dígitos de precisão | ||
+ | **char[]: esta é o mesmo char descrito acima mas aqui simbolizando uma cadeia/vetor de caracteres (string) | ||
+ | **Apenas para conhecimento neste momento, há outros tipos como short, float e long double e os tipos que não são de precisão podem ainda ser signed ou unsigned | ||
+ | |||
+ | #Crie o arquivo através do pico “nome do arquivo.c”<code> | ||
+ | ~/ExerciciosC$ pico UsaVariavel.c | ||
+ | </syntaxhighlight> | ||
+ | #Digite dentro do arquivo em brando criado o seguinte código:<syntaxhighlight lang=c> | ||
+ | #include <stdio.h> | ||
+ | main() | ||
+ | { | ||
+ | int x; /* declaração de uma variável inteira */ | ||
+ | x=5;/* atribuindo o valor 5 (constante) a variável x */ | ||
+ | printf ("O valor de x é %d\n",x); | ||
+ | }</syntaxhighlight> | ||
+ | #Compile e execute | ||
+ | |||
+ | *Continuação da teoria | ||
+ | **C é uma linguagem “compilada”, ou seja, de um código fonte (escrito em C) são gerados códigos de máquina formando um ou mais arquivos executáveis e inteligíveis apenas para o computador | ||
+ | **Há diversos compiladores e estes podem ter algumas diferenças de comportamento e aceitarem diferentes parametrizações | ||
+ | **Um código é compilado para um sistema operacional específico e uma arquitetura de processador, portanto, um código compilado para um S.O. não tem qualquer garantia de funcionamento em outros sistemas. Da mesma forma um código que roda em um PC, não tem qualquer garantia de rodar em outras arquiteturas diversas | ||
+ | **Em oposição ao código compilado temos o código interpretado | ||
+ | **Sempre que um código fonte é modificado se faz necessário nova compilação para que as modificações façam efeito na execução | ||
+ | **As variáveis que serão utilizadas pelo programa devem ser listadas antecipadamente | ||
+ | **A linguagem C tem um conjunto de palavras reservadas, que não podem ser utilizadas para outro propósito se não o que está definido na estrutura da linguagem | ||
+ | ***Exemplos: break, case, if, for, while, return,... | ||
+ | **O C permite que trabalhemos com bibliotecas (lib) que são conjuntos de funções que realizam certas tarefas | ||
+ | **Além de podermos criar nossas próprias bibliotecas com funções úteis que podemos reutilizar em vários programas, também podemos nos apropriar de diversas libs já desenvolvidas, sejam padrão ANSI (libc) ou não, desta forma não precisamos “reinventar a roda” e já sair de largada com várias funcionalidades | ||
+ | ***Exemplos: <stdio.h>, <math.h>, <complex.h>, <float.h>, <string.h>, etc. (são 24 padrão ANSI no total) | ||
+ | |||
+ | *Entendendo a compilação | ||
+ | **Edição: atividade feita pelo programador | ||
+ | **Preprocessamento: compilador processa o código e ignorando comentários, fazendo associações de constantes e controle de código através de diretivas especiais de compilação | ||
+ | **Compilação: criação do código-objeto, é a tradução da linguagem C em linguagem de máquina | ||
+ | **Linkagem: associação de diferentes código-objeto e bibliotecas | ||
+ | **Carregamento: carrega o programa em memória | ||
+ | **Execução: cpu realiza a execução das instruções passo a passo, armazenando os resultados em memórias definidas pelo programa e pilhas de dados para controle | ||
+ | |||
+ | *Comentários | ||
+ | **Como vimos podemos incluir no programa fonte textos livres que ajudam na compreensão do código | ||
+ | **Os comentários são ignorados pelo compilador, não se tornam código de máquina | ||
+ | **Para incluir comentários inicie com /* digitando então o comentário aqui e terminando com */ | ||
+ | ***Este formato permite que digitemos varias linhas de comentários, normalmente é utilizado para textos mais extensos | ||
+ | **A maioria dos compiladores também aceita o formado //comentário, que serve para incluir um comentário de apenas uma linha, apenas os caracteres depois do // serão ignorados e neste caso o terminador é o sinal de nova linha que normalmente está oculto | ||
+ | |||
+ | *Operadores aritméticos | ||
+ | **“+” adição | ||
+ | **“-” subtração | ||
+ | **“*” multiplicação | ||
+ | **“/” divisão | ||
+ | **“%” resto da divisão | ||
+ | *Por padrão, multiplicações e divisões são operadas antes de somas e subtrações | ||
+ | *Devemos utilizar parênteses para agrupar operações e definir a sequencia mais adequada. O compilador vai sempre resolver o que está dentro dos parênteses primeiro, de “dentro para fora” quando houver mais de um nível | ||
+ | **Exemplos | ||
+ | ***1+2*3 = 7 é o mesmo que 1+(2*3) | ||
+ | ***(1+2)*3 = 9 | ||
+ | ***1+2*3+4*5 = 27 é o mesmo que 1+(2*3)+(4*5) | ||
+ | ***(((1+2)*3)+4)*5 = 65 | ||
+ | |||
+ | *Escrevendo mensagens na tela | ||
+ | **A função printf da lib stdio é bastante completa para esta tarefa, permite escrever mensagens com múltiplos argumentos. | ||
+ | **Formato printf (“string de controle”, lista de argumentos); | ||
+ | **Exemplo: | ||
+ | ***printf(“Olá Mundo!\n”); | ||
+ | ***printf(“Digite sua idade:\n”); | ||
+ | ***printf(“Sua idade é: %d”,idade); | ||
*Atividade | *Atividade |
Edição das 10h26min de 10 de outubro de 2016
Professor da Disciplina: Cleber Jorge Amaral
e-mail: cleber.amaral@ifsc.edu.br
Monitoria: Programa_de_monitoria_dos_cursos_superiores_de_Telecomunicações
Ementa de PRG29002
- Ementa da disciplina na wiki: Engenharia de Telecomunicações 2ª Fase
Critérios e instrumentos de avaliação
- Conceitos numéricos entre 0 e 10. 0 é reservado para alunos com frequência insuficiente
- N1 = Prova teórica sobre pseudocodigo e fluxograma (sem apoio de computador)
- N2 = Prova prática sobre C
- N3 = Apresentação de projeto de desenvolvimento em C (Avaliação do projeto = 30% e da performance do aluno na apresentação = 70%)
- Recuperação realizada após cada prova e do trabalho uma reapresentação que valerá no máximo conceito 7.
- Média = (N1+N2+N3)/3
- Ter 75% de frequência.
Datas importantes
- 19/09 - Prova 1: Lógica de algoritmos em fluxograma e pseudocódigo
- Possivel recuperação da p1 a marcar
- 21/11 - Prova 2: Prática em linguagem C
- Possivel recuperação da p2 a marcar
- 12/12 e 16/12 - Apresentação do projeto final
- 19/12 - Possivel recuperação do projeto final
Eventos da área de desenvolvimento
- Outubro de 2016 - QCon Rio de Janeiro QConRio
- Outubro de 2016 - The Developers Conference Porto Alegre TDC
- Março de 2017 (previsto) - Arduino Day São Paulo ArduinoDay
- Abril de 2017 - Qcon São Paulo QConSP
- Maio de 2017 (previsto) - The Developers Conference Florianópolis TDC
- Junho de 2017 (previsto) - JavaOne São Paulo JavaOne
- Julho de 2017 (previsto)- The Developers Conference São Paulo TDC
Material de aula
Diário de aula
Introdução aos algoritmos utilizando fluxograma
Aula inaugural e introdução aos algoritmos |
---|
|
Algoritmos - fluxogramas |
---|
- - - - - - - - - - - - - - - - - - - - - - - Estado atual das chaves: R1 = Emprestada (João) R2 = Disponível CAD2 = Emprestada (Pedro) CAD3 = Disponível - - - - - - - - - - - - - - - - - - - - - - - 1: pegar/devolver uma chave 2: cadastro de chaves 3: cadastro de pessoas 4: ver histórico de empréstimos 5: sair do programa Digite a opção ______
Digite sua identificação: ___ Digite o nome da chave a pegar ou devolver: ____
As chaves atualmente cadastradas são: R1, R2, CAD2, CAD3 Digite um nome existente para deletar ou um novo nome para criar uma nova: ____
|
Fluxogramas |
---|
|
Pseudo-código
Pseudo-código utilizando Portugol - repetições |
---|
Exercícios - série 1
|
Pseudo-código utilizando Portugol - sub-rotinas e registros |
---|
Exercícios
Parte da implementação do problema das funções trigonométricas
|
C
Introdução ao C
Introdução ao C e funções de saída e entrada de dados |
---|
|
Controle de fluxo em C
Condicionais em C |
---|
|
Estruturas de repetição em C |
---|
|
Referências
Referências bibliográficas
- Araújo, Everton Coimbra de. Algoritmos: fundamento e prática; 3ª ed. [S.l]:Visual Books, 2007. 414p. ISBN 9788575022092.
- KERNIGHAN, Brian W.; RITCHIE, Dennis M C: a linguagem de programação padrão ANSI; 1ª ed.[S.l]:Campus, 1989. 304p. ISBN 9788570015860.
- SCHILDT, Herbert C Completo e Total; 3ª ed. [S.l]:Makron Books, 2009. 827p. ISBN 9788534605953.
- FORBELLONE, Andre L. Lógica de Programação; 3ª ed. [S.l]:Makron Books, 2005. 197p. ISBN 9788576050247.
- KING, K.N. C Programming: A Modern Approach; 2ª ed. [S.l]:W. W. Norton & Company, 2008. 832p. ISBN 9780393979503.
- MANZANO, Jose Augusto Navarro Garcia Estudo Dirigido em Linguagem C. ; 16ª ed. [S.l]:Erica, 2012. 216p. ISBN 9788571948877.
- NEVES, Júlio Cézar Programação Shell Linux; 5a ed. Rio de Janeiro:Brasport, 2005. 408p. ISBN 8574522031.
- VEIGA, Roberto G. A. Comandos do Linux: guia de consulta rápida; ed. São Paulo:Novatec, 2004. 144p. ISBN 85-7522-060-8.
Referências adicionais
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. Ver exemplos de códigos visualG3 em Exemplos VisualG3
- 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.
- Debian: O Debian, é umas das distribuições Linux mais estáveis existentes, suportando atualmente 12 arquiteturas de processador. É software livre e de código aberto e mantido por uma ampla comunidade com mais de 18000 desenvolvedores. Sua versão atual é a 8.5 (codinome Jessie, do filme Toy Story).
- 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.
- dbDesigner4: O dbDesigner é uma ferramenta gratuita para elaboração de diagramas de bancos de dados relacionais. Não trabalhamos com bancos na disciplina PRG29002, porém trabalhamos com dados, esta ferramenta é útil para organizá-los em diagramas.
Avaliações
Conceitos | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Estatísticas | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Plano de aula
Aula | Data | Horas | Conteúdo | Recursos |
---|---|---|---|---|
1 | 12/8 | 2 | Aula inaugural, apresentação do professor e turma, apresentação da disciplina e introdução aos algoritmos | |
2 | 15/8 | 2 | Prática: Introdução ao fluxograma | |
3 | 19/8 | 2 | Algoritmos continuação (representação por pseudo-codigo, apresentacao o portugol) | |
4 | 22/8 | 2 | Prática: Resolução de problemas em pseudocódigo e fluxogramas (declaração de variáveis, leia e escreva, uso de condicionais e biblioteca portugol) | |
5 | 26/8 | 2 | Pseudocódigo: Estruturas de repetição e sub-rotinas | |
6 | 29/8 | 2 | Prática: Resolução de problemas em pseudocódigo e fluxogramas | |
7 | 2/9 | 2 | Pseudocódigo: Uso de vetores e sub-rotinas | |
8 | 5/9 | 2 | Prática: Resolução de problemas com vetores e sub-rotinas | |
9 | 9/9 | 2 | Introdução ao C, primeiros conceitos de compilação, variáveis, if… else, printf e scanf | |
10 | 12/9 | 2 | Prática: Aula de exercicios de C | |
11 | 16/9 | 2 | Continuação C, condicionais, operadores relacionais, operadores lógicos | |
12 | 19/9 | 2 | Prática: Estruturas de repetição em C | |
13 | 23/9 | 2 | Revisão de algoritmos para preparação para prova e Funções no C | |
14 | 26/9 | 2 | Prática: Exercicios de funções | |
15 | 30/9 | 2 | Avaliação 1 - Algoritmos, resolução de problemas e C básico | |
16 | 3/10 | 2 | Prática: Correção da Avaliação | |
17 | 7/10 | 2 | Resolução de exercícios de vetores | |
18 | 10/10 | 2 | Prática: Resolução de exercícios de fixação de vetores. | |
19 | 14/10 | 2 | Estruturas | |
20 | 17/10 | 2 | Prática: Exercícios adicionais de preparação para avaliação 1 de Laboratório | |
21 | 21/10 | 2 | Exercícios adicionais de preparação para avaliação 1 de Laboratório | |
22 | 24/10 | 2 | Prática: Avaliação de Laboratório | |
23 | 28/10 | 2 | FERIADO: DIA DO SERVIDOR PUBLICO | |
24 | 31/10 | 2 | Prática: Correção da avaliação | |
25 | 4/11 | 2 | Ponteiros | |
26 | 7/11 | 2 | Prática: Exercicios ponteiros | |
27 | 11/11 | 2 | Vetor de Ponteiros e Ponteiro Para Estruturas | |
28 | 14/11 | 2 | PROVAVEL RECESSO | |
29 | 18/11 | 2 | Desenvolvimento do Projeto | |
30 | 21/11 | 2 | Prática: Desenvolvimento do Projeto | |
31 | 25/11 | 2 | Avaliação II de Laboratório | |
32 | 28/11 | 2 | Prática: Desenvolvimento do Projeto | |
33 | 2/12 | 2 | Desenvolvimento do Projeto | |
34 | 5/12 | 2 | Prática: Desenvolvimento do Projeto | |
35 | 9/12 | 2 | Desenvolvimento do Projeto | |
36 | 12/12 | 2 | Prática: Desenvolvimento do Projeto | |
37 | 16/12 | 2 | Desenvolvimento do Projeto | |
38 | 19/12 | 2 | Prática: Recuperação |