Introdução à Programação (B) (2017/2018)

Aulas teóricas

Artur Miguel Dias



Teórica 01 (25/set/2017)

Apresentação da disciplina.
Introdução à programação.
Computação. Algoritmo. Programas e Linguagens de Programação.
Computadores eletrónicos.
Code::Blocks - Um ambiente integrado de desenvolvimento de programas.
Programando...
A Linguagem de Programação C.
Primeiros programas em C usando: funções com um argumento, instrução condicional if, tipos int e double, instruções de input e output.

Apresentação da cadeira

Outros detalhes:

Exemplo de programa escrito na linguagem C

Nesta cadeira vamos aprender a programar usando a linguagem C!

O objetivo principal é aprender a escrever programas de pequena dimensão. Mas também existe o objetivo secundário de conhecer parte da própria linguagem C, a ferramenta que usaremos para escrever os programas.

O seguinte programa, escrito em C, quando executado num computador determina qual é máximo divisor comum entre dois números inteiros positivos que são pedidos ao utilizador:

Eis um exemplo de execução do programa:

Razões pelas quais esta cadeira é importante!

Os aluno deste curso não vão ser programadores profissionais. Será que esta cadeira é assim tão importante?

A resposta é SIM! Por diversas razões:

  1. Na vida profissional é uma enorme vantagem saber escrever pequenos programas para, por exemplo, processar uma coleção de dados guardados em ficheiros. É verdade que alguns dos problemas mais simples podem ser resolvidos carregando os dados numa folha de cálculo, fazendo umas ordenações e escrevendo uma fórmulas. Mas muitos problemas requerem mesmo a escrita dum pequeno programa.

  2. Por vezes precisamos de resolver um programa e até descobrimos na Net um programa que faz mais ou menos aquilo que queremos, mas não o faz completamente. É importante ter a capacidade de olhar para um programa já escrito, entender as partes do código que nos interessam, e conseguir alterar alguns pormenores para o programa passar a fazer o que precisamos.

  3. Saber escrever alguns pequenos programas de processamento de dados e de cálculo de estatísticas poderá ser importante para a tese de final de curso. Também poderá ser uma vantagem para o aluno nos trabalhos de outras cadeiras.

Programar!

A programação pode ser efetuada usando diversas técnicas, umas mais inteligentes do que outras. A técnica menos inteligente de todas chama-se força bruta. Aproveita-se a velocidade do computador para resolver o problema. Por exemplo, se quisermos saber quantas vezes o número 7 cabe no número 50, podemos fazer assim: Mas esta estratégia é pateta, não é? A solução inteligente usa a divisão inteira:

Programar é divertido!

Fred Brooks
Em 1975, Fred Brooks identificou 5 razões pelas quais programar é divertido. Foi no seu livro "The Mythical Man-Month: Essays on Software Engineering", concretamente no capítulo 7, chamado "Joys of the Craft". O que se segue é uma adaptação livre:
  1. É divertido programar pelo prazer de construir coisas. Tal como as crianças gostam de criar objetos com plasticina e alguns adultos de pintar quadros ou reconstruir automóveis antigos.

  2. É divertido programar pelo prazer de construir coisas que são úteis para as outras pessoas. Tal como as crianças gostam de desenhar uns bonecos horríveis para o pai ou a mãe dependurarem na parede do gabinete de trabalho.

  3. É divertido programar pelo fascínio de criar sistemas complexos, com diversas partes que se ligam de forma sofisticada. Faz também parte do fascínio observar os detalhes funcionamento do sistema, entendendo a sua arquitetura interna.

  4. É divertido programar pelo prazer de estar sempre a aprender, o que advém do facto de programar nunca ser uma atividade repetitiva. Todos os problemas contém algo de novo e o programador aprende sempre algo de novo com cada problema.

  5. É divertido programar pela maravilha que é trabalhar com uma "matéria prima" infinitamente flexível, próxima do pensamento puro. O programador desenvolve nos seus programas estruturas de ideias que refletem diretamente a sua imaginação, quase como um poeta.
Nota: Evidentemente os programadores não têm o monopólio da criatividade; a maioria destas 5 razões também se aplicam a outras atividades humanas. No entanto são poucas as atividades que usam uma "matéria prima" tão flexível - conceitos do pensamento.

Fred Brooks também escreveu no seu livro um capítulo chamado "The Woes of the Craft" ("As Desventuras da Programação"). Alguns dos problemas: os programas têm de ser perfeitos e de confiança; descobrir e corrigir erros de pormenor nos programas pode ser demorado, maçador e trabalhoso; por vezes aproveitamos código existente, mas por vezes esse código é confuso, difícil de perceber.



