Vous êtes sur la page 1sur 39

Afectos os CURSOS de INFORMTICA, TELECOMUNICAES, ELECTROMECNICA 1 Ano Perodo: Noite ANO LECTIVO 2013 ISTA - Palanca

Na vida preciso ter Cincia, Conscincia e um pouco de Pacincia


Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Chamam-me de: Bernardo Joo da Costa Kilulo Licenciado em Eng. Informtica no ISTA - (Instituto Superior Tcnico de Angola) Mestrando em Administrao de Empresa na FCU - (Florida Christian University) Docente em Programao duarante 6 anos em vrios Institutos Mdios tais como: Alpega, Elsamina, Giavissama II, Rocha Interna... Ocupei cargos como Coordenador da Disciplina de T.L.P & I.A.C.G. Numa relao aberta com a (Vitoria Ngueve Maloba) pai de uma filha de 6 anos (Beniusa) Actua como Professor nos Institutos: ISTA, ISPOCA e Atlntidas Contactos: 923844573/918341134 E-mail: benikilulo@gmail.com

Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Consideraes
A disciplina meiramente prtica todavia os estudantes sero submetidos as seguintes avaliaes: PROVA ESCRITA/PRTICA TRABALHO PRTICO/TERICO AVALIAO FINAL PROJECTO MD=(1p+1tp+2p+2tp+Pf)/5 Obs: apresena indispensvel...
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Contedo Programtico
INTRODUO A LGICA COMPUTACIONAL LGICA DE PREPOSIES LGICA DE PREDICADO CONCEITOS BSICOS EXPRESSES IMPLEMENTAO DO CDIGO FONTE MANIPULAO DE STRINGS, ARRAYS MODULARIZAO COMANDOS BSICOS ESTRUTURAS DE DECISO
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Cont. INTRODUO
INTRODUO A LGICA COMPUTACIONAL enquadramento no documento das linguagens de programao, evoluo histrica; LGICA DE PREPOSIES objectivos, sintaxe, formas normais, interpretaes, conceito de sequncia lgica, algortmo da resoluo. LGICA DE PREDICADO quantificao, sintaxe, interpretaes, forma causal, o universo de Herband, unificao, algortmo da resoluo, resoluo linear;
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Objectivo e Resultado
Demonstrar o conhecimento sobre os mecanismos bsico da linguagem de programao C Formar tcnicos capazes de desenvolver SW com particular nfase na componente de Programao em C; Formao de base em mtodos e tcnicas formais e respectivos conceitos que conduzem obteno dos Algortmo e construir o mesmo; Formao em instrumentos computacionais vulgarmente usados para a implementao de Programao. Construir programas em C que resolvam problemas simples descritos em liguagem natural.
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

O QUE PROGRAMAO?
Programao a aco e o efeito de programar. Hoje em dia, a noo de programao bastante associada programao em informtica. Este o processo pelo qual um programador escreve, numa linguagem de programao, o cdigo-fonte de um software. Este cdigo indicar ao programa informtico o que tem de fazer e de que forma. O programador encarrega-se de escrever, verificar, averiguar e manter o cdigo-fonte. Neste sentido, os modelos de desenvolvimento de software enquadramse numa disciplina da informtica denominada engenharia de software.
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Capitulo #1 1.1- Conceitos bsicos sobre software 1.2- Tipos de Linguagens de Programao 1.3- Conceitos sobre compilador e interpretador 1.4- Noo de programa Fonte, programa Objecto e programa Tradutor. Objctivos - Dar uma noo da evoluo dos sistemas informtico ao Estudante; Distiguir diferena e tipos de suportes de armazenamento de informao.
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Conceitos bsicos sobre software


O Software: engloba o sistema lgico do computador. So programas (conjunto de instrues) necessrios para que o computador possa realizar tarefas, auxiliando e agilizando o trabalho do usurio. EX: Windows, Word, Excel, Power Point, Corel Draw, Publisher, Jogos, etc. Sem software, o computador como uma cabea sem ideias. Elas podem ser: SW de Sistema e SW de Aplicao.
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Tipos de Linguagens de Programao


