Informações

[xx-xx-2024]

--

 


Objetivos de aprendizagem

Os objetivos gerais de aprendizagem são os seguintes:

- Perceber os fundamentos de programação para resolver problemas de natureza computacional usando computadores

- Perceber como abstrair um problema concreto para a sua devida especificação/modelação e implementação na forma de um programa de computador

- Introduzir os conceitos básicos de programação imperativa

- Desenvolver capacidades de programação com recurso à linguagem C

- Perceber e saber como corretamente integrar uma solução programática com as contingências arquitetónicas de um computador (e.g. aritmética de computador, gestão dinâmica do recurso memória)

 


Programa

Fundamentos de computadores (hardware/software)

Desenho de algoritmos e programação estruturada

Estruturas básicas da linguagem C: tipos de dados simples, variáveis e operadores (aritméticos, relacionais e lógicos)

Instruções de atribuição e de entrada/saída

Instruções condicionais

Instruções de repetição (ciclos)

Subprogramas (funções)

Tipos de dados compostos: arrays e strings

Apontadores (ponteiros) e passagem de argumentos em subprogramas

Gestão dinâmica da memória

Tipos de dados definidos pelo utilizador: registos (estruturas)

Ficheiros de texto e binários

Algoritmos recursivos

Aritmética de computador

Técnicas básicas de otimização de código C

 


Bibliografia

"Introdução à Programação Usando C", 2006

António Manuel Adrego da Rocha

FCA-Editora de Informática. Coleção: Tecnologias de Informação.

ISBN: 978-972-722-524-8

 

"Fundamentos de Programação Usando C", 2004

Joaquim P. Marques de Sá

FCA-Editora de Informática. Coleção: Tecnologias de Informação.

ISBN: 978-972-722-475-3

 

"Elementos de programação com C", 3ª Edição Actualizada e Aumentada, 2006

Pedro João Valente Dias Guerreiro

FCA-Editora de Informática. Coleção: Tecnologias de Informação.

ISBN: 972-722-510-1

 

"Linguagem C", 1999

Luís Manuel Dias Damas

FCA-Editora de Informática. Coleção: Tecnologias de Informação.

ISBN: 972-722-156-4

 


Critérios de avaliação

A avaliação no período de Aprendizagem consiste no seguinte :

- 2 Testes escritos (Frequências): 16 valores (8 valores cada)

- 4 Mini-testes práticos a realizar nas aulas práticas (PL): 4 valores (1 valor cada)

Aprendizagem = Mini-testes práticos + Testes escritos (Frequências)

em que,

Situação

Classificação final

Presença nas aulas inferior a 50%

Reprovado e Não Admitido a Exame

Aprendizagem < 5,5 (em 20)

Reprovado e Não Admitido a Exame

Aprendizagem >= 9,5 (em 20)

Aprovado e Dispensado de Exame

Restantes casos

Reprovado e Admitido a Exame

Exame = Mini-testes práticos + Teste escrito

em que,

- Mini-testes práticos (realizados durante o período de Aprendizagem): 4 valores

- Teste escrito: 16 valores

 


Datas das avaliações

Mini-testes práticos

 

Data

Hora

Salas

Obs.

MTP1

 

Aula PL

Aula PL

-

MTP2

 

Aula PL

Aula PL

-

MTP3

 

Aula PL

Aula PL

-

MTP4

 

Aula PL

Aula PL

-

Testes escritos (Frequências)

 

Data

Hora

Salas

Frequência 1

 

 

 

Frequência 2

 

 

 

 

Testes do ano letivo de 2022/2023

Frequência 1: Enunciado + Resolução

Frequência 2: Enunciado + Resolução

Exame de Época Normal: Enunciado + Resolução

Exame de Época de Recurso: Enunciado + Resolução

 


Classificações obtidas nas avaliações (ano letivo 2023/2024)

1º Ciclo em Engenharia Informática

Mini-testes práticos

Frequência 1 (classificação em percentagem) ##  Resolução (sugestão)

Frequência 2 (classificação em percentagem) ##  Resolução (sugestão)

Aprendizagem (Mini-testes práticos + Frequências)

Exame - Época Normal (Teste escrito + Mini-testes práticos) ##  Resolução (sugestão)

Exame - Época de Recurso (Teste escrito + Mini-testes práticos) ##  Resolução (sugestão)

 


Apontamentos

Fundamentos de computadores. Hardware vs. Software

Desenho de algoritmos e programação estruturada

