980 likes | 1.26k Views
Prof. Reginaldo Ré reginaldo@utfpr.edu.br http://coinf.cm.utfpr.edu.br. Universidade Tecnológica Federal do Paraná – Campus Campo Mourão COINT - Coordenação do Curso Superior de Tecnologia em Sistemas para Internet. Introdução à Programação usando Linguagem C.
E N D
Prof. Reginaldo Ré reginaldo@utfpr.edu.br http://coinf.cm.utfpr.edu.br Universidade Tecnológica Federal do Paraná – Campus Campo MourãoCOINT - Coordenação do Curso Superior de Tecnologia em Sistemas para Internet Introdução à Programação usando Linguagem C
Aulas adaptadas dos materiais... • Do. Prof. Rogério Aparecido Gonçalves • http://coinf.cm.utfpr.edu.br/docentes/rogerioag • Do Prof. Leandro Galvão • www.dcc.ufam.edu.br/~galvao/ • De Allan Diego Silva Lima • http://allanlima.wordpress.com/
Apresentações pessoais Recursos disponíveis Introdução ao Curso de Programação em Linguagem C Algoritmo Definições de Algoritmo Algoritmo x Programa de Computador Algoritmos e suas técnicas de construção O ambiente de programação CDT-Eclipse Linguagem de programação C Aula 1 - Sumário
Reginaldo Ré Dr. Computação e Matemática Computacional ICMC-USP Engenharia de Software Bacharel em Ciência da Computação FIPP-UNOESTE Engenharia de Software Coordenador do Curso Superior de Tecnologia em Sistemas para Internet Apresentações Pessoais
Recursos Disponíveis • coinf.cm.utfpr.edu.br • CDT-Eclipse
Introdução ao Curso de Programação em Linguagem C • Dispõe-se de 2 vasilhas com capacidades marcadas de 9 e 4 litros, respectivamente. Mostre a sequência de passos necessários para colocar numa terceira vasilha de medida desconhecida um volume de 6 litros. 6 9 ? 4
Algoritmo • Sabemos criar e seguir algoritmos. • Exemplos clássicos: • Como tomar banho? • Como ir de casa até a UTFPR? • Como trocar o pneu do carro? • Como trocar uma lâmpada? • Como fazer a média final da disciplina? • ... Algoritmos fazem parte da nossa vida, mais do que imaginamos!
Definição de Algoritmo • “Um conjunto finito de regras que provê uma sequência de operações para resolver um tipo de problema específico” – Donald Knuth ( “The art of computer programming”)
Outras definições... • “Processo de cálculo, ou de resolução de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restrições, as regras formais para a obtenção do resultado ou da solução do problema” • – [Aurélio] • “Sequência ordenada, e não ambígua, de passos que levam à solução de um dado problema” • – [TREMBLAY] • “Algoritmo é uma sequência de passos que visa atingir um objetivo bem definido” • – [FORBELLONE e EBERSPÄCHER]
Outras definições... • “É a descrição de um padrão de comportamento, expressado em termos de um repertório bem definido e finito de ações primitivas, as quais damos por certo que podem ser executadas”. • – [Guimarães/Lages] • “É a descrição de uma sequênciade passos que deve ser seguida para a realização de uma tarefa”. • – [ASCENCIO, 1999] • “É uma sequência finita de instruções ou operações cuja execução, em tempo finito, resolve um problema computacional, qualquer que seja sua instância.” • – [SALVETTI, 1999]
Outras definições... • “Redação que descreve de forma lógica e sem ambigüidades, uma sequência de passos (ações) para se resolver um problema que tenha um comportamento padrão.” • – [Franco e Polidório] • “Algoritmos são regras formais para a obtenção de um resultado ou da solução de um problema, englobando fórmulas de expressões aritméticas” • – [MANZANO, 1997] • “Um algoritmo é a descrição de um conjunto de comandos que, obedecidos, resultam numa sucessão finita de ações.” • – [FARRER, 1999]
Algoritmo • O algoritmo deve ensinar a resolver o problema, e não trazer a solução. • Exemplo: receita de bolo. • Ação é um acontecimento que, a partir de um estado inicial, após um período de tempo finito, produz um resultado final previsível e bem definido. • Objetivo: solução do problema.
AlgoritmosCaracterísticas Importantes • Finitude: Um algoritmo deve sempre terminar após um número finito de passos. • Definição: Cada passo de um algoritmo deve ser precisamente definido. As ações devem ser definidas rigorosamente e sem ambiguidades. • Entradas: Um algoritmo deve ter zero ou mais entradas, fornecidas antes do algoritmo iniciar. • Saídas: Um algoritmo deve ter uma ou mais saídas. • Efetividade: Todas as operações devem ser simples de modo que possam ser executadas em um tempo limitado.
AlgoritmosDificuldades iniciais • Difícil para iniciantes saber o que o computador pode ou não fazer. • Criação de algoritmos não é um processo automático, cada pessoa tem uma forma de pensar, de organizar o raciocínio. • Pode haver mais de uma solução para um problema. • Torre de Hanoi
Algoritmo • Aspecto lógico: ordenar o pensamento. • Organização sequencial das ações pertinentes à solução de um problema; • Exemplo da receita de bolo: o bolo só pode ser levado ao forno depois que a massa estiver pronta. • Lógica no dia-a-dia: • Todo aluno estuda bastante. • Vocês são alunos. • Portanto, vocês estudam bastante.
Algoritmo • Padrão de comportamento: uma sequência de ações para resolver um problema. • Exemplos: • Trocar uma lâmpada (problema do cotidiano): • pegue uma escada; • posicione-a sob a lâmpada; • busque uma lâmpada nova; • suba na escada; • retire a lâmpada velha; • coloque a lâmpada nova. • Calcular a área de um retângulo (problema matemático): • obtenha a medida da base do retângulo; • obtenha a medida da altura do retângulo; • multiplique a medida da base pela medida da altura.
Um Desafio • Torre de Hanoi: o objetivo é mover os discos de um pino para outro. • Somente um disco pode ser movido por vez. • Cada movimento consiste em tirar discos de um pino e colocar em outro. • Nenhum disco pode ser colocado em cima de um disco menor.
O desafio continua... • Descreva a sequência de movimentos dos discos para a solução dessa configuração de torre de hanói.
Outro Desafio • O problema dos Bits trocados • Os caixas eletrônicos das Ilhas Weblands operam com todos os tipos de notas disponíveis, mantendo um estoque de cédulas para cada valor (B$ 50,00, B$10,00, B$5,00 e B$1,00). Os clientes do banco utilizam os caixas eletrônicos para efetuar retiradas de um certo número inteiro de Bits. • Sua tarefa é escrever um algoritmo que, dado o valor de Bits desejado pelo cliente, determine o número de cada uma das notas necessário para totalizar esse valor, de modo a minimizar a quantidade de cédulas entregues.
Linguagem Natural Linguagem Algorítmica Linguagem Computacional Algoritmo x Programa de Computador • Um programa de computador é um algorimo escrito em uma linguagem de programação • Algoritmo: o executor é o cérebro humano • Programa de computador: o executor é um computador
Algoritmo x Programa de Computador Raciocínio int a, b, c; if (a > 2) a = b + c; else a = b – c; return; Algoritmo Programa
Algoritmos x Programas de Computador Processamento (Computador) Dados de Saída Dados de Entrada • Algoritmos geralmente descrevem algum processamento de dados: • Estes dados precisam ser representados (descritos) nos algoritmos; • Analogia com a ação humana de efetuar calculos matemáticos mentalmente
Exemplo • Faça um Algoritmo para calcular a média aritmética entre duas notas de um aluno e mostrar sua situação, o que pode ser APROVADO ou REPROVADO. Passo 1: Receber os valores das duas notas Passo 2: Calcular a média aritmética Passo 3: Mostrar a média aritmética Passo 4: Se a média aritmética for maior ou igual a 7, entãosituação do aluno é APROVADO; caso contrário, a situação é REPROVADO.
Formas de representação de algoritmos: Pseudocódigo • Um programa de computador é uma forma de representar um algoritmo • Proximidade com a linguagem de máquina do computador • Existem algumas outras formas • Pseudo-linguagem: emprega linguagem intermediária entre linguagem natural e linguagem de programação • Este método procura misturar as facilidades da linguagem natural com a precisão das linguagens de programação • A representação da solução em pseudo código possibilita ao programador a abstração dos detalhes da sintaxe da linguagem escolhida
Exemplo ALGORITMO MÉDIA DECLARE N1, N2, M NUMÉRICO ESCREVA “Digite as duas notas” LEIA N1, N2 M ← (N1 + N2) / 2 ESCREVA “Média = ”, M SE M >= 7 ENTÃO ESCREVA “Aprovado” SENÃO ESCREVA “Reprovado” FIM_ALGORITMO.
AlgoritmosSintaxe e Semântica • Sintaxe: dita as regras de como as sentenças e cada um de seus elementos devem ser construídos corretamente; • Regras Sintáticas • Semântica: se preocupa com o significado de uma sentença construída.
AlgoritmosSintaxe e Semântica • A sintaxe por si só não define completamente uma linguagem. • Exemplo: • “Descoloridas idéias verdes sonham furiosamente” (Chomsky) • Por outro lado: • “Nóis foi, mais já vortemo”
Técnicas de Construção de Algoritmos • Divisão para a conquista: Técnica de divisão do problema em partes menores. • As soluções das partes menores combinam-se para a composição da solução global. • Receita de um bolo (modo de preparo do bolo, preparo do receio, preparo da cobertura) • Reaproveitamento: Reutilização de soluções como parte de uma nova solução. • Em um livro de receitas, os pratos que necessitassem o preparo de um molho branco, poderiam referenciar a página da receita do molho branco. “Para o preparo do molho leia a página 25”
Passos para elaboração de um algoritmo • Compreender o problema. • Definir os dados de entrada • Definir o processamento dos dados de entrada par alcançar a solução • Definir os dados de saída • Construir o algoritmo usando uma forma de representação • Testar o algoritmo realizando simulações
Passos para elaboração de um programaExemplo • Calcular as raízes reais de:
Compreender o problema • Exemplo: Equação de 2o. grau • Possibilidades de raízes: • 02 raízes complexas; • 02 raízes reais idênticas; • 02 raízes reais distintas; • Condição para haver raízes reais: Δ ≥ 0
Definir os dados de Entrada • As entradas fornecidas são os temos a, b, c
Definir o processamento • Calcular Δ. • Se Δ ≥ 0, calcular raízes reais. • Caso contrário, informar que não há raízes reais.
Definir os dados de saída • 02 raízes complexas; • 02 raízes reais idênticas; • 02 raízes reais distintas;
Construir o algoritmo ler(a,b,c) delta = b^2 – 4*a*c se (delta ≥ 0) então r1 = – b – (delta)^(–1/2) r2 = – b + (delta)^(–1/2) escrever(r1,r2) senão escrever(“Não há raiz real”) fim do se fim do algoritmo
Construir o algoritmo #include <stdio.h> #include <stdlib.h> #include <math.h> int main(void) { float a, b, c, delta, r1, r2; scanf("%f %f %f", &a, &b, &c); delta = b*b – 4*a*c; if (delta >=0) { r1 = – b – sqrt(delta); r2 = – b + sqrt(delta); printf("r1 = %f \n r2 = %f", r1, r2); } else printf("Nao ha raiz real\n"); }
Exercícios • Ler dois números inteiros e imprimir a soma. • Entrar com dois números inteiros e imprimir a média aritmética. • Escreva um algoritmo que calcule o diâmetro, a área e a circunferência de um círculo, sabendo que o único dado disponível é o seu raio. • Diâmetro = 2 * Raio • Área = Pi * Raio * Raio • Circunferência= 2 * Pi * Raio • Criar um algoritmo que solicite e imprima os valores da diagonal maior, diagonal menor e calcule a área de um losango. • Fórmula: (diagonal maior * diagonal menor) dividido por 2
Exercícios de Fixação • Elaborar um algoritmo para calcular e apresentar o volume de uma lata de óleo, utilizando a fórmula: • VOLUME = 3.14159 * (R*R) * ALTURA. • Escreva um algoritmo que pergunte a altura (em metros) e a massa (em Kg) de uma pessoa. Em seguida o programa deverá exibir uma mensagem dizendo o índice de massa corporal. • imc = peso / altura * altura
A linguagem C • A linguagem C é uma linguagem de programação genérica inventada na década de 1970 por Dennis Ritchie. • O ANSI (American National Standard Institute) padronizou a versão ANSI-C http://en.wikipedia.org/wiki/C_programming_language
A linguagem C • Desenvolvida por Dennis Ritchie (Laboratórios Bell, 1972) • Criada inicialmente para ser um "ASSEMBLY portátil". • Rodava num computador PDP-11, usando o sistema operacional UNIX. • Posteriormente foi utilizada para reescrever o UNIX. • Somente em 1978 Brian W. Kernighan e Dennis Ritchie estabeleceram a sintaxe e a semântica da linguagem C. • O desenvolvimento de C foi influenciado pela linguagem B (Ken Thompson), que teve suas origens na BCPL (Martins Richards). • Tais linguagens surgiram da evolução da Algol CPL.
A linguagem C e sua família • CPL (Combined Programming Language) • BCPL (Basic CPL) • B (Ken Thompson, Bell Labs, 1970) • C (Dennis Ritchie, Bell Labs, 1972). • C++ (Bjarne Stroustrup, Bell Labs, 1983)
Por que estudar C? • Versatilidade: ele possui tanto características de "alto nível" quanto de "baixo nível". • Poder: possui ampla biblioteca de funções e é utilizado na construção de “software” para os mais diversos projetos. • Portabilidade: é possível adaptar um programa em C de um tipo de computador para outro.
Primeiros passos • Um programa em C consiste de várias funções encadeadas. • Uma função é um bloco de código de programa que pode ser usado diversas vezes em sua execução. • Blocos de código são delimitados por chaves: {} • O uso de funções permite que o programa fique mais legível, mais estruturado.
O C é “Case Sensitive” • Caracteres maiúsculos e minúsculos fazem diferença: • Comandos do C (if ou for, por exemplo) só podem ser escritos em minúsculas, pois senão o compilador interpretará como variáveis. Soma ≠ soma ≠ SOMA ≠ SomA
Estrutura de um programa em C tipo_de_retorno main() { comandos return valor; }
Estrutura de um programa em CExemplo Avisa ao compiladorque as funções deentrada e saída dedados da bibliotecastdio A função main éo corpo principaldo programa. int main() { … } Todo programadeve ter um main. As chaves { e }marcam o início eo fim da função. Avisa o SO que o programa terminou sem problemas. O programa usa a função printf(...) para imprimir a mensagem no console. Texto deve ser entre áspas:“Olá Mundo!”
A função main() • Todo programa deve ter uma única função main. • A função main é o ponto de partida quando o programa é executado. • Arquivos auxiliares não devem conter a função main.