AMEx Academia Militar do Exrcito Prof Msc Bernardo
AMEx – Academia Militar do Exército Prof. Msc. Bernardo João da Costa Kilulo (bernardokilulo@hotmail. com) (bernardokilulo@hotmail. com ALGORITMO E ESTRUTURA DE DADOS I Curso: Formação de Oficiais de Nível Superior Perfil de Comando Especialidade: Telecomunicação, 2º Ano 2º Semestre - 2014 Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020
Sumário q q q Apresentações: ü Tópicos que serão abordados na disciplina; ü Alunos; ü Professor; Sistemática de avaliação; Revisão de conteúdo base para esta disciplina; Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020
Tópicos que serão abordados na disciplina § Introdução à Lógica de Programação – Tipos § Algoritmos § Introdução a Linguagem de Alto Nível - C § Projecto Final § Principais ferramentas Visualg e Div C/C++ Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020
Sobre vocês ? § Apresentação individual ü Semestre letivo individual? ü Trabalha na área? ü Experiência com programação? ü Experiência com C/C++? Em tudo na vida estabelecemos prioridades. Quais são as suas? Lembra-se: nem tudo o que é importantequinta-feira, 3 de é Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com prioritário, e nem tudo o que é necessário dezembro de é 2020 indispensável.
Sobre o Professor • Bernardo João da Costa Kilulo, Doutorando em Ciências de Educação, Mestre em Ciências de Administração de Negócios pela Florida Christian University (FCU-EUA). Pós-Graduação Lato Senso em Gestão de Pessoas (MBA), pela Faculdade Campo Limpo (FACCAMP-Brasil). Pós Graduação Lato Senso em Formação de Docentes para o Ensino Superior, (FACCAMP-Brasil). • Licenciado em Engenharia Informática no Instituto Superior Técnico de Angola (ISTA). Msc. Bernardo Kilulo. E-mail: bernardokilulo@hotmail. com; 923844573 03/12/2020
Sobre o Professor • Docente em vários Institutos Superiores tais como: ISKA, ISTA, Academia Militar de Lobito, ISPOCA e UTANGA. • Leciona as disciplinas de Programação I e II, Bases de Dados I e II, Algoritmia e Estrutura de Dados, Sistema de Informação e Programação Web. • Actua e pesquisa as linguagens: C, C++, Java. Script, VB. Net, C#, SQL, My. SQL, Asp. Net, HTML 5 e CSS. Msc. Bernardo Kilulo. E-mail: bernardokilulo@hotmail. com; 923844573 03/12/2020
Reflexão de 5 Min. • • Alguém te incentivou a inscrever-se neste curso? Onde queres chegar? Porquê? O que esperas, aprender ou saber? Achas que esta disciplina fará diferença em ti? Porquê? • Confias neste Prof. o que te leva crer? ! • Queres aumentar o salário? ! • Congratulo-me… Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020
Mundo de Hoje… • Nuca confunda Conhecimento com Sabedoria • Um ajuda a ganhar a vida e outro ajuda a viver • Não adianta fazer certas coisas é preciso fazer as coisas certas, isto precisa muitos preparos e muita determinação. O que você esta fazer para os desafios actuais? Pense nisso… Autor “Desconhecido” Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020
Considerações úteis uÉ obrigatório a presença nas aulas; u. Todos os estudantes devem apresentar um PC, para aulas práticas; u. Todos as questões devem ser enviado por e-mail: bernardokilulo@hotmail. com Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020
Contactos • Esclarecimento de Dúvidas: • Assuntos de Interesse geral: nas aulas. • Assuntos Pessoais: através do endereço de e-mail nome_turma_Uni@gmail. com moderação). (usar com • Sessões de dúvidas: para esclarecimento de dúvidas pelos docentes. • As questões sobre a matéria leccionada devem ser colocadas preferencialmente nos horários de atendimento presencial ou nas aulas Extra. Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020
Ética e Deontologia • Fraude • Este tema é um aspecto transversal a todo o curso e a sua prática é • • fundamental quer agora na sua vida estudantil quer no seu futuro profissional. O trabalho de equipa é uma constante ao longo do curso e no exercício de uma profissão. Por isso, pretende-se que seja efectuado com um espírito de entre-ajuda. Devem ser respeitados os direitos de autor e de propriedade intelectual. O aluno deve ter presente as regras da honestidade académica. O plágio de trabalhos e projectos não é tolerado. O uso de materiais que visam deturpar e falsear os resultados exames é uma atitude altamente reprovável e é punido. Visa-se com estas punições estabelecer um espírito de justiça e de facto atribuir as melhores notas aos melhores alunos. Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020
Ética e Deontologia • Crime Informático • Os alunos devem ter sempre presente que o uso dos computadores implica determinadas regras e que existem leis que especificam que determinado uso ou prática é um crime. • Vulgarmente designadas como pirataria, essas acções para além de constituirem um crime para quem as pratica e de prejudicarem o seu futuro profissional, também têm consequências, para a Faculdade, que vão desde a perda de tempo à perda de informação, passando, pelo prestígio, que se deve manter intocado. • O uso dos recursos informáticos desta Instituição para fins ilegais ou imorais é proibido e o aluno apanhado nas actividades ilícitas será alvo de um processo nas instancias policiais. Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020
Objectivos a) Proporcionar aos Estudantes as ferramentas teóricas experiências práticas necessárias ao projecto que busquem o ideal de eficiência e eficácia do C; b) Demonstrar ao estudante o uso de L. A. N e as suas funções no campo da computação bem como descrever a origem da Linguagem C; c) Analisar algoritmos complexos usando arrays (Vetores e Matrizes), mostrar o uso dos ciclos de repetições e estruturas de controlo. . Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020
A deculpa é do computador! • Existe 3 tipos de pessoas infelizes neste mundo: üAs que não sabem e não perguntam; sabem e não üAs que sabem e não ensinam, e sabem e não üAs que ensinam e não fazem. e não • O que você esta fazer para aprender coisas novas? Desaprender coisas velhas e reaprender coisas novas, pára um pouco com quinta-feira, 3 de Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: dezembro de bernardoikilulo@gmail. com 2020 suas correrias e pense nisso.
Metodologia • Nesta cadeira serão empregues métodos didáticos como seminários e aulas práticas, levando ao estudante uma profunda análise ao tema em questão, bem como estudo dirigido em grupo para elaboração dos exercícios teóricos e práticos… • Usar-se à Projector, PCs, Livros, Marcador. . . Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020
Avaliação • A disciplina é meramente prática, todavia os estudantes serão submetidos as seguintes avaliações: 9 Avaliação Contínua 9 Prova Escrita/Prática 9 Trabalho Prático/Teórico (defesa) 9 Avaliação Final – projecto (Exame) 9 MD=(1ªp+1ºtp+MAC)/3 9 MF= (MD*0, 6 + Ex*0, 4)/2 quinta-feira, 3 de dezembro de 2020 Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com
Avaliação Contínua • Assiduidade, participação e envolvimento nas aulas teórico-práticos (10%) • Práticas laboratóriais (30%) Ø Trabalho feito em grupo (5 alunos) Ø Discussão individual • Exame (60%) Ø Individual, sem consulta: nota mínima 7 Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020
Lógica Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020
Eu gosto de gente que vibra, que não tem de ser empurrada, que não se tem de dizer que faça as coisas, mas que sabe o que tem que fazer e que faz. Gente que cultiva seus sonhos até que esses sonhos se apoderam de sua própria realidade. Mário Benedetti (2010)
Conteúdo Programático ØIntrodução a Lógica de Programação (10 h) üNoções de Lógica. Diferenças de Lógicas. üConceitos Básicos de algoritmos e tipos de Algoritmos üAnálise de pior caso e análise de caso médio. üIdentificação de algoritmos e tipos de dados üExemplos e Exercícios quinta-feira, 3 de dezembro de 2020 Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com
O que a vida nos ensina. . . q. Aprendi que não importe o quanto você se importe porque algumas pessoas simplesmente não se importam. . . q. O que importa não é o que você tem na vida mas quem você tem na vida. . . vida q. Aprende que não temos que mudar de amigo se entendermos que os amigos mudam. q. Aprende que não se pode comparar com os outros mais o melhor que pode ser. . . q. Aprende que não importa onde você chegou, mais onde esta indo. . . Mas se voce não sabe onde esta indo qualquer lugar serve Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020 • William Chekspir
Comunicação PC Periférico Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020
Introdução à Lógica de Programação q. O que é a lógica? üAndré Luiz (2005), considera a arte do bem pensar, que é a ciência das formas do pensamento. Ela estuda a correção do raciocínio. q. Lógica de programação o que é? üAndré e Henrique (2005) consideram como “uso correto das leis do pensamento, da ordem da razão e do processos de raciocínio e simbolização formais de programação de computadores. ” Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020
Lógica • O que é Lógica? ü Lógica de programação é a técnica de encadear pensamentos para atingir determinado objetivo. • Seqüência Lógica ü Seqüência Lógica são passos executados até atingir um objetivo ou solução de um problema. • Instruções Na linguagem comum, entende-se por instruções “um conjunto de regras ou normas definidas para a realização ou emprego de algo”. ü Em informática, porém, instrução é a informação que indica a um PC uma acção elementar a executar. Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020
O Que é um Algoritmo q. Algoritmo “é um conjunto finito de regras, bem definidas, para a solução de um problema em um tempo finito e com um número finito de passos. ” q. Henriques (2005), É uma sequência de passos que visam a atingir um objetivo bem definido. q. Um algoritmo deve sempre possuir pelo menos um resultado, normalmente chamado de saída, e num tempo finito. q. Um Algoritmo é uma seqüência de instruções ordenadas de forma lógica para a resolução de uma determinada tarefa ou problema. quinta-feira, 3 de dezembro de 2020 Msc. Eng. º Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com
Algoritmo • Algoritmos não se aprendem: – Copiando algoritmos – Estudando algoritmos. • Algoritmos só se aprendem: – Construindo algoritmos – Testando algoritmos. quinta-feira, 3 de dezembro de 2020 Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com
Instruções e Linguagens • Informação armazenada: • Sob a forma de bits • Bits organizados em bytes • Instruções são informação, logo, conjuntos de bytes • Processador executa: • Instruções do seu repertório próprio • Instruções consideradas de baixo nível • Instruções de alto-nível • Mais próximas da forma humana de raciocinar • Processador não é capaz de as executar directamente Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020
Ciclo máquina Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020
Tipos de Algoritmos • Narrativos • Pseudocódigos • Fluxugrama • Diagrama de Chapin Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020
Regras para construção do Algoritmo Para escrever um algoritmo precisamos descrever a seqüência de instruções, de maneira simples e objectiva. Para isso utilizaremos algumas técnicas: • Usar somente um verbo por frase; • Imaginar que você está desenvolvendo um algoritmo para pessoas que não trabalham com informática; • Usar frases curtas e simples; • Ser objetivo; • Procurar usar palavras que não tenham sentido dúbio quinta-feira, 3 de dezembro de 2020 Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com
Interpretação de interpretador Programas Programa que converte as instruções da linguagem de alto nível em instruções máquina e as executa. Engº Patrício Augusto Basic, Java, Portugol 03/12/2020 31
Compilação de programas Compilador (compiler) Programa que converte as instruções da linguagem de alto nível em instruções máquina formando um programa objecto Ligador (linker) Programa que reúne todos os programas objecto e faz um programa executável Programas C, C++, Pascal Engº Patrício Augusto Executados pelo sistema operativo 32 03/12/2020
Linguagem? Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020
Linguagens • Linguagem natural ü O Português é uma linguagem natural • Linguagem (de programação) assembly ü Muito básica: usada quase directamente pelos processadores dos computadores, ex: LOAD @R 1, 0 ü JMP @R 1 Equivalente em linguagem máquina: 01000100111001001100010010010001010 Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020
Linguagens • Linguagem de Programação de Alto-Nível (LPAN) • Sem as ambiguidades e imprecisões de uma linguagem natural, mas não tão penosa de utilizar como a linguagem máquina, ex: if (x == 1) printf(“X é igual a 1”); ( caso x seja 1, escreve no monitor X é igual a 1 ) Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020
Linguagens • Exemplos de L. P. A. N. : • C, C++, Fortran, Java, etc • Factos: • CPU entende instruções oriundas de uma L. P. B. N. • Humanos preferem descrever tarefas para execução pelo computador usando L. P. A. N. Ø Necessidade de um meio de tradução LPAN -> LPBN Ø Tradução realizada através de programas: compiladores Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020
• Programar: A reter. . . resolver problemas de modo a obter soluções - finitas - bem definidas e - eficazes • Tipos de linguagens: naturais, de programação de alto nível, máquina, etc. Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020
Programa Objecto Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020
Funcionamento da Informação Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020
Representac a ode. Um. Algoritm ona. Formade. Pseudoco digo • Algoritmo <nome_do_algoritmo> <declarac a o_de_varia veis> <subalgoritmos> Ini cio • <corpo_do_algoritmo> • Fim. Msc. Engº Bernardo Kilulo; 923 844 573/918 341 134. E-mail: bernardoikilulo@gmail. com quinta-feira, 3 de dezembro de 2020
Gosto de gente que é justa com sua gente e consigo mesma, da gente que agradece o novo dia, as coisas boas que existem em sua vida, que vive cada hora com bom animo dando o melhor de si, agradecido de estar vivo, de poder distribuir sorrisos, de oferecer suas mãos e ajudar generosamente sem esperar nada em troca. Mario Benedetti
Introdução a Programação Linguagem C Prof. Bernardo Kilulo bernardokilulo@Hotmail. com Patrício Augusto Introdução à Programação C 3 de deze mbro de 2020
Breve Histórico • Em 1973 Dennis Ritchie reescreveu o sistema operativo UNIX em uma linguagem de alto nível (Ling. C). • Surgem diversas implementações utilizando C, porém os códigos gerados eram incompatíveis. • ANSI (American National Standard Institute), em 1983 padronizou a ling. C. Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Características da • Portabilidade Linguagem C – Entre máquinas e operativos; sistemas • Rapidez – Consegue obter performances semelhantes às obtidas pelo Assembly, usando instruções de alto nível; • Popular – Internacionalmente conhecida e utilizada; • Simples – Sintaxe simples e o nº de palavras reservadas, tipo de dados básico, operadores é diminuto; 3 de • Modular – Permite o desenvolvimento modular de Patrício Augusto Introdução à Programação C dezembro de 2020 aplicações, possibilidade de funcionar em módulos;
Características da • Livrarias muito poderosas – pcas palavras Linguagem C reservadas, como tal, tem limitações então recorremos as livrarias; • Macros – permitem aumentar a velocidade de execução sem aumentar a complexidade do código; • Evolução – C para C++ • C é uma linguagem compilada – lê todo o código fonte e gera o código objecto (ling. máquina) uma única vez, enquanto que, as Linguagens Interpretadas: lêem o código fonte, traduzem e executam o programa cada vez que for executado. 3 de • Case sensitive – sensível a maiúsculas Patrício Augusto Introdução à Programação C dezembro de 2020
• C comparado a outras linguagens Devemos entender Nível Alto como sendo a capacidade da linguagem em compreender instruções escritas em “dialetos” próximos do inglês (Ada e Pascal, por exemplo) e Nível Baixo para aquelas linguagens que se aproximam do assembly, que é a linguagem própria da máquina, compostas por instruções binárias e outras incompreensíveis para o ser humano não treinado para este propósito. Infelizmente, quanto mais clara uma linguagem for para o humano (simplicidade >) mais obscura o será para a máquina (velocidade <). Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
C comparado a outras linguagens Nível Baixo Nível Alto Nível Médio Clareza Velocidade Assembler C Basic COBOL Patrício Augusto Introdução à Programação C Pascal Ada Modula -2 3 de dezembro de 2020
Aplicações escritas em C • Sistema Operativo: UNIX • Planilhas: 1, 2, 3 e Excel • Banco de Dados: d. Base III, IV e Access ( gerenciador de base de dados). • Aplicações Gráficas: Efeitos Especiais de filmes como Star Trek e Star War. Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Detalhes Importantes • Sempre que o código fonte for alterado ele deve ser novamente compilado. • C é “case sensitive” • Deve-se listar antecipadamente todas a as variáveis utilizadas no programa. Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Bibliotecas • Conjunto de funções para realizar tarefas específicas. • Biblioteca padrão C - ANSI - funções básicas. • As primeiras linhas do programa indicam as bibliotecas utilizadas #include “minha_biblioteca. h” ou #include <minha_biblioteca. h> Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Estrutura de um programa C /* Primeiro Programa em C */ #include <stdio. h> main() { printf(“Meu primeiro programa em Cn”); } Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Estrutura de um programa C /* Primeiro Programa em C */ comentários #include <stdio. h> /*biblioteca de E/S */ main() /*função principal – inicio do programa*/ { /*marca início do bloco de instruções*/ printf(“Meu primeiro programa em Cn”); /*função para escrever na tela*/ } /*marca fim do bloco de instruções*/ Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Variável • Variável: “objecto” que pode assumir diversos valores; • espaço de memória de um certo tipo de dado associado a um nome para referenciar seu conteúdo Main ( ) { int idade; idade = 30; printf (“ A idade é : %d”, idade); } Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Nomes de Variáveis • quantos caracteres quiser (32); • comece com letras ou sublinhado (underscore): Seguidos de letras, números ou sublinhados • C é sensível ao caso: peso <> Peso <> p. Eso • não podemos definir um identificador com o mesmo nome que uma palavra chave (reservada) auto static extern int long if while do . . . Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
auto Palavras reservadas break double else int struct long switch case enum* register char extern return const * float continue for default goto!! do if * ANSI Patrício Augusto short typedef union unsigned * void * Sizeof static volatile* while Introdução à Programação C 3 de dezembro de 2020
Declaração de Variáveis • Instrução para reservar uma quantidade de memória para um certo tipo de dado, indicando o nome pelo qual a área será referenciada >> tipo nome-da-variável; ou >> tipo nome 1, nome 2, . . . , nomen EX: char nome; int idade, num; Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Tipos Básicos de Dados • determinar um conjunto de valores e as possíveis operações realizadas sobre os mesmos ; • informa a quantidade de memória (bytes); tipo char int float double Patrício Augusto bytes 1 2 4 8 Introdução à Programação C escala -128 -32. 768 3. 4 e-38 1. 7 e-308 a a 127 32. 767 3. 4 e+38 1. 7 e+308 3 de dezembro de 2020
Diferentes tipos de Dados Long ou Long int (4 bytes) Unsigned Char (0 a 255) Unsigned int (0 a 65. 535) obs: int tem sempre o tamanho da palavra da máquina Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Programa Exemplo – Tipos de #include <stdio. h> Dados e Variáveis main( ) { int soma=10; float money=2. 21; char letra= ´A´; double pi=2. 01 E 6; printf (“valor da soma = %dn”, soma); printf (“Valor de Money = %fn”, money); printf(“Valor de Letra = %cn”, letra); printf(“Valor de Pi = %en”, pi); } Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Comandos básicos Entrada de Dados Processamento de dados Saída de Dados Instruções de E/S Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Intruções de E/S – Scanf ( ) • Leitura de dados tipados via teclado • Scanf (“string de controle”, lista de argumentos); Exemplo: scanf(“%d”, &idade); Patrício Augusto Introdução à Programação C OBS: Para sequência de caracteres (%s), o caracter & não deverá ser usado. 3 de dezembro de 2020
Comandos de E/S – printf ( ) • Apresentação de dados no monitor • printf(“string de controle”, lista de argumentos); Exemplo: printf (“Digite a sua idade: n”); scanf (“%d”, &idade); printf(“Sua idade é: %d”, idade); Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
String de controle %c ® caracter %d ® inteiro %e ® número ou notação científica %f ® ponto flutuante %o ® octal %x ® hexadecimal %s ® string (cadeia de caracteres) %lf ® double Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Exemplo strings de controle #include <stdio. h> main ( ) { char a ; printf ( “digite um caracter” ); scanf ( “ % c”, &a ); printf (“ n %c = %d em decimal”, a, a); printf (“%o em octal, %x em hexadecimal”, a); } Digitando m: m = 109 em decimal, 155 em octal, 6 d em hexadecimal Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Operador de Endereço & • Quando usamos & precedendo uma variável estamos falando do endereço desta variável na memória Ex: Saída: valor = 2, endereço = 1230 main ( ) Varia conforme memória da máquina { int num; num = 2; printf (“valor = %d, endereço = %lu”, num, &num); } Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Caracteres Especiais n nova linha r enter t tabulação (tab) b retrocesso ” aspas \ barra v tabulação vertical ’ plica ? ponto de interrogação a ou 7 bell %% carácter % Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Formatando as saídas - printf • é possível estabelecer o tamanho mínimo para a impressão de um campo #include <stdio. h> main ( ) { printf (“os alunos são %2 d n”, 350); printf (“os alunos são %4 d n”, 350); printf (“os alunos são %5 d n”, 350); } Saída: os alunos são 350 os alunos são 350 Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Formatando as saídas - printf #include <stdio. h> main ( ) { printf (“ %3. 1 f n”, 3456. 78); printf (“ %10. 3 f n”, 3456. 78); } Saída: 3456. 8 3456. 780 Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Programando – Exercício 1 • Faça um programa para ler e escrever na tela o seu nome e a sua idade. #include <stdio. h> main( ) { int idade; char nome[30]; printf (“Digite o seu nome: n”); scanf(“%s”, nome); printf (“Digite a sua idade: n”); scanf (“%d”, &idade); printf(“A idade do(a) %s é %d”, nome, idade); 3 de } Patrício Augusto Introdução à Programação C dezembro de 2020
Programando – Exercício 2 • Faça um programa para ler e escrever na tela os seguintes dados: • Nome • Endereço • Telefone • Cidade • Cep Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Operadores Aritméticos Operador + * / % -++ Patrício Augusto Ação Adição Multiplicação Divisão Resto da divisão inteira Subtração (unário) Decremento Introdução à Programação C 3 de dezembro de 2020
Operadores Relacionais e Operador Lógicos Ação > Maior que >= Maior ou igual que < Menor que <= Menor ou igual que == Igual a != Diferente de && Condição “E” || Condição “OU” ! Não Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Operadores - Observação • Em C o resultado da comparação será ZERO se resultar em FALSO e DIFERENTE DE ZERO no caso de obtermos VERDADEIRO num teste qualquer. Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Operadores - Exemplo #include <stdio. h> main ( ) Saída: Verd. =1 Falso = 0 { int verdadeiro, falso; verdadeiro = (15 < 20); falso = (15 == 20); printf(“Verd. = %d, Falso= %d”, verdadeiro, falso); } Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Comparações e Testes • Observemos antes de mais nada que ++x é diferente de x++! Se x = 10; y = ++x; /* x=x+1; y=x; */ então x = 11 e y = 11 Patrício Augusto porém Se x = 10; y = x++; /* y=x; x=x+1 */ então x = 11 e y = 10 Introdução à Programação C 3 de dezembro de 2020
Programa Exemplo – Pre/Pos Incremento #include<stdio. h> main() { int cont = 0, loop; loop=++cont; printf(“Loop=%d, Cont=%dn”, loop, cont); loop=cont++; printf(“Loop=%d, Cont=%dn”, loop, cont); 3 de Quais são as saídas deste programa ? Patrício Augusto Introdução à Programação C dezembro de 2020
Comparações e Testes Se x = 1; y = 2; printf(“%d == %d e’ %dn”, x, y, x==y ) Qual seria a saída deste comando? resultaria em 1 == 2 0 Patrício Augusto 3 de dezembro de 2020 (pois expressão é falsa) Introduçãoaà Programação C
Comparações e Testes if (10 > 4 && !(10 < 9) || 3 <= 4) Como seria avaliado esta instrução? resultaria em Verdadeiro, pois dez é maior que quatro E dez não é menor que nove OU três é menor ou igual a quatro Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Operador Sizeof • Este operador retorna o tamanho da variável ou tipo que está em seu operando. • Por exemplo “sizeof(char)” resultaria em 1. Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Conversões de Tipos • Quando forem misturadas variáveis de diferentes tipos, o compilador C converterá os operandos para o tipo de operando maior, de acordo com as regras descritas a seguir: • 1 -Todo char e short int é convertido para int. Todo float é convertido para double. • 2 -Para os demais pares de operandos valem as seguintes regras em seqüência: • 2. 1 - Se um operando for long double, o outro também o será. • 2. 2 - Se um operando for double, o outro também o será. • 2. 3 - Se um operando for long, o outro também o será. 3 de Augusto Introdução à Programação C dezembro • Patrício 2. 4 - Se um operando for unsigned, o outro também o será. de 2020
Conversões de Tipos - NOTA • Nota: Devemos observar que o compilador C é bastante flexível e pouco vigilante, comportando-se de maneira muito diferente de um compilador Clipper ou Pascal, sempre vigilantes com relação aos tipos das variáveis. De fato aqueles compiladores podem gerar executáveis misturando tipos, porém a ocorrência de erros de execução é quase inevitável. Ao contrário destes compiladores, os compiladores C “ajeitam” as coisas para o programa funcionar da “melhor maneira possível”, o que não significa em hipótese alguma que os resultados serão os esperados por programadores “relapsos”. Assim esta boa característica dos compiladores C, pode transformar-se numa autêntica “bomba relógio” para programas não muito bem elaborados. 3 de Patrício Augusto Introdução à Programação C dezembro de 2020
Exercícios • 2) • 3) Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Estruturas de Decisão • Permitir testes para decidir ações alternativas: • • if if - else switch (? : ) Operador Condicional Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Comando if if (condição) instrução; if (condição) { instrução 1; intrução 2; } #include <stdio. h> main ( ) { { if (getchar()) == ‘p’ ) { char ch; printf (“ você digitou p”); ch = getchar ( ); printf (“ pressione outra tecla ”); if (ch == ‘p’) getchar( ); printf (“você pressionou a tecla } p”); 3 de } } Patrício Augusto Introdução à Programação C dezembro #include <stdio. h> de 2020
if aninhados • Se um comando if está dentro do outro if, dizemos que o if interno está aninhado. #include <stdio. h> main ( ) { { char ch; printf (“ digite uma letra entre A e Z”); ch = getchar ( ); if (ch >= ‘A’) if ((ch >= ‘A’) && (ch < = ‘Z’)) if (ch < = ‘Z’) printf (“ você acertou”); } 3 de } Patrício Augusto Introdução à Programação C dezembro de 2020
Comando if-else • O comando if só executa a instrução caso a condição de teste seja verdadeira, nada fazendo se a expressão for falsa. • O comando else executará uma instrução ou um conjunto de instruções se a expressão for falsa. Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Comando if-else if (condição) instrução; else instrução; Patrício Augusto #include <stdio. h> main ( ) { if (getchar ( ) == ‘p’) printf (“ você digitou p”); else printf (“ você não digitou p”); } Introdução à Programação C 3 de dezembro de 2020
Exemplo: Evitar-se divisões por Zero, usando recursos do comando include <stdio. h> if-else. main() { int a, b; printf(“Digite 2 números: “); scanf(“%d %d”, &a, &b); if (b) printf(“%f”, a/b); else printf(“Nao posso dividir por zeron”); 3 de } Patrício Augusto Introdução à Programação C dezembro de 2020
Comando if-else aninhados #include <stdio. h> main ( ) if (condição 1) { instrução int número; scanf (“ % d”, &número); else if (condição 2) if (número < 0) printf (“número menor que zero”); instrução else if (número < 10) else if (condição 3). . . printf (“ número ³ 0 e < 10”); else if (número < 100) printf (“número ³ 10 e < 100); else printf (“número ³ 100”); 3 de } Patrício Augusto Introdução à Programação C dezembro de 2020
Como o computador decide de qual if o else pertence? • else é sempre associado ao if mais interno • quando z = b será executado? Ex 2: EX 1: if (n > 0) if (a > b){ z = a; calculafatorial(z); } else z = b; Augusto Patrício if (n > 0) { if (a > b) z = a; } else z = b; Ex 1: Quando n > 0 3 edea < b Introdução à Programação C Ex 2: Quando n <dezembro 0 de 2020
Exemplo 1: Programa Adulto, Jovem ou Velho. #include <stdio. h> main() { int i; printf(“Digite sua idade: “); scanf(“%d”, &i); if (i > 70) printf(“Esta Velho!”); else if (i > 21) printf(“Adulto”); else printf(“Jovem”); } Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Exemplo 2: Maior entre três números main() { { int a, b, c; int a, b, c, d; printf(“Digite o 1º Número: “); cls(); scanf(“%d”, &a); printf(“Digite o 1º Número: “); printf(“n. Digite o 2º Número: “); scanf(“%d”, &a); scanf(“%d”, &b); printf(“n. Digite o 2º Número: “); printf(“n. Digite o 3º Número: “); scanf(“%d”, &b); scanf(“%d”, &c); printf(“n. Digite o 3º Número: “); if (a > b) if (a > c) scanf(“%d”, &c); printf(“n. O Maior é %d”, a); if (a > b) else d = a; printf(“n. O Maior é %d”, c); else d = b; if (b > c) if (c > d) printf(“n. O Maior é %d”, b); printf(“n. O Maior é %d”, c); else else printf(“n. O Maior é %d”, c); 3 de printf(“n. O Maior é %d”, d); Patrício Augusto Introdução à Programação C dezembro } } de 2020
Exemplo 3: Dados 2 números apresenteos ordenados. main() { int a, b, t; printf(“Digite o 1º Número: “); scanf(“%d”, &a); printf(“n. Digite o 2º Número: “); scanf(“%d”, &b); if (a < b) { t = a; a = b; b = t; } printf(“n. Ordenados: %d e %d “, b, a); 3 de } Patrício Augusto Introdução à Programação C dezembro de 2020
Comando ? : • Forma compacta de expressar uma instrução if – else • (condição) ? expressão 1 : expressão 2 • Max = (num 1 > num 2) ? num 1 : num 2 • Note: if (num 1 > num 2) max = num 1; else max = num 2; • Exemplo: ABS = (num < 0) ? - num : num; Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Exercícios • 4) • 5) • 6) Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Comando Switch • Forma de se substituir o comando if – else ao se executar vários testes • Diversas vezes precisamos determinar se um valor encontra-se numa lista de valores. Apesar de podermos usar uma seqüência de ifs, este recurso além de não ser elegante, por vezes confunde o entendimento do programa. Vejamos uma 3 de Patrício Augusto Introdução à Programação C dezembro opção melhor: o comando switch. de 2020
Comando Switch switch <variável> { case <constante 1> : <comandos>; [break; ] case <constante 2> : <comandos>; [break; ] case <constante 3> : <comandos>; [break; ] [default : <comandos>; ] } Patrício Augusto OBS: • “ variável” deve ser uma variável do tipo inteiro ou caracter; • “break” serve para terminar a seqüência de comandos em execução, por serem opcionais, se forem suprimidos permitem que o “case” a seguir seja executado, sem haver qualquer quebra na seqüência do processamento. Introdução à Programação C 3 de dezembro de 2020
Comando Switch - Ex: uma calculadora #include <stdio. h> main ( ) { char op; float num 1, num 2; printf (“ digite um n. o, um operador e um n. o”); scanf (“ %f %c %f”, &num 1, &op, &num 2); switch (op) { case ‘+’: printf (“ = %f”, num 1 + num 2); break: case ‘-’: printf (“ = %f”, num 1 - num 2); break; default: printf (“ operador inválido”); } } Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Exercício • Seguindo a idéia do exercício anterior incremente a calculadora com mais funções matemáticas. • Sugestão: use funções da biblioteca matemática math. h como por exemplo: • sin(x) cos(x) log(x) sqrt(x) pow(x 1, x 2) • Para compilar a biblioteca matemática : • cc p 1. c -o p 1 -lm Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Estruturas de Repetição #include <stdio. h> main ( ) { printf (“ 1”); printf (“ 2”); Como imprimir os 1000 1 os números a partir de 1? : : : printf (“ 10”); } saída: 1 2 3 4. . . 10 Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Estruturas de Repetição • for, while, do-while • repetir uma seqüência de comandos #include<stdio. h> main ( ) { int num; for (num = 1; num <= 1000; num++) printf (“ % d”, num); } Saída: 1 2 3. . . 1000 Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Comando for (<início>; <condição>; <incremento>) <comando>; Na forma mais simples: • Inicialização: • expressão de atribuição • sempre executada uma única vez • Teste: • condição que controla a execução do laço • é sempre avaliada a cada execução • verdadeiro ® continua a execução 3 de Augusto para a execução Introdução à Programação C dezembro • Patrício falso ® de 2020
Comando for • Incremento: • define como a variável de controle será alterada • é sempre executada após a execução do corpo do laço Exemplo: imprimindo números pares #include<stdio. h> Saída 2 4 6 8 main ( ) { int número; for ( número = 2; número < 10; número += 2 ) printf (“ %d”, número); 3 de Patrício Augusto Introdução à Programação C dezembro } de 2020
Comando for • Flexibilidade: qualquer expressão de um laço “for” pode conter várias instruções separadas por vírgula. for (x=0, y=0; x+y<100; ++x, y=y+x) printf(“%d”, x+y); Esta instrução inicializaria x e y com zero, incrementando x de 1 em 1 e y receberia seu valor acrescido do de x. O resultado a cada iteração seria impresso desta forma: 0 (x=0 e y=0) 2 (x=1 e y=1) 5 (x=2 e y=3) 9 14 e assim 3 de sucessivamente. Patrício Augusto Introdução à Programação C dezembro de 2020
Comando for - Exemplo 1: Contagem simples com condição no teste “for”. main() { int i, j, resposta; char feito = ‘ ‘; for (i=1; i<100 && feito != ‘N’; i++) { for (j=1; j<10; j++) { printf(“Quanto e’ %d + %d? “, i, j); scanf(“%d”, &resposta); getchar(); /* limpar o buffer do teclado */ if (resposta != i+j) printf(“Errou!n); else printf(“Acertou!n”); } printf(“Mais? (S/N) “); scanf(“%c”, &feito); getchar(); /* limpar o buffer do teclado */ } Patrício Augusto Introdução à Programação C } 3 de dezembro de 2020
Comando for – loop infinito for(; ; ) printf(“Este loop rodará eternamente!n”); • A ausência de condições de inicialização, continuidade e terminação, causarão um processo contínuo e teoricamente infinito (veremos posteriormente a intrução break, que tem a capacidade de encerrar um processo assemelhado 3 de ao exemplificado). Patrício Augusto Introdução à Programação C dezembro de 2020
Comando for – Loop Vazio for(i=0; i<10; i++); • A presença do ponto e vírgula finalizando o comando, força a execução do loop sem que seja executado qualquer outro comando. Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Comando for – Loop Finito • Ao contrário de outras linguagens que não permitem o término do loop a não ser quando a condição de finalização for satisfeita, a linguagem C permite que um loop seja interrompido antes de seu término normal (desestruturação) sem que exista qualquer tipo de inconveniente. O comando “break” causa essa interrupção. for(; ; ) { scanf(“%c”, &c); if (c == ‘A’) break; /*interrompe o que deveria ser um laço eterno*/ } printf(“Fim do Loop!”); Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Comando While while <condição> <comando>; Exemplo: Contagem #include <stdio. h> main() { int i=0; while (i < 10) { printf(“%d”, i); i++; } Patrício Augusto Introdução à Programação C } • O loop se repete, enquanto a condição for verdadeira 3 de dezembro de 2020
Comando do - while • Ao contrário das estruturas “for” e “while” que testam a condição no começo do loop, “do / while” sempre a testa no final, garantido a execução ao menos uma vez da estrutura. Exemplo: Término determinado pelo usuário. #include <stdio. h> do { main() <comandos>; { } while <condição>; int num; do { scanf(“%d”, &num); 3 de } while (num < 100); Patrício Augusto Introdução à Programação C dezembro de 2020 }
/ * testa a capacidade de adivinhar uma letra * / #include <stdio. h> main ( ) { char ch; int tentativas; do { printf (“digite uma letra”); scanf(“%c”, ch); getchar ( ); tentativas = 1; while ( ch!= ‘t’) { printf (“%c é incorreto n”, ch); tentativas++; printf (“tente novamente n”); } printf (“%c é correto”, ch); printf (“acertou em %d vezes”, tentativas); printf (“continua? (s / n): ”); scanf(“%c”, ch); getchar( ); } while (ch == ‘s’); } Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Exercícios Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Funções / Procedimentos • Dividir uma tarefa complexa em tarefas menores, permitindo esconder detalhes de implementação • Evita-se a repetição de um mesmo código Tipo Nome (lista de parâmetros) { corpo } Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Procedimentos ______usando funcoes______ • “Funções” que não #include <stdio. h> void desenha(); void desenha( ) { int i; for (i = 0; i < = 10; i++) printf (“-”); } main ( ) { desenha ( ); printf (“ usando funções”); 3 de desenha ( ); Introdução à Programação C dezembro de 2020 } retornam valores • Tipo: void Patrício Augusto
Funções Retornam valores #include <stdio. h> int fatorial (int); int fatorial (int n) { int i, resultado = 1; for ( i = 1; i <= n; i ++) resultado *= i; return resultado; } main ( ) { printf (“ o fatorial de 4 = %d”, fatorial(4) ); printf (“ o fatorial de 3 = %d”, fatorial(3) ); 3 de } Patrício Augusto Introdução à Programação C dezembro de 2020
Variáveis locais • Variáveis declaradas dentro de uma função são denominadas locais e somente podem ser usadas dentro do próprio bloco • São criadas apenas na entrada do bloco e destruídas na saída (automáticas) Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Variáveis Locais void desenha ( ) { int i, j; . . . } main ( ) { int a; desenha(); a = i; ¬ erro. . . } Patrício Augusto void desenha ( ) { int i, j; . . . } void calcula ( ) { int i, j; . . . } Introdução à Programação C i, j em desenha são variáveis diferentes de i, j em calcula. 3 de dezembro de 2020
Variáveis Globais • Variável que é declarada externamente podendo ser acessada por qualquer função void desenha ( ) #include <stdio. h> { main ( ) int j; { i = 0; int i; . . . } . . void calcula ( ) desenha ( ); { calcula ( ); int m; } i = 5; . . . Patrício Augusto Introdução à Programação C } 3 de dezembro de 2020
Comando Return • Causa a atribuição da expressão a função forçando o retorno imediato ao ponto de chamada da função. #include <stdio. h> char minúsculo ( ) main ( ) { { char ch; char letra; scanf(“%c”, ch); printf (“ digite uma letra em if ( (ch >= ‘A’) && (ch <= ‘Z’)) minúsculo”); return (ch + ‘a’ - ‘A’); else letra = minúsculo ( ); return (ch); if (letra == ‘a’) 3 de } printf (“ok”); Patrício Augusto Introdução à Programação C dezembro de 2020 }
• Note pelo exemplo anterior que a função minúsculo lê um valor internamente convertendo-o para minúsculo. Como usar esta função se já temos uma letra e desejamos convertê-la para minúsculo? Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Passando dados para função • Passagem de parâmetro por valor - uma cópia do argumento é passada para a função • O parâmetro se comporta como uma variável local Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Passando dados para função main ( ) { printf (“ %c”, minúsculo (‘A’) ); parâmetro real } char minúsculo (char ch) parâmetro formal { if (( ch >= ‘A’)&& (ch <= ‘Z’)) return (ch + ‘a’-, ‘A’); else return (ch); Patrício Augusto Introdução à Programação C } 3 de dezembro de 2020
Passando dados para função - Exemplo #include <stdio. h> main ( ) { int num, b; printf (“ entre com um número > o”); scanf (“ %d”, &num ); b = abs (num); . . . printf (“ Valor absoluto de num = %d”, abs(num) ); . . . b = abs(-3); } int abs (int x) { return ( ( x < 0 ) ? -x : x ); } Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Passando vários argumentos Ex 2: Ex 1: float potência (float base, int expoente) float área_retângulo (float largura, { float altura) int i; float resultado = 1; { if (expoente == 0) return (largura * altura); return 1; } for (i = 1; i <= expoente; i++) resultado *= base return resultado; } Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Usando várias funções: calcular a seguinte seqüência S(x, n) = x/1! + x 2/2! + x 3/3! + . . . + xn/ n! #include <stdio. h> float serie (float , int ); float potencia (float , int) int fat (int); main( ) { float x; int termos; printf(“entre com o numero de termos: “); scanf(“%d”, &termos); printf(“entre com o valor de X: “); scanf(“%f”, &x); 3 de Patrício Augusto Introdução à Programação C dezembro printf(“O valor de série = %f “, serie(x, termos)); de 2020 }
float serie (float x, int n) { int i; float resultado = 0; for ( i = 1; i <= n; i++) resultado += potência( x, i ) / fat( i ); return resultado; } float potencia (float base, int expoente) { int i; float resultado = 1; if (expoente == 0) return 1; for (i = 1; i <= expoente; i++) resultado *= base; Patrício Augusto Introdução à Programação C return resultado; } 3 de dezembro de 2020
int fat (int n) { int i, resultado = 1; for ( i = 1; i <= n; i ++) resultado *= i; return resultado; } Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Vetores • tipo de dado usado para representar uma coleção de variáveis de um mesmo tipo • estrutura de dados homogênea unidimensional Ex: Ler a nota de 3 alunos e calcular a média int nota 0, nota 1, nota 2; printf(“entre com a 1 a. nota”); scanf(“%d”, ¬a 0); 3 de : : : Patrício Augusto Introdução à Programação C dezembro printf(“média = %f”, (nota 0 + nota 1 + nota 2)de/ 2020 3));
Ex: Calcular a média de 300 alunos #include<stdio. h> #define N_ALUNOS 40 main( ) { int i; float notas [ N_ALUNOS ], media = 0; for ( i = 0; i < N_ALUNOS; i++ ) { printf (“entre com a nota %d”, i+1); scanf (“%f”, ¬as[ i ]); media += notas [ i ]; } printf (“ Média = %f n”, media / N_ALUNOS); for ( i = 0; i < N_ALUNOS; i++ ) { printf (“n Nota do aluno %d = ”, i+1); printf (“%f n”, notas[ i ]); } } Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Vetores – Observações importantes • em ‘C’ não existe declaração de vetor dinâmico • o tamanho de um vetor tem que ser determinado em tempo de compilação Ex: int alunos; int notas [ alunos ]; : : : printf (“entre com o número de alunos”); scanf (“%d”, &alunos); Patrício Augusto Introdução à Programação C N O É ACEITO !!! 3 de dezembro de 2020
Vetores – Observações importantes Solução: declarar um vetor que suporte um número máximo de elementos Ex: int alunos; int notas [ 70 ]; : : : printf (“entre com o número de alunos”); scanf (“%d”, &alunos); Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Vetores – Observações importantes • C não realiza verificação de limites em vetores • nada impede o acesso além do fim do vetor • faça sempre que necessário a verificação dos limites Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
#include <stdio. h> #define TAMANHO 100 Vetores – Obs importantes main( ) { int quantidade, media = 0; float notas [ TAMANHO ]; // quantidade deve ser £ TAMANHO printf ( “quantas notas devo ler ? ”); scanf(“%d”, &quantidade); for ( i = 0; i < quantidade; i++) { printf ( “entre com a nota %d”, i+1); scanf(“%d”, ¬as [ i ]); } : : : for ( i = 0; i < quantidade; i++) media += notas [ i ]; Patrício Augusto } : : : Introdução à Programação C 3 de dezembro de 2020
Passando um vetor para uma função #include <stdio. h> int maximum( int [] ); /* ANSI function prototype */ main( ) { int values[5], i, max; printf("Entre com 5 numeros: n"); for( i = 0; i < 5; ++i ) scanf("%d", &values[i] ); max = maximum( values ); printf("n. Valor Maximo: %dn", max ); } Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
int maximum( int values[5] ) Saída: { Entre com 5 numeros: int max_value, i; 7 23 45 9 121 max_value = values[0]; Valor Maximo: 121 for( i = 0; i < 5; ++i ) if( values[i] > max_value ) max_value = values[i]; return max_value; 3 de Patrício Augusto Introdução à Programação C dezembro } de 2020
Matrizes • em ‘C’ podemos definir um vetor em que cada posição temos um outro vetor (matriz). • estrutura de dados homogênea multidimensional • Note: int matéria [ 4 ] [ 40 ]; temos 4 matérias, cada uma com 40 alunos Patrício Augusto Introdução à Programação C 3 de dezembro de 2020
Matrizes - Leitura int i, j, matéria [ 4 ] [ 40 ]; for ( i = 0 ; i < 4; i++ ) { printf (“entre com as notas da matéria %d”, i+1); for ( j = 0; j < 40; j++) { printf (“entre com a nota do aluno %d”, j+1); scanf (“%d”, &materia [ i ] [ j ]); } } Patrício Augusto Introdução à Programação C 3 de dezembro de 2020