As vrias linguagens de programao podemse classificar em trs tipos distintos: Linguagens Mquina; Linguagens Assembly (simblicas) Linguagens de Alto Nvel

Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Linguagem de Baixo Nvel (Ling. Mquina) Esta linguagem consiste num conjunto de n binrios (sequencias de 0 e 1) que so entendidos pela UCP e tm a ver com caractersticas intrnsecas do processador do computador. Ainda que seja possvel fazer um programa directamente em cdigo, tal tarefa extremamente morosa e muito sujeito a erros. Linguagem Assembly Consiste numa linguagem muito prxima da linguagem mquina, em que a cada opcode(Cd. Operao) se associou uma memria (palavra que nos ajuda a lembrar a aco realizada pelo comando). Tambm esta ligado ao computador.
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Linguagens de Alto nvel Permitem a especificao de instrues para o processador numa forma abreviada, onde cada instruo representa vrias instrues em linguagem mquina. A sua sintaxe est mais prxima da liguagem humana. Ex: Pascal, C, Basic, Fortran, Java etc. Vantagens: Mais fceis de aprender; Requerem menos tempos a escrever; Melhor documentao; Mais fceis de alterar e manter; No est ligado a uma s mquina.
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Pascal 1 linguagem de programao a ser criada depois de os conceitos de programao estruturada e serem largamente aceites. C Produz um cdigo que se aproxima da linguagem mquina em densidade eficincia, mas que oferece tambm algumas caractersticas das linguagens de alto nvel. Fortan Linguagem sequencial; Grandes bibliotecas de programas cientficos de eng; Difcil de definir a lgica do programa; No apropriado para processar ficheiros com grande volume de dados; Orientada ao Processamento numrico.

Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Basic Muito parecida com o Fortran; Fcil definio da lgica do programa; I/O de dados de fcil acesso; No estruturada. Linguagens de 4 Gerao Geradores de aplicao que permitem as pessoas especificar os resultados desejados sem que os utilizadores tenham que definir a lgica de programao necessria (Ex.: LISP, LOGO, MODULA-2, PROLOG e PILOT) Algol Linguagem modular e estruturada por blocos, sendo muito apropriada para programao por blocos.
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Linguagens OO Linguagens de programao onde utilazador trabalha com classes de objectos da mesma familia ou de familias diferentes. Recorrer a programao de scripts de objectos pr-definidos ou definidos pelo programador (Ex.: C++, TOOLBOOK, Visual Basic, Java, C#, etc). Tarefa 1. Diferena entre linguangem de alto nvel e Baixo nvel.
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Conceitos sobre Compiladores e Interpretador


Um programa escrito em linguagem de alto nvel , para o PC, um simples texto. Este texto escrito com um programa do tipo Editor de Texto guardado em memria (Central ou auxiliar). Posteriormente, esse mesmo programa evoluido ser lido como texto e descodificado nas correspondentes instrues em linguagem mquina. Uma s instruo de alto nvel pode dar origem a um grande n de instrues em linguagem mquina.
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Interpretador: L no programa inicial uma instruo de cada vez. Por cada instruo lida, verifica quais as aces a tomar em linguagem mquina e executa-as. Um interpretador no cria nenhum outro programa. Compilador: L um certo n de vezes (mas ao programador pode parecer s uma vez) o programa inicial em linguagem de alto nvel (o texto) e costri um segundo programa equivalente ao primeiro mas escrito em linguagem de mquina.
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Noo de programa fonte, programa objecto e programa tradutor


Programa Fonte: o texto que ns escrevemos, utilizando um editor de texto e segundo as regras sintcticas utilizadas na linguagem de programao com que vamos programar. Programa Objecto: o programa que se obtm aps termos feito a compilao do programa fonte, utilizando um compilador, ou seja, aps ter sido traduzido o programa fonte. Programas Tradutores: So programas que traduzem o programa fonte em linguagem de mquina (Computador).
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Tarefa
Define Compilador e Interpretador? O que um programa? O que um programa Objecto? Porque usamos o compilador?

Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Capitulo #2- Introduo ao Algoritmos


2.1- Noes de Programao 2.2- Tipos de dados e declaraes 2.3- Operadores Aritmticos 2.4- Operadores Lgicos e relacionais 2.5- Entrada e sada de dados 2.6- Instrues de Controlo de Fluxo 2.7- Variveis indexadas (Vectores e Matrizes) 2.8- O Portugus estruturado e C 2.9- Algortmos bsicos
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Algoritmo um conjunto finito de regras, bem definidas, para a soluo de um problema em um tempo finito e com um nmero finito de passos. Um algoritmo deve sempre possuir pelo menos um resultado, normalmente chamado de sada, e satisfazer a propriedade da efetividade, isto , todas as operaes especificadas no algoritmo devem ser suficientemente bsicas para que possam ser executadas de maneira exacta e num tempo finito. Para se ter um algoritmo, necessrio: 1. Que se tenha um nmero finito de passos; 2. Que cada passo esteja precisamente definido, sem possveis ambigidades; 3. Que existam zero ou mais entradas tomadas de conjuntos bem definidos; 4.Que existam uma ou mais sadas; 5. Que exista uma condio de fim sempre atingida para quaisquer entradas e num tempo finito.
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Noes Gerais de Progr. Algortmos

Algoritmos no se aprendem: Copiando algoritmos Estudando algoritmos. Algoritmos s se aprendem: Construindo algoritmos Testando algoritmos. O que Lgica? Lgica de programao a tcnica de encadear pensamentos para atingir determinado objetivo. Seqncia Lgica Seqncia Lgica so passos executados at atingir um objetivo ou soluo de um problema. Instrues Na linguagem comum, entende-se por instrues um conjunto de regras ou normas definidas para a realizao ou emprego de algo. Em informtica, porm, instruo a informao que indica a um PC uma aco elementar a executar.
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Algoritmo a descrio de um conjunto de comandos que, obedecidos, resultam numa sucesso finita de aces. Um Algoritmo uma seqncia de instrues ordenadas de forma lgica para a resoluo de uma determinada tarefa ou problema. Regras para construo do Algoritmo Para escrever um algoritmo precisamos descrever a seqncia de instrues, de maneira simples e objectiva. Para isso utilizaremos algumas tcnicas: Usar somente um verbo por frase; Imaginar que voc est desenvolvendo um algoritmo para pessoas que no trabalham com informtica; Usar frases curtas e simples; Ser objetivo; Procurar usar palavras que no tenham sentido dbio

Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Entretanto ao montar um algoritmo, precisamos primeiro dividir o problema apresentado em trs fases fundamentais. Onde temos: ENTRADA: So os dados de entrada do algoritmo. PROCESSAMENTO: So os procedimentos utilizados para chegar ao resultado final. SADA: So os dados j processados Analogia com o homem. Tarefa Fazer um algoritmo para trocar a lmpada Constro uma sequncia lgica para trocar o pneu.
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Exemplo de Algoritmo
Imagine o seguinte problema: Calcular a mdia final dos alunos da 3 Srie. Os alunos realizaro quatro provas: P1, P2, P3 e P4. Onde: onde P a nota da prova e n o numero de provas realizadas. Para montar o algoritmo proposto, faremos trs perguntas: a) Quais so os dados de entrada? R: Os dados de entrada so P1, P2, P3 e P4 b) Qual ser o processamento a ser utilizado? R: O procedimento ser somar todos os dados de entrada e dividi-los por 4 (quatro) c) Quais sero os dados de sada? R: O dado de sada ser a mdia final Algoritmo Receba a nota da prova1 Receba a nota de prova2 Receba a nota de prova3 Receba a nota da prova4 Some todas as notas e divida o resultado por 4 Mostre o resultado da diviso

Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Teste de Mesa Aps desenvolver um algoritmo ele dever sempre ser testado. Este chamado de TESTE DE MESA, que significa, seguir as instrues do algoritmo de maneira precisa para verificar se o procedimento utilizado est correto ou no. Veja o exemplo: Nota da Prova 1 Nota da Prova 2 Nota da Prova 3 Nota da Prova 4 Utilize a tabela abaixo:
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

