Programação de Computadores

Conhecimentos de Base Recomendados

Conhecimentos base de uma Linguagem de programação.

Métodos de Ensino

Nas aulas teóricas, a metodologia de ensino predominante é o método expositivo, complementado pela análise de exemplos ilustrativos. As aulas laboratoriais permitem a consolidação dos conhecimentos teóricos adquiridos ao longo do semestre por meio da resolução orientada de problemas propostos.  Existirá ainda uma componente de projeto que será desenvolvida nas aulas ao longo do semestre.

As aulas laboratoriais realizam-se nos Laboratórios de Apoio à Informática, onde os alunos têm ao seu dispor computadores pessoais. 

 

Resultados de Aprendizagem

Objetivos: O objetivo principal desta unidade curricular é dotar os alunos das técnicas/ferramentas indispensáveis para resolver, escrever, efetuar o debug e testar, pequenas e médias aplicações utilizando a Linguagem de Programação C. 

Competências:

  1. Aplicar os conceitos e técnicas necessárias para desenvolver algoritmos eficientes na resolução de problemas propostos.

  2. Desenvolver programas de forma estruturada em linguagem C, abordando problemas reais de maneira eficaz e organizada.

  3. Realizar debugging e testes de programas de forma sistemática, interpretando e analisando os resultados para garantir a correção e eficiência do código desenvolvido.

  4. Demonstrar compreensão das principais características e conceitos das linguagens orientadas a objetos, contribuindo para uma visão mais ampla e abrangente na resolução de problemas de programação.

  5. Contribuir ativamente para o trabalho em grupo, comunicando-se eficazmente, compartilhando ideias e conhecimentos, e colaborando de forma construtiva para alcançar os objetivos propostos.

  6. Demonstrar capacidade na escrita e documentação de relatórios técnicos.

  7. Adotar práticas éticas na realização de trabalhos acadêmicos, evitando o plágio e referenciando adequadamente sites e autores, promovendo a integridade acadêmica e a honestidade intelectual.

Programa

1. Apontadores

 – Noções básicas sobre endereços e apontadores

 – Declaração de apontadores

 – Os operadores * e &

 -Ponteiros e tipos de dados

– Aritmética de apontadores

– Apontadores para apontadores

2. Vetores

  – Vetores e strings como argumentos de funções

 – Vetores de apontadores

– Vetores multidimensionais

– Vetores multidimensionais como argumentos de funções 

3. Gestão de Memória Dinâmica

 – Alocação de memória

 – Principais funções de alocação dinâmica de memória

– Libertação de memória 

4. Algoritmos de Ordenamento e Pesquisa

 – Ordenamento por Seleção

 – Ordenamento por Borbulhagem

 – Ordenamento por Inserção

 – Pesquisa Linear

 – Pesquisa Linear com Sentinela

 – Pesquisa Binária

5. Estruturas

 – Definição

 – Declaração e inicialização de estruturas

 – Regras de processamento de estruturas

 – Operações sobre estruturas

 – Estruturas hierárquicas

 – Definição de novos tipos

 – Vetores de estruturas

 – Funções e estruturas: parâmetros e retorno

 – Apontadores para estruturas

 – Uniões

 – Bit Fields

6. Ficheiros

 – Ficheiros de texto versus ficheiros binários

 – Streams (Fluxos de Comunicação)

 – Operações básicas sobre ficheiros

 – Ficheiros Standard

 – Acesso direto e acesso sequencial

 – Ficheiros de Estruturas

 – Inserir, alterar e apagar elementos de um ficheiro

7. Estruturas de Dados Dinâmicas

 – Estruturas autorreferenciáveis

 – Tipos de estruturas de dados dinâmicas

 – Listas ligadas

 – Operações sobre listas ligadas.

8. Programas de Grande Dimensão

 – Header Files

 – Divisão de um programa em vários ficheiros.

9. Introdução às Linguagens Orientadas a Objetos

 – Paradigmas de programação

 – Principais características das linguagens orientadas a objetos

 – Classes e Objetos

 – Análise de pequenos exemplos em C++

Docente(s) responsável(eis)

Verónica Maria Marques do Carreiro Silva Vasconcelos

Métodos de Avaliação

Projeto: 

- Cotado para 8 valores (em 20 valores), proposto pelos docentes da unidade curricular. Realizado durante as aulas em grupo de dois alunos. 

- O projeto será avaliado com base na correção funcional, qualidade e organização do código, utilização adequada da linguagem C, testes realizados e documentação técnica.  A classificação do projeto poderá ser ajustada individualmente com base na participação efetiva de cada elemento.

- Data da Proposta: até a 8ª semana de aulas.

- Data de entrega: penúltima semana de aulas.

Exame Época Normal:

 - Exame escrito para 12 valores (em 20 valores).

 - O aluno deverá obter um mínimo de 40% no exame

 - Classificação Final (0-20) = Exame Escrito (0-12) + Projeto (0-8)

Condições de Acesso ao Exame Época Normal:

 - Presença em 50% das aulas teóricas. Não ter mais que duas faltas nas aulas laboratoriais

 - Obter um mínimo de 40% no projeto

Exame da Época de Recurso e Época Especial:

Hipótese #1

 - As mesmas condições que para o Exame da Época Normal.

Hipótese #2

 - Exame escrito para 20 valores.

         Condições de Acesso ao Exame Época de Recurso e Época Especial:

         - Presença em 50% das aulas teóricas. Não ter mais que duas faltas nas aulas laboratoriais.

 

Regimes Especiais: Durante as duas primeiras semanas de aulas devem ser expostas, por email, o regime especial e respectivo enquadramento. Será aplicada a lei/regulamento em vigor.

Caso o professor entenda necessário, a nota final será validada por um exame oral. 

 

 


    Estágio(s)

    NAO

    Bibliografia

    Bibliografia Recomendada:

    Vasconcelos, V., Marques, L. (2012). Linguagem C – Textos de apoio. Instituto Superior de Engenharia de Coimbra.

    Damas, L. (1999). Linguagem C. FCA – Editora de Informática.

    Rodrigues, P., Pereira, P. , Sousa, M. (1998).  Programação em C++ . FCA – Editora de Informática, 3ª Ed.

    Ritchie, D. M., Kernighan, B. W., & Lesk, M. E. (1988). The C programming language. Englewood Cliffs: Prentice Hall.

    Schildt, H. (2000). Teach Yourself C. McGraw-Hill, 4th Ed.

    King, K. N. (2008). C programming: a modern approach. WW Norton & Company.

    Vasconcelos, V. (2021). Apontamentos das aulas, folhas práticas, exercícios resolvidos e software de apoio. Coimbra: ISEC.