Estruturas básicas da linguagem C: tipos de dados simples, variáveis e operadores (aritméticos, relacionais e lógicos)

Instruções de atribuição e de entrada/saída

Instruções condicionais

Instruções de repetição (ciclos)

Subprogramas (funções)  ##  Exemplos

Tipos de dados compostos: arrays  ##  Exemplos

Apontadores (ponteiros). Passagem de rgumentos em subprogramas

Gestão dinâmica da memória

Tipos de dados definido pelo utilizador: registos (estruturas)

Ficheiros de texto

Ficheiros binários

Algoritmos recursivos

Tipos de dados compostos: strings (cadeia de carateres)

Aritmética de computador

Técnicas básicas de otimização de código C

 


Folhas práticas

Folha Prática - Edição, compilação e execução de programas em C

Folha Prática - Desenho de algoritmos  ##  Soluções em Pseudocódigo

Notações algorítmicas  ##  Algorithmic notations

Folha Prática - Manipulação de variáveis e de expressões

Folha Prática - Instruções de atribuição e de entrada/saída padrão  ##  Algoritmos em pseudocódigo

Folha Prática - Instruções condicionais  ##  Algoritmos em pseudocódigo

Folha Prática - Instruções de repetição  ##  Algoritmos em pseudocódigo

Folha Prática - Subprogramas

Folha Prática - Arrays

Folha Prática - Apontadores (ponteiros)

Folha prática - Gestão dinâmica da memória

Folha Prática - Estruturas (struct)

Folha Prática - Ficheiros de texto

Folha Prática - Ficheiros binários

Folha Prática - Algoritmos recursivos

Folha Prática - Strings

 

Sistema Operativo UNIX

Conta UNIX da UBI

Comandos do UNIX

 

Compiladores de C

EMBARCADERO DEV-C++

CODEBLOCKS

TUTORIALSPOINT (online)

CODECHEF (online)

ONLINEGDB (online)

 

Resolução dos exercícios da folha prática "Arrays"

Biblioteca base

OperacoesBasicas.h  ##  OperacoesBasicas.c

Arrays de 1 dimensão (inteiros)

Biblioteca: Array1DInteiros.h  ##  Array1DInteiros.c

Programa principal: A1DInteiros.c

Arrays de 2 dimensões (reais)

Biblioteca: Array2DReais.h  ##  Array2DReais.c

Programa principal: A2DReais.c

 

Resolução dos exercícios da folha prática "Apontadores"

Biblioteca base

OperacoesBasicas.h  ##  OperacoesBasicas.c

Arrays de 1 dimensão (reais)

Biblioteca: Array1DReais.h  ##  Array1DReais.c

Arrays de 2 dimensões (reais)

Biblioteca: Array2DReais.h  ##  Array2DReais.c

 

Resolução dos exercícios da folha prática "Memória Dinâmica"

Biblioteca base

OperacoesBasicas.h  ##  OperacoesBasicas.c

Arrays de 1 dimensão (inteiros)

Biblioteca: Array1DInteirosMD.h  ##  Array1DInteirosMD.c

Arrays de 1 dimensão (reais)

Biblioteca: Array1DReaisMD.h  ##  Array1DReaisMD.c

 

Ficheiros de texto fornecidos:

Inteiros.txt

InteirosPositivos.txt

Multiplos.txt

Dados1.txt

Dados2.txt

Dados3.txt

Pessoas.txt

 


Avaliação prática

Enviar teste

Carregar teste (upload)

 


Horário de atendimento

- Segunda-feira, 16h - 18h (Gabinete 4.2)

- Terça-feira, 16h - 18h (Gabinete 4.2)

- Outro horário (sujeito a marcação com o docente)

 


Horário da disciplina

 

Horas

Segunda

Sala

Terça

Sala

Quarta

Sala

Quinta

Sala

Sexta

Sala

8

  

 

 

 

 

 

 

 

 

 

9

 

 

PL1

6.14

TE

6.03

 

 

 

 

10

 

 

PL1

6.14

TE

6.03

 

 

 

 

11

 

 

 

 

PL2

6.14

 

 

 

 

12

 

 

 

 

PL2

6.14

 

 

 

 

13

 

 

  

  

 

 

 

 

 

 

14

PL3

6.14

PL4

PL5

6.14

6.13

 

 

 

 

 

 

15

PL3

6.14

PL4

PL5

6.14

6.13

 

 

 

 

 

 

16

 

 

 

 

 

 

 

 

 

 

17

 

 

 

 

 

 

 

 

 

 

18