A linguagem C
O C "Case Sensitive" Vamos comear o nosso curso ressaltando um ponto de suma importncia: o C "Case Sensitive", isto , maisculas e minsculas fazem diferena. Se se declarar uma varivel com o nome soma ela ser diferente de Soma, SOMA, SoMa ou sOmA. Da mesma maneira, os comandos do C if e for, por exemplo, s podem ser escritos em minsculas pois seno o compilador no ir interpret-los como sendo comandos, mas sim como variveis.
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Dois Primeiros Programas Vejamos um primeiro programa em C: #include <stdio.h> /* Um Primeiro Programa */ int main () { printf ("Ola! Eu estou vivo!\n"); return(0); } Compilando e executando este programa voc ver que ele coloca a mensagem Ola! Eu estou vivo! na tela.

Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Veja como compilar e executar este programa usando o DevC++, disponvel gratuitamente na Internet. Veja como compilar e executar este programa usando o DJGPP e o RHIDE, disponveis de graa na Internet. Vamos analisar o programa por partes. A linha #include <stdio.h> diz ao compilador que ele deve incluir o arquivo-cabealho stdio.h. Neste arquivo existem declaraes de funes teis para entrada e sada de dados (std = standard, padro em ingls; io = Input/Output, entrada e sada ==> stdio = Entrada e sada padronizadas). Toda vez que voc quiser usar uma destas funes deve-se incluir este

Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