Conceitos iniciais: Computação, Algoritmos, Programas

Nesta cadeira vamos aprender a escrever programas que se destinam a ser executados num computador.

Para perceber o que é um programa, temos de compreender que se trata da concretização dum algoritmo que descreve computações.

Programar envolve a invenção de algoritmos que depois têm de ser convertidos em programas que correm no computador.

Tentemos clarificar estes conceitos:


Computação

Computação

Facetas da computação

Automatismos e sua especificação


Algoritmos

Muhammad ibn Musa al-Khwarizmi

Algoritmo

A palavra "algoritmo" deriva da palavra Algoritmi que por sua vez corresponde à latinização do nome do matemático Persa Muhammad ibn Musa al-Khwarizmi, nascido por volta de 780 DC. Este cientista, que trabalhou quase toda a sua vida em Bagdad, deu importantes contribuições para a Álgebra, Trigonometria e Aritmética. Veja aqui um vídeo de 5 minutos sobre esta génio da antiguidade.

Exemplo de algoritmo

Eis o algoritmo de Euclides (300 BC), que serve para achar o máximo divisor comum entre dois números - MDC(m,n). Euclides demonstrou que este algoritmo calcula efetivamente o valor MDC(m,n) e não qualquer outro valor.

Exemplo - Cálculo de MDC(252, 105):

Algoritmos, logo desde a escola primária

Logo a partir da escola primária (1º ciclo) aprendem-se diversos algoritmos: somar, subtrair, multiplicar e dividir.

Antiguidade dos Algoritmos


Programas e Linguagens de Programação

Programa

Linguagem de programação

Implementação em C do algoritmo de Euclides

Trata-se do programa apresentado logo no início desta aula.



Computadores eletrónicos

A imagem abaixo mostra a arquitetura dum computador eletrónico moderno. Repare nos dispositivos de entrada e saída, na memória onde residem os dados e o programa, e no processador (CPU) que serve para executar o programa.

O C é uma linguagem de alto nível, concebida para ser usada por humanos, mas não pelo processador da máquina. De facto, os circuitos eletrónicos do processador só "entendem" uma linguagem de baixo nível a que se costuma chamar linguagem máquina.

Assim, para um programa em C poder correr no computador, o programa terá primeiro de ser traduzido para linguagem máquina.



Code::Blocks - Um ambiente integrado de desenvolvimento de programas

Normalmente os programas são desenvolvidos dentro dum ambiente integrado de desenvolvimento, dentro do qual podemos escrever e executar os nossos programas. Um bom sistema de desenvolvimento aumenta a produtividade dos programadores e contribui indiretamente para aumentar a qualidade dos programas. Se não tivéssemos um ambiente integrado, restar-nos-ia usar um editor de texto normal para escrever os programas (o que também não seria o fim do mundo...)

Na nossa a disciplina usaremos o ambiente Code::Blocks que funciona igualmente bem em Windows, Macintosh e Linux. Aproveita o gcc, que é o compilador de C dos GNU Tools do Linux. O Code::Blocks é um sistema gratuito mas de muito boa qualidade e muito rápido.

Veja na aula prática 1 um pequeno guia sobre a utilização do Code::Blocks.


Programando usando o Code::Blocks...



A Linguagem de Programação C

Dennis Ritchie Brian Kernighan
https://gcc.gnu.org/onlinedocs/gcc-7.2.0/gcc/Standards.html#C-Language

Resumo



Primeiros programas em C usando: funções, instrução condicional if, tipos int e double, instruções de input e output

Na aula teórica de hoje vamos examinar alguns pequenos programas, já completamente escritos, e vamos tentar percebê-los.

Note que, nas primeiras aulas práticas, você irá programar imitando estes exemplos, mesmo antes de dominar os detalhes da linguagem C. As aulas práticas disponíveis têm de ser bem aproveitadas logo desde o início, mesmo com as aulas teóricas apenas a começar.

1º programa em C

Enunciado do problema

Desenvolva um programa que escreva simplesmente Bem-vindos!.

Solução

Explicações


Um programa com duas funções

Enunciado do problema

Desenvolva um programa que calcule o cubo de valores inteiros.

Solução

Explicações


Um programa que usa números reais e a instrução condicional if

Enunciado do problema

Desenvolva um programa que calcule o módulo (valor absoluto) de valores reais.

Solução

Explicações



#110