comando. O C possui diversos arquivos-cabealhos. Quando fazemos um programa, uma boa idia usar comentrios que ajudem a elucidar o funcionamento do mesmo. No caso acima temos um comentrio: /* Um Primeiro nmero 0. Programa */. O compilador C desconsidera qualquer coisa que esteja comeando com /* e terminando com */. Um comentrio pode, inclusive, ter mais de uma linha. A linha int main() indica que estamos definindo uma funo de nome main. Todos os programas em C tm que ter uma funo main, pois esta funo que ser chamada quando o programa for executado. O contedo da funo delimitado por chaves { }. O cdigo que estiver dentro das chaves ser executado sequencialmente quando a funo for chamada. A palavra int indica que esta funo retorna um inteiro. O que significa este retorno ser visto posteriormente, quando estudarmos um pouco mais detalhadamente as funes do C. A ltima linha do programa, return(0); , indica o nmero inteiro que est sendo retornado pela funo, no caso o
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Uso do Switch
O Switch uma seleo mltipla, e o mesmo funciona como um if aninhado. A sua sintaxe a seguinte: Switch (varivel) { Case 1: Instrues; Break; Case 2: Instrues; Break; Default: Instrues; }
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Exemplo
Faa um programa que dada uma letra mostra a respetiva cor usando o Switch. Sumrio: While, For, e Do... While While (Condio) Instruo; Pode ser resumido nos seguintes pontos A condio avaliada. Se o resultado da avaliao for falso (0-zero), o ciclo termina e o Programa continua na instruo imediamente a seguir ao while.
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Se o resultado da avaliao for verdadeira (!=0), executada a instruo (ou bloco de instrues a presente) associado ao while Volta-se ao ponto 1. NB: instruo de um ciclo tambm CORPO DO CICLO. Nota: Num while, coloca-se entre parntesis a CONDIO QUE SE TEM QUE VERIFICAR para que a instruo ou bloco de instrues seja executada.
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Tarefa
Escreva um programa que apresenta os 10 primeiros nmeros inteiros. Usando o while.

Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Ciclos While e Do... While


O controlo de fluxo de um programa pode assim ser realizado atravs das instrues if e do Switch e atravs de outras instrues, que iro ser apresentados nesta aula e que permitem a repetio de instrues. Estas instrues pelo papel que desempenham, designa-se habitualmente por instrues de CONTROLO DE FLUXO e incluem o if, o Switch e os ciclos while, for e do...while.
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

A instruo While (tambm chamado ciclo while), executa uma instruo ou bloco de instrues enquanto uma determinada condio for verdadeira. A sua sintaxe : While (condio) Instruo Resumimos o seu funcionamento nas seguintes formas: 1. A condio avaliada; 2. Se o resultado for falso (0-zero), o ciclo termina e o programa continua na instruo imediatamente a seguir ao while. 3. Se o resultado da avaliao for verdadeira (!=0), executado a instruo (ou bloco de instrues a presente) associado ao while. 4. Volta-se ao ponto 1 Nota: Num while, coloca-se entre () a condio que se tem que verifiacar para que ainstruo ou blocode isntruo ou bloco de instrues seja executado

While

Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Ex: Escreva um prova que coleque no ecr os primeiro nmeros inteiros: # include <stdio.h> main() { Int i; i=1; While (i<=10) { printf(%d\n, &i); i=i+1 } }
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Cont. While
Repara que o teste da condio realidade antes da execuco do bloco de instrues Notar que necessrio a criao de um bloco dentro da while, pois necessrio executar duas instrues distintos (o printf e o incrimento da varivel), dentro de cada interao do ciclo. P: Qual o output se no fossem colocados as chavetas na instruo do while? R: Iria originar um ciclo infinito que ia imprimir o N1 pois a varivel de controlo do ciclo nuca seria alterada, permanecendo a condio do ciclo alternadamente verdadeira.
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Define dos ciclos anteriores porque o teste da condio realizado no fim do corpo (instruo ou bloco de instrues) do ciclo e no antes como acontecia com os ciclos while e for. Desta forma o corpo do ciclo do...while executado pelo menos uma vez, enquanto nos ciclos while e for o corpo nunca ser executado (caso a condio seja falsa partida) do instruo While (condio);
Msd, Eng Bernardo Kilulo; 923 844 573/918 341 134. E-mail: benikilulo@gmail.com

